日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

操作系統(tǒng)課設(shè)代碼包實(shí)戰(zhàn)指南:從進(jìn)程調(diào)度到文件系統(tǒng)的完整拆解

操作系統(tǒng)課設(shè)代碼包實(shí)戰(zhàn)指南:從進(jìn)程調(diào)度到文件系統(tǒng)的完整拆解 簡(jiǎn)介這份資源是華中科技大學(xué)操作系統(tǒng)實(shí)驗(yàn)與課設(shè)的完整代碼合集面向計(jì)算機(jī)專業(yè)學(xué)生及希望深入理解操作系統(tǒng)原理的自學(xué)者覆蓋進(jìn)程管理、內(nèi)存管理、文件系統(tǒng)、設(shè)備管理、死鎖避免、線程調(diào)度、網(wǎng)絡(luò)編程與系統(tǒng)調(diào)用等核心模塊適合課程實(shí)驗(yàn)、課設(shè)參考與考研復(fù)習(xí)等場(chǎng)景。壓縮包共249個(gè)文件約41.66MB以class與jar編譯產(chǎn)物、xml配置、c與java源碼為主另含makefile構(gòu)建腳本、nc與ihex等硬件相關(guān)文件、out與exe可運(yùn)行結(jié)果及少量圖片和文檔便于對(duì)照源碼與運(yùn)行效果。目前已有169人學(xué)習(xí)下載。通過(guò)調(diào)度器、文件系統(tǒng)、設(shè)備驅(qū)動(dòng)等具體實(shí)驗(yàn)任務(wù)讀者可獲取可編譯運(yùn)行的參考實(shí)現(xiàn)、構(gòu)建腳本與排錯(cuò)思路并借助清晰的目錄結(jié)構(gòu)快速定位各知識(shí)點(diǎn)代碼為系統(tǒng)方向開(kāi)發(fā)打下實(shí)踐基礎(chǔ)。1. 操作系統(tǒng)課設(shè)代碼包到底能給你省下多少時(shí)間如果你正在準(zhǔn)備操作系統(tǒng)課程設(shè)計(jì)大概率經(jīng)歷過(guò)這樣的場(chǎng)景對(duì)著課本上進(jìn)程調(diào)度、內(nèi)存管理、文件系統(tǒng)的理論描述腦子里能理解個(gè)大概但一旦要?jiǎng)邮謱懘a就不知道從哪下手。調(diào)度算法到底怎么組織數(shù)據(jù)結(jié)構(gòu)頁(yè)面置換的命中率怎么統(tǒng)計(jì)文件系統(tǒng)的目錄樹(shù)用什么結(jié)構(gòu)存這些問(wèn)題課本不會(huì)給你答案但一份完整的課設(shè)代碼可以。華中科技大學(xué)操作系統(tǒng)實(shí)驗(yàn)與課設(shè)的代碼包在課程設(shè)計(jì)圈子里流傳很廣原因很直接它的實(shí)驗(yàn)覆蓋了操作系統(tǒng)課程的核心模塊從進(jìn)程管理、線程調(diào)度、內(nèi)存分配、頁(yè)面置換到文件系統(tǒng)實(shí)現(xiàn)每個(gè)實(shí)驗(yàn)都有可運(yùn)行的代碼和對(duì)應(yīng)的實(shí)驗(yàn)報(bào)告。對(duì)于正在做課設(shè)的人來(lái)說(shuō)這份代碼的價(jià)值不在于照抄而在于它提供了一個(gè)可運(yùn)行的參照系——你能看到每個(gè)模塊的完整實(shí)現(xiàn)路徑知道調(diào)度隊(duì)列怎么建、信號(hào)量怎么封裝、磁盤塊怎么映射。這篇文章會(huì)從代碼結(jié)構(gòu)拆解開(kāi)始逐步講清楚每個(gè)實(shí)驗(yàn)?zāi)K的實(shí)現(xiàn)思路、關(guān)鍵參數(shù)怎么調(diào)、編譯運(yùn)行時(shí)會(huì)遇到哪些坑以及怎么在它的基礎(chǔ)上改出自己的版本。2. 先看清代碼包的目錄結(jié)構(gòu)和實(shí)驗(yàn)?zāi)K劃分2.1 拿到壓縮包后的第一件事目錄樹(shù)和構(gòu)建入口很多人拿到代碼包之后直接找 main 函數(shù)開(kāi)始讀這是效率最低的做法。操作系統(tǒng)課設(shè)的代碼通常按實(shí)驗(yàn)編號(hào)分目錄每個(gè)目錄是一個(gè)獨(dú)立的小型系統(tǒng)或模擬器。正確的第一步是先把目錄樹(shù)打印出來(lái)看清楚模塊邊界和構(gòu)建方式。# 解壓后先看頂層結(jié)構(gòu)不要急著進(jìn)子目錄 unzip operating-system-codes.zip -d os-course cd os-course # 打印兩層目錄樹(shù)快速定位每個(gè)實(shí)驗(yàn)的入口 find . -maxdepth 2 -type d | sort # 找所有 Makefile 和 CMakeLists確認(rèn)構(gòu)建方式 find . -name Makefile -o -name CMakeLists.txt | sort這段命令的邏輯很直接find -maxdepth 2限制遞歸深度避免目錄太多刷屏第二步找構(gòu)建文件是為了確認(rèn)每個(gè)實(shí)驗(yàn)是獨(dú)立編譯還是統(tǒng)一構(gòu)建。常見(jiàn)的組織方式是每個(gè)實(shí)驗(yàn)一個(gè)子目錄各自帶 Makefile互不依賴。如果發(fā)現(xiàn)只有一個(gè)頂層 Makefile說(shuō)明所有實(shí)驗(yàn)共用一套構(gòu)建規(guī)則這時(shí)候要重點(diǎn)看 Makefile 里的SRCS和TARGET變量確認(rèn)每個(gè)實(shí)驗(yàn)的源文件列表。參數(shù)方面-maxdepth 2可以根據(jù)實(shí)際情況調(diào)整。如果目錄層級(jí)特別深改成 3 層如果頂層就很清晰保持 2 層足夠。關(guān)鍵是要在動(dòng)手改代碼之前先建立一張模塊地圖。2.2 各實(shí)驗(yàn)?zāi)K的功能邊界和依賴關(guān)系典型的操作系統(tǒng)課設(shè)代碼包會(huì)包含以下幾類實(shí)驗(yàn)每類的功能邊界和依賴關(guān)系不同實(shí)驗(yàn)?zāi)K核心功能依賴典型源文件數(shù)進(jìn)程調(diào)度模擬 PCB 管理、調(diào)度算法無(wú)3-5內(nèi)存管理分區(qū)分配、頁(yè)面置換無(wú)4-6文件系統(tǒng)目錄樹(shù)、文件讀寫、磁盤塊管理內(nèi)存管理6-10同步互斥信號(hào)量、生產(chǎn)者消費(fèi)者進(jìn)程調(diào)度2-4設(shè)備管理磁盤調(diào)度、緩沖池?zé)o3-5這張表的作用是幫你判斷閱讀順序。進(jìn)程調(diào)度和內(nèi)存管理通常是最獨(dú)立的模塊適合先讀文件系統(tǒng)往往依賴內(nèi)存管理的抽象如果先讀文件系統(tǒng)會(huì)卡在底層數(shù)據(jù)結(jié)構(gòu)上。同步互斥實(shí)驗(yàn)如果用了自己實(shí)現(xiàn)的線程庫(kù)需要先理解進(jìn)程調(diào)度的 PCB 結(jié)構(gòu)。我一般會(huì)建議按「進(jìn)程調(diào)度 → 同步互斥 → 內(nèi)存管理 → 文件系統(tǒng) → 設(shè)備管理」的順序讀。前兩個(gè)模塊建立對(duì) PCB、狀態(tài)轉(zhuǎn)換、等待隊(duì)列的直覺(jué)后三個(gè)模塊建立對(duì)地址空間、頁(yè)表、磁盤塊映射的直覺(jué)。每個(gè)模塊讀完之后先編譯運(yùn)行一遍看輸出是否符合預(yù)期再進(jìn)入下一個(gè)。2.3 編譯環(huán)境和工具鏈的版本確認(rèn)操作系統(tǒng)課設(shè)代碼最常見(jiàn)的翻車點(diǎn)不是邏輯錯(cuò)誤而是編譯環(huán)境不匹配。很多代碼包是在特定版本的 GCC 和 Linux 內(nèi)核下寫的換一個(gè)環(huán)境就可能報(bào)錯(cuò)。# 確認(rèn)編譯器版本很多老代碼在 GCC 10 上會(huì)有警告變錯(cuò)誤的問(wèn)題 gcc --version # 確認(rèn)系統(tǒng)架構(gòu)32 位和 64 位代碼在指針長(zhǎng)度上不兼容 uname -m # 嘗試編譯第一個(gè)實(shí)驗(yàn)先不加任何修改 cd experiment-01-scheduler make 21 | tee build.log編譯日志一定要用tee保存下來(lái)因?yàn)椴僮飨到y(tǒng)課設(shè)的代碼經(jīng)常有大量警告刷屏之后你找不到第一個(gè)錯(cuò)誤在哪。如果編譯失敗先看build.log里第一個(gè)error而不是最后一個(gè)后面的錯(cuò)誤往往是第一個(gè)錯(cuò)誤引發(fā)的連鎖反應(yīng)。常見(jiàn)做法是在 Makefile 里加-w關(guān)掉警告但我建議不要這么做。操作系統(tǒng)代碼里的警告經(jīng)常指向真實(shí)問(wèn)題比如指針截?cái)?、未初始化變量、隱式類型轉(zhuǎn)換。先讓編譯通過(guò)再逐個(gè)看警告比直接關(guān)掉警告要安全。3. 進(jìn)程調(diào)度與同步互斥實(shí)驗(yàn)的代碼拆解3.1 PCB 數(shù)據(jù)結(jié)構(gòu)和調(diào)度隊(duì)列的組織方式進(jìn)程調(diào)度實(shí)驗(yàn)的核心是 PCB進(jìn)程控制塊的設(shè)計(jì)。代碼包里通常會(huì)用結(jié)構(gòu)體或類來(lái)表示 PCB關(guān)鍵字段包括進(jìn)程 ID、狀態(tài)、優(yōu)先級(jí)、時(shí)間片、等待時(shí)間、周轉(zhuǎn)時(shí)間等。// 典型的 PCB 結(jié)構(gòu)定義字段命名可能不同但核心信息一致 typedef struct PCB { int pid; // 進(jìn)程標(biāo)識(shí)符 int state; // 狀態(tài)就緒/運(yùn)行/阻塞/完成 int priority; // 優(yōu)先級(jí)數(shù)值越小優(yōu)先級(jí)越高或反之 int burst_time; // 需要占用的 CPU 時(shí)間 int remaining_time; // 剩余執(zhí)行時(shí)間用于時(shí)間片輪轉(zhuǎn) int wait_time; // 累計(jì)等待時(shí)間 int turnaround_time; // 周轉(zhuǎn)時(shí)間 完成時(shí)間 - 到達(dá)時(shí)間 struct PCB *next; // 隊(duì)列指針 } PCB; // 就緒隊(duì)列通常用鏈表或數(shù)組實(shí)現(xiàn) typedef struct { PCB *head; PCB *tail; int count; } ReadyQueue;這段代碼的關(guān)鍵在于state字段和next指針的配合。調(diào)度算法的本質(zhì)就是操作這兩個(gè)字段把 PCB 從就緒隊(duì)列摘下、改狀態(tài)為運(yùn)行、時(shí)間片用完再掛回就緒隊(duì)列。如果你要改調(diào)度算法改的就是「從就緒隊(duì)列選哪個(gè) PCB」和「運(yùn)行多久后觸發(fā)重新調(diào)度」這兩個(gè)邏輯。參數(shù)方面priority的語(yǔ)義要特別注意。有的代碼里數(shù)值越小優(yōu)先級(jí)越高有的反過(guò)來(lái)。讀代碼時(shí)先找到調(diào)度函數(shù)里的比較邏輯確認(rèn)方向否則你改優(yōu)先級(jí)的時(shí)候會(huì)得到完全相反的結(jié)果。burst_time和remaining_time的關(guān)系也要看清楚如果調(diào)度算法不支持搶占remaining_time可能不會(huì)被更新如果支持時(shí)間片輪轉(zhuǎn)每次調(diào)度后必須扣減。3.2 時(shí)間片輪轉(zhuǎn)和優(yōu)先級(jí)調(diào)度的實(shí)現(xiàn)差異時(shí)間片輪轉(zhuǎn)和優(yōu)先級(jí)調(diào)度在代碼結(jié)構(gòu)上的差異主要體現(xiàn)在兩個(gè)地方就緒隊(duì)列的排序方式和調(diào)度觸發(fā)條件。// 時(shí)間片輪轉(zhuǎn)就緒隊(duì)列按到達(dá)順序排列每次取隊(duì)頭 PCB* rr_schedule(ReadyQueue *q, int time_slice) { if (q-count 0) return NULL; PCB *p q-head; q-head p-next; if (q-head NULL) q-tail NULL; q-count--; // 執(zhí)行一個(gè)時(shí)間片 if (p-remaining_time time_slice) { p-remaining_time - time_slice; p-state STATE_READY; enqueue(q, p); // 沒(méi)執(zhí)行完放回隊(duì)尾 } else { p-state STATE_DONE; p-turnaround_time current_time - p-arrival_time; } return p; } // 優(yōu)先級(jí)調(diào)度就緒隊(duì)列按優(yōu)先級(jí)排序每次取優(yōu)先級(jí)最高的 PCB* priority_schedule(ReadyQueue *q) { if (q-count 0) return NULL; // 遍歷找優(yōu)先級(jí)最高的 PCB PCB *prev NULL, *best q-head, *best_prev NULL; PCB *cur q-head; while (cur ! NULL) { if (cur-priority best-priority) { best cur; best_prev prev; } prev cur; cur cur-next; } // 從隊(duì)列中摘除 best if (best_prev NULL) q-head best-next; else best_prev-next best-next; if (best q-tail) q-tail best_prev; q-count--; return best; }兩段代碼的差異很清晰時(shí)間片輪轉(zhuǎn)的隊(duì)列是 FIFO調(diào)度邏輯在出隊(duì)之后優(yōu)先級(jí)調(diào)度的隊(duì)列需要遍歷找最優(yōu)調(diào)度邏輯在出隊(duì)之前。如果你要把時(shí)間片輪轉(zhuǎn)改成優(yōu)先級(jí)調(diào)度不能只改調(diào)度函數(shù)還要改入隊(duì)邏輯——優(yōu)先級(jí)調(diào)度需要在入隊(duì)時(shí)就按優(yōu)先級(jí)插入否則每次調(diào)度都要遍歷整個(gè)隊(duì)列效率很低。參數(shù)方面time_slice的取值直接影響調(diào)度效果。取值太小會(huì)導(dǎo)致上下文切換開(kāi)銷占比過(guò)高取值太大會(huì)退化成先來(lái)先服務(wù)。常見(jiàn)做法是取所有進(jìn)程平均 burst_time 的 1/2 到 1/3。如果你在實(shí)驗(yàn)報(bào)告里要畫調(diào)度序列圖建議把time_slice設(shè)成 1、2、4 各跑一遍對(duì)比周轉(zhuǎn)時(shí)間和等待時(shí)間的變化趨勢(shì)。3.3 信號(hào)量實(shí)現(xiàn)里的原子性保證和常見(jiàn)錯(cuò)誤同步互斥實(shí)驗(yàn)的核心是信號(hào)量的 P/V 操作。代碼包里通常會(huì)用簡(jiǎn)單的整型變量加忙等待來(lái)實(shí)現(xiàn)但這里有一個(gè)容易被忽略的問(wèn)題P 操作里的判斷和減一必須是原子的。// 有問(wèn)題的實(shí)現(xiàn)判斷和減一之間存在競(jìng)態(tài)窗口 void P_bad(Semaphore *s) { while (s-value 0) { // 忙等待 } s-value--; // 這里可能被中斷打斷 } // 改進(jìn)方案用關(guān)中斷或原子指令保護(hù)臨界區(qū) void P_good(Semaphore *s) { while (1) { disable_interrupts(); // 進(jìn)入臨界區(qū) if (s-value 0) { s-value--; enable_interrupts(); break; } enable_interrupts(); // 讓出 CPU 或忙等待 } }這段代碼的差異在于臨界區(qū)的保護(hù)。在單核模擬環(huán)境里如果 P 操作執(zhí)行到一半被時(shí)鐘中斷打斷另一個(gè)進(jìn)程可能看到value還是正數(shù)也進(jìn)入臨界區(qū)導(dǎo)致兩個(gè)進(jìn)程同時(shí)訪問(wèn)共享資源。disable_interrupts和enable_interrupts是常見(jiàn)的保護(hù)手段但要注意關(guān)中斷的時(shí)間不能太長(zhǎng)否則會(huì)影響系統(tǒng)響應(yīng)。參數(shù)方面信號(hào)量的初值決定了允許多少個(gè)進(jìn)程同時(shí)進(jìn)入臨界區(qū)?;コ庑盘?hào)量初值為 1同步信號(hào)量初值根據(jù)資源數(shù)量設(shè)定。如果你在實(shí)驗(yàn)里看到進(jìn)程卡死先檢查信號(hào)量初值是否合理再檢查 P/V 是否配對(duì)。常見(jiàn)的錯(cuò)誤是 P 操作執(zhí)行了但 V 操作沒(méi)執(zhí)行或者 V 操作執(zhí)行了兩次導(dǎo)致信號(hào)量值溢出。4. 內(nèi)存管理與文件系統(tǒng)實(shí)驗(yàn)的實(shí)現(xiàn)要點(diǎn)4.1 分區(qū)分配算法的數(shù)據(jù)結(jié)構(gòu)選擇內(nèi)存管理實(shí)驗(yàn)通常要求實(shí)現(xiàn)首次適應(yīng)、最佳適應(yīng)、最壞適應(yīng)等分區(qū)分配算法。代碼包里會(huì)用空閑分區(qū)表或空閑分區(qū)鏈來(lái)管理內(nèi)存。// 空閑分區(qū)表數(shù)組實(shí)現(xiàn)適合分區(qū)數(shù)量固定的場(chǎng)景 typedef struct { int start_addr; // 分區(qū)起始地址 int size; // 分區(qū)大小 int is_free; // 是否空閑 } Partition; Partition memory[MAX_PARTITIONS]; int partition_count 0; // 首次適應(yīng)從頭遍歷找到第一個(gè)滿足大小的空閑分區(qū) int first_fit(int request_size) { for (int i 0; i partition_count; i) { if (memory[i].is_free memory[i].size request_size) { return i; // 返回分區(qū)索引 } } return -1; // 分配失敗 } // 最佳適應(yīng)遍歷所有空閑分區(qū)找滿足大小的最小分區(qū) int best_fit(int request_size) { int best_idx -1; int best_size INT_MAX; for (int i 0; i partition_count; i) { if (memory[i].is_free memory[i].size request_size) { if (memory[i].size best_size) { best_size memory[i].size; best_idx i; } } } return best_idx; }首次適應(yīng)和最佳適應(yīng)的代碼差異很小但性能差異很大。首次適應(yīng)分配快但容易產(chǎn)生外部碎片最佳適應(yīng)碎片少但每次分配都要遍歷整個(gè)表。如果你在實(shí)驗(yàn)里要對(duì)比算法效果建議用同一組請(qǐng)求序列跑不同算法統(tǒng)計(jì)分配失敗次數(shù)和碎片大小。參數(shù)方面MAX_PARTITIONS決定了系統(tǒng)能管理的最大分區(qū)數(shù)。如果設(shè)得太小頻繁分配釋放后分區(qū)表會(huì)滿設(shè)得太大遍歷開(kāi)銷增加。常見(jiàn)做法是設(shè)成 100 到 200。另外要注意分區(qū)的合并邏輯釋放一個(gè)分區(qū)后如果它和前后的空閑分區(qū)相鄰必須合并否則碎片會(huì)越來(lái)越多。4.2 頁(yè)面置換算法的命中率統(tǒng)計(jì)和對(duì)比方法頁(yè)面置換實(shí)驗(yàn)的核心是統(tǒng)計(jì)不同算法的命中率。代碼包里通常會(huì)模擬一個(gè)固定大小的物理內(nèi)存和一組頁(yè)面訪問(wèn)序列然后分別用 FIFO、LRU、OPT 等算法跑一遍。# 頁(yè)面置換模擬的通用框架 def simulate(pages, frame_count, algorithm): frames [] hits 0 for page in pages: if page in frames: hits 1 if algorithm LRU: frames.remove(page) frames.append(page) # LRU命中后移到末尾 else: if len(frames) frame_count: frames.append(page) else: if algorithm FIFO: frames.pop(0) # 淘汰最早進(jìn)入的 elif algorithm LRU: frames.pop(0) # 淘汰最久未使用的 elif algorithm OPT: # 淘汰未來(lái)最長(zhǎng)時(shí)間不被訪問(wèn)的 farthest 0 victim 0 for i, f in enumerate(frames): try: next_use pages[pages.index(page)1:].index(f) except ValueError: next_use float(inf) if next_use farthest: farthest next_use victim i frames.pop(victim) frames.append(page) return hits / len(pages)這段代碼的關(guān)鍵在于frames列表的維護(hù)方式。FIFO 和 LRU 在代碼上看起來(lái)很像都是pop(0)但語(yǔ)義完全不同F(xiàn)IFO 淘汰的是最早進(jìn)入的頁(yè)面LRU 淘汰的是最久未被訪問(wèn)的頁(yè)面。LRU 在命中時(shí)需要把頁(yè)面移到列表末尾FIFO 不需要。如果你把這兩個(gè)算法搞混命中率統(tǒng)計(jì)會(huì)完全錯(cuò)誤。參數(shù)方面frame_count決定了物理內(nèi)存大小。通常實(shí)驗(yàn)會(huì)要求跑 3、4、5 個(gè)頁(yè)框各一遍觀察命中率隨頁(yè)框數(shù)增加的變化。pages序列的長(zhǎng)度建議至少 1000 次訪問(wèn)太短的序列統(tǒng)計(jì)波動(dòng)太大。如果你要對(duì)比 OPT 和 LRU 的差距OPT 的命中率是理論上限LRU 通常比它低 10% 到 20%如果差距超過(guò) 30%檢查你的 LRU 實(shí)現(xiàn)是否正確。4.3 文件系統(tǒng)目錄樹(shù)和磁盤塊映射的實(shí)現(xiàn)文件系統(tǒng)實(shí)驗(yàn)通常是難度最高的部分因?yàn)樗枰瑫r(shí)管理目錄樹(shù)、文件控制塊、磁盤塊分配和空閑塊管理。// 目錄項(xiàng)結(jié)構(gòu)文件名 inode 編號(hào) typedef struct { char name[MAX_FILENAME]; int inode_id; } DirEntry; // inode 結(jié)構(gòu)文件元信息 數(shù)據(jù)塊指針 typedef struct { int id; int size; int type; // 文件或目錄 int block_ptrs[MAX_BLOCKS]; // 直接塊指針 int indirect_ptr; // 間接塊指針 } Inode; // 創(chuàng)建文件分配 inode在父目錄中添加目錄項(xiàng) int create_file(int parent_dir_inode, const char *name) { int new_inode alloc_inode(); if (new_inode 0) return -1; // 在父目錄的數(shù)據(jù)塊中寫入目錄項(xiàng) DirEntry entry; strncpy(entry.name, name, MAX_FILENAME); entry.inode_id new_inode; add_dir_entry(parent_dir_inode, entry); return new_inode; }這段代碼的核心是 inode 和目錄項(xiàng)的分離。inode 存文件的元信息和數(shù)據(jù)塊指針目錄項(xiàng)只存文件名和 inode 編號(hào)。這種設(shè)計(jì)的好處是目錄項(xiàng)大小固定方便在磁盤塊中順序存儲(chǔ)缺點(diǎn)是查找文件需要先讀目錄項(xiàng)再讀 inode多一次磁盤訪問(wèn)。參數(shù)方面MAX_BLOCKS決定了單個(gè)文件的最大直接塊數(shù)量。如果文件很大需要用到間接塊。間接塊的實(shí)現(xiàn)是文件系統(tǒng)實(shí)驗(yàn)里最容易出錯(cuò)的地方一級(jí)間接塊存的是數(shù)據(jù)塊指針二級(jí)間接塊存的是間接塊指針。如果你在實(shí)驗(yàn)里遇到大文件讀寫失敗先檢查間接塊的分配和釋放邏輯。5. 避坑與排查課設(shè)代碼跑不起來(lái)時(shí)先看這幾條5.1 編譯報(bào)錯(cuò)頭文件缺失和類型沖突現(xiàn)象make時(shí)報(bào)fatal error: xxx.h: No such file or directory或者error: conflicting types for xxx。原因代碼包可能依賴特定版本的庫(kù)或頭文件或者在不同源文件里對(duì)同一個(gè)函數(shù)/變量的聲明不一致。操作系統(tǒng)課設(shè)代碼經(jīng)常有多個(gè)源文件共享全局變量如果頭文件里聲明了extern int current_time;但某個(gè)源文件里定義成了static int current_time;就會(huì)報(bào)類型沖突。解決先看報(bào)錯(cuò)的頭文件名確認(rèn)系統(tǒng)里是否安裝了對(duì)應(yīng)的開(kāi)發(fā)包。如果是類型沖突用grep -rn xxx .找到所有聲明和定義的位置統(tǒng)一類型。常見(jiàn)做法是把所有全局變量聲明集中到一個(gè)公共頭文件里其他源文件只包含這個(gè)頭文件。5.2 運(yùn)行時(shí)崩潰段錯(cuò)誤和死循環(huán)現(xiàn)象程序編譯通過(guò)但運(yùn)行時(shí)報(bào)Segmentation fault或者卡住不動(dòng)。原因段錯(cuò)誤通常是空指針解引用或數(shù)組越界。操作系統(tǒng)課設(shè)代碼里常見(jiàn)的空指針場(chǎng)景包括從空隊(duì)列取 PCB、訪問(wèn)未初始化的頁(yè)表項(xiàng)、目錄項(xiàng)指針為 NULL 時(shí)直接解引用。死循環(huán)常見(jiàn)于信號(hào)量的忙等待邏輯如果 P 操作的條件永遠(yuǎn)不滿足進(jìn)程會(huì)一直循環(huán)。解決用gdb跑一遍崩潰時(shí)看bt輸出定位到具體行。如果是死循環(huán)用CtrlC中斷后看where輸出。常見(jiàn)做法是在隊(duì)列操作和信號(hào)量操作里加斷言比如assert(q-count 0)讓問(wèn)題盡早暴露。5.3 結(jié)果不對(duì)調(diào)度序列和預(yù)期不一致現(xiàn)象程序能跑但輸出的調(diào)度序列、命中率、分配結(jié)果和預(yù)期不符。原因最常見(jiàn)的是參數(shù)方向搞反了。比如優(yōu)先級(jí)調(diào)度里代碼認(rèn)為數(shù)值越大優(yōu)先級(jí)越高但你按數(shù)值越小優(yōu)先級(jí)越高來(lái)構(gòu)造測(cè)試數(shù)據(jù)。另一個(gè)常見(jiàn)原因是時(shí)間統(tǒng)計(jì)的基準(zhǔn)點(diǎn)不對(duì)比如周轉(zhuǎn)時(shí)間應(yīng)該用完成時(shí)間減到達(dá)時(shí)間但代碼里用了當(dāng)前時(shí)間減到達(dá)時(shí)間。解決先打印中間狀態(tài)比如每次調(diào)度前后的就緒隊(duì)列內(nèi)容、每次頁(yè)面訪問(wèn)后的頁(yè)框內(nèi)容。對(duì)比手工模擬的結(jié)果找到第一個(gè)不一致的位置。常見(jiàn)做法是在關(guān)鍵函數(shù)入口加printf輸出輸入?yún)?shù)和返回值跑一個(gè)小規(guī)模測(cè)試用例逐步縮小范圍。5.4 性能異常算法耗時(shí)遠(yuǎn)超預(yù)期現(xiàn)象小規(guī)模測(cè)試正常但數(shù)據(jù)量一大就慢得離譜。原因通常是數(shù)據(jù)結(jié)構(gòu)選擇不當(dāng)。比如優(yōu)先級(jí)調(diào)度用鏈表每次遍歷找最優(yōu)頁(yè)面置換用數(shù)組每次線性查找文件系統(tǒng)用線性掃描找空閑塊。這些操作在小規(guī)模下看不出來(lái)規(guī)模一大就變成瓶頸。解決把線性查找改成有序插入或哈希表。比如優(yōu)先級(jí)調(diào)度可以在入隊(duì)時(shí)按優(yōu)先級(jí)插入出隊(duì)時(shí)直接取隊(duì)頭空閑塊管理可以用位圖或空閑鏈表。常見(jiàn)做法是先保證正確性再用time命令或clock()函數(shù)測(cè)量耗時(shí)確認(rèn)瓶頸在哪個(gè)函數(shù)再針對(duì)性優(yōu)化。5.5 環(huán)境差異換一臺(tái)機(jī)器就編譯失敗現(xiàn)象在自己的機(jī)器上能跑換到實(shí)驗(yàn)室機(jī)器或同學(xué)機(jī)器上就報(bào)錯(cuò)。原因編譯器版本、系統(tǒng)架構(gòu)、庫(kù)版本不一致。比如代碼里用了gets這種在新版本 GCC 里被移除的函數(shù)或者用了 32 位特有的指針轉(zhuǎn)換。解決在 Makefile 里顯式指定-stdc99或-stdc11避免編譯器默認(rèn)標(biāo)準(zhǔn)不一致。指針轉(zhuǎn)換用intptr_t而不是int。常見(jiàn)做法是在項(xiàng)目根目錄放一個(gè)README寫清楚編譯命令和依賴版本換機(jī)器時(shí)先按 README 跑一遍。6. 怎么在課設(shè)代碼基礎(chǔ)上改出自己的版本6.1 從「能跑」到「能改」先加日志再動(dòng)邏輯很多人拿到代碼包后直接改核心邏輯結(jié)果改完之后跑不起來(lái)也說(shuō)不清楚哪里出了問(wèn)題。我的習(xí)慣是先在關(guān)鍵路徑上加日志確認(rèn)自己完全理解了代碼的執(zhí)行流程再動(dòng)手改。// 在調(diào)度函數(shù)入口加日志輸出當(dāng)前狀態(tài) PCB* schedule(ReadyQueue *q) { printf([DEBUG] before schedule: queue_count%d, current_time%d\n, q-count, current_time); PCB *p pick_next(q); printf([DEBUG] picked pid%d, remaining%d, priority%d\n, p-pid, p-remaining_time, p-priority); return p; }日志的作用是建立反饋回路。你改了一行代碼跑一遍看日志輸出是否符合預(yù)期。如果不符合你能立刻知道問(wèn)題出在哪個(gè)環(huán)節(jié)。沒(méi)有日志的情況下你只能看最終結(jié)果排查范圍太大。參數(shù)方面日志的粒度要適中。太粗看不到細(xì)節(jié)太細(xì)刷屏。我一般會(huì)在調(diào)度、分配、置換這三個(gè)關(guān)鍵操作上加日志其他輔助函數(shù)不加。日志格式統(tǒng)一用[DEBUG]前綴方便用grep過(guò)濾。6.2 改調(diào)度算法從時(shí)間片輪轉(zhuǎn)到多級(jí)反饋隊(duì)列如果你要把時(shí)間片輪轉(zhuǎn)改成多級(jí)反饋隊(duì)列改動(dòng)集中在三個(gè)地方就緒隊(duì)列的組織、時(shí)間片的分配、進(jìn)程降級(jí)邏輯。改動(dòng)點(diǎn)時(shí)間片輪轉(zhuǎn)多級(jí)反饋隊(duì)列就緒隊(duì)列單個(gè) FIFO 隊(duì)列多個(gè)優(yōu)先級(jí)隊(duì)列時(shí)間片固定值隨優(yōu)先級(jí)降低而增大入隊(duì)邏輯直接放隊(duì)尾按優(yōu)先級(jí)放入對(duì)應(yīng)隊(duì)列降級(jí)邏輯無(wú)時(shí)間片用完降一級(jí)實(shí)現(xiàn)時(shí)先定義多個(gè)隊(duì)列和對(duì)應(yīng)的時(shí)間片數(shù)組然后改pick_next函數(shù)從最高優(yōu)先級(jí)隊(duì)列開(kāi)始找找到就取隊(duì)頭如果高優(yōu)先級(jí)隊(duì)列為空降級(jí)到下一級(jí)。進(jìn)程用完時(shí)間片后如果還有剩余執(zhí)行時(shí)間從當(dāng)前隊(duì)列移到下一級(jí)隊(duì)列的隊(duì)尾。常見(jiàn)坑是降級(jí)邏輯的邊界條件最低一級(jí)隊(duì)列的進(jìn)程用完時(shí)間片后是放回原隊(duì)列還是繼續(xù)降級(jí)通常是放回原隊(duì)列否則進(jìn)程永遠(yuǎn)無(wú)法完成。另一個(gè)坑是時(shí)間片的計(jì)算如果時(shí)間片按 2 的冪次增長(zhǎng)要防止溢出。6.3 改頁(yè)面置換從 LRU 到 Clock 算法LRU 的缺點(diǎn)是每次訪問(wèn)都要移動(dòng)頁(yè)面開(kāi)銷大。Clock 算法用循環(huán)隊(duì)列和訪問(wèn)位來(lái)近似 LRU開(kāi)銷小很多。# Clock 算法循環(huán)掃描訪問(wèn)位為 1 則清零并跳過(guò)為 0 則淘汰 def clock_replace(frames, access_bits, hand, new_page): while True: if access_bits[hand] 0: victim frames[hand] frames[hand] new_page access_bits[hand] 1 hand (hand 1) % len(frames) return victim else: access_bits[hand] 0 hand (hand 1) % len(frames)這段代碼的關(guān)鍵是hand指針和access_bits數(shù)組的配合。每次訪問(wèn)頁(yè)面時(shí)把對(duì)應(yīng)的訪問(wèn)位置 1需要淘汰時(shí)從hand開(kāi)始掃描遇到訪問(wèn)位為 1 的就清零并繼續(xù)遇到 0 的就淘汰。這樣被訪問(wèn)過(guò)的頁(yè)面有第二次機(jī)會(huì)不會(huì)被立即淘汰。參數(shù)方面access_bits的長(zhǎng)度和frames一致初值全為 0。hand初值可以設(shè)為 0。如果你要對(duì)比 Clock 和 LRU 的命中率Clock 通常比 LRU 低 5% 到 10%但每次訪問(wèn)的開(kāi)銷小很多。在實(shí)驗(yàn)報(bào)告里可以統(tǒng)計(jì)總訪問(wèn)次數(shù)和總掃描次數(shù)量化這個(gè) trade-off。6.4 驗(yàn)證方法用已知結(jié)果反推實(shí)現(xiàn)是否正確改完代碼后怎么確認(rèn)自己的實(shí)現(xiàn)是對(duì)的我的做法是構(gòu)造小規(guī)模測(cè)試用例手工算出預(yù)期結(jié)果再和程序輸出對(duì)比。比如頁(yè)面置換實(shí)驗(yàn)構(gòu)造訪問(wèn)序列[1, 2, 3, 4, 1, 2, 5, 1, 2, 3]頁(yè)框數(shù)為 3手工模擬 FIFO 和 LRU 的命中次數(shù)。FIFO 的命中次數(shù)是 3LRU 的命中次數(shù)是 4。如果程序輸出和這個(gè)不一致說(shuō)明實(shí)現(xiàn)有問(wèn)題。調(diào)度實(shí)驗(yàn)同理構(gòu)造 3 個(gè)進(jìn)程到達(dá)時(shí)間分別為 0、1、2burst_time 分別為 5、3、2手工畫出甘特圖算出平均周轉(zhuǎn)時(shí)間。程序輸出和手工結(jié)果對(duì)比誤差應(yīng)該在浮點(diǎn)精度范圍內(nèi)。這種驗(yàn)證方法的優(yōu)點(diǎn)是反饋快、定位準(zhǔn)。你不需要等大規(guī)模測(cè)試跑完小規(guī)模用例幾秒鐘就能出結(jié)果。缺點(diǎn)是覆蓋不全所以小規(guī)模驗(yàn)證通過(guò)后還要跑一組隨機(jī)數(shù)據(jù)檢查有沒(méi)有崩潰或異常輸出。6.5 一個(gè)我踩過(guò)的坑別在最后一天改核心數(shù)據(jù)結(jié)構(gòu)血淚經(jīng)驗(yàn)課設(shè)截止前一天我把 PCB 的存儲(chǔ)方式從數(shù)組改成鏈表結(jié)果所有依賴下標(biāo)訪問(wèn)的代碼全部報(bào)錯(cuò)改到凌晨三點(diǎn)才跑通。后來(lái)我給自己定了一條規(guī)矩核心數(shù)據(jù)結(jié)構(gòu)在課設(shè)開(kāi)始的第一周就定下來(lái)后面只改算法邏輯不改數(shù)據(jù)結(jié)構(gòu)。如果你確實(shí)需要改數(shù)據(jù)結(jié)構(gòu)先寫一個(gè)適配層把舊接口映射到新結(jié)構(gòu)上保證上層代碼不用動(dòng)。比如從數(shù)組改成鏈表可以保留get_pcb_by_index函數(shù)內(nèi)部遍歷鏈表找到第 i 個(gè)元素。這樣上層代碼不用改你只需要改適配層的實(shí)現(xiàn)。另一個(gè)習(xí)慣是每次改完代碼后立刻git commit寫清楚改了什么。課設(shè)代碼經(jīng)常需要回退到之前的版本沒(méi)有版本控制的話你只能靠記憶恢復(fù)很容易出錯(cuò)。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日韩无码精品综合久久| 91黑丝操| 亚洲精品成人动漫在线| 美女黄色91| 夂久色| 狠狠操,使劲操| 最新三级网址| 一区二区三区免费视频入口 | 中文字幕精品探花视频| 欧美综合色| 久久久久久久久久久久黄色| 亚洲色图超碰在线| 色吧五月| 亚洲国男人的天堂| 99re国产中文字幕| 亞洲久久直播| 91操人| 人人干黄色| 亚洲人久久久久日| 麻豆天美在线| 丝袜美腿91| 亚洲校园激情| 欧美狠狠狠| www.男人天堂| 精品人妻丰满熟妇一区二区三| 情侣操 逼视频99| 久久超碰爱| 夜夜草网站| 操逼视频免费日韩无码| 可以在线观看AV的网站| 日韩精品黄片免费观看| 婷婷五月天av| 亚洲欧美精品一区天堂久久 | 亚洲一区操| 欧美 亚洲 第一页| 国产呦精品系列在线观看| 蜜臀中文字幕| 日韩中文字幕视频在线观看| 国产网站在线播放| 最近的最新的中文字幕视频| 久久五月视频| 综合五月天| 日本99久久| 国产熟女免费观看久久| 久久久精品日本一道| 五月丁香啪啪网| 免费看欧美美女黄色大片 | 亚洲精品 欧美精品| 超碰在线974| 日韩情色视频| 人妻丝袜肏逼| 精品夜夜澡人妻无码AV| 日韩黄色av中文字幕| 欧美亚洲第一页| 收看日本人日bb| 亚洲va有码在线天堂| 国产亲戚伦亲在线| 色五月亚洲| 欧美乱色| 欧美日韩97在线| 欧美日韩人妻精品一区二区三区| 综合久久97| 国产乱伦亚洲色图高清无码| 亚洲精品国产熟女久久久久久| 唐山老熟妇露脸啪啪叫| 日日干夜夜欢| 深夜激情 | 无码免费精品高清| 熟妇在线视频一区二区| 红桃视频高潮| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 五月丁香婷婷色| 久久精品人体AV| 91色图片| 久草看看看| 亚洲影院成人| 国产剧情AV不卡在线观看| 午夜精品久久久久久久99蜜桃一| 蜜臀精品1区2区| 亚洲色丰满少妇高潮| 一二区在线观看视频| 97资源久久| www.av在线视频| 丁香久久| 极品一区二区三区免费| 日韩有码 一区二区三区| 成人性爱视频在线看| 九九AV| 国产传媒1234区| 伊人96在线| 日韩97P| 亚洲 国产 精品一区| 亚洲日产专区| 久9综合在线| 日本人妻伦在线中文字幕| 亚洲国产麻豆一区二区三区| 日本九九久久99播| 高精欧美色| 欧美人人曰人人操人人射射| 操久久久久久| 久久久久女教师免费一区| 国产黄色影片在线观看| 久久超碰免费的| 国产精品网址| 亚洲男人的天堂亚洲| 久久久久久久久国产| 一起草三级AV电影在线观看| 九九Av| 肉丝中文无码高清| 国产乱码精品一区二区三区四川| 国产第二页| 亚洲自拍天堂| 四季AV一区二区凹凸精品小说| 91丝袜在线观看| www.yw尤物| 免费99精品国产自在在线| 欧美精品久久久久久久丰满| 天堂资源欧美| 性久久久| 欧美性生活内射| 中国AAAAAA黄色片| 强上我不卡卡| 成人精品一区二区91毛片不卡| 欧美熟妇精品黑人巨大一二三区| 欧美影院一区二区三区| 操淫穴亚洲五月丁香| 成人自拍三级在线观看| 丝袜喷水在线| 国内精品久久人妻性色av| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 国内97干免费看| 日逼逼免费看| 亚洲清纯唯美| 一区二区三区四区色图| 国产家庭乱伦表演| 一本一首道人妻少妇免费久久| 51国产午夜精品视频| 色欲人妻一区二区在线| 免费在线观看国内色片网站网址 | 日韩欧美俄罗斯A片| 日1区2区3区2020| 国产女人91精品嗷嗷嗷嗷| 亚洲成人帖图| 一区二区三区 丝袜 高跟 美腿 | a人欧美综合天堂麻豆| 少妇高潮流水av免费| 性性久久| 欧美在线观看综合国产| 日本操逼视频免费| 天天摸夜夜操视频| 99爱久久视频频| 欧美黄色大片在线观看 | 中文字幕av片| av久日| 99热只有这里有精品| 999热日韩精品| 久久久久人妻| 国产av强奸美女| 亚洲素人综合| 欧美天堂日韩三级国产传媒| 久精品无码av一区二免费国产在线观看| 精品国产乱码久久久影院| 中文字幕第页| 国产操偷| 黄色AAAAA欧美| 骚日日av| 亚洲免费97免费| 色婷婷色99国产综合精品| 亚州综合网| 欧美综合网1| 天天色粽合合合合合合合| 久久久国产av美女私房| 国产99999| 亚洲图片偷拍欧美| 操操操操网黑人| 大香蕉综合| 日日夜夜精品| 欧美色999| 日本加勒比无码专区一二三| 精品乱子一区二区三区99| 大香蕉一线视频| 日韩字幕一区| 亚洲成a人v欧美综合天堂下载| 久久久久人| 77777亚洲蜜臀精品久久综合蜜臀| 曰韩精品视频一区二区| 18禁的网站在线| 18禁在线视频| 91久久久亚洲| 神马午夜久久| 99视频自拍区| 这里只有97精品| 男人成人黄色视频在线观看免费下载| 久久亚洲色图中文字幕| 爽爽爽免费视频| 猛交交| 丁香六月啪| 天天插夜夜操| HEYZO高无码国产精品227| 亚洲春色欧美激情自拍| 亚洲精品九九九| 色九久| 91n处女在线观看| 欧美色道啊| 一区二区三区一亚洲中文字幕、综合区灬 | 性爱av网站| 成人八戒网站| 成人免费在线网站| 人摸人人操人| 成人午夜无码视频| 中文字幕一区av| 99久久婷婷| 桃色五月天| 桃色五月天| 天天影视综合网欧美精品| 色色操| 综合熟女| 老女人日韩美91| 亚洲日韩AV视色| 男人天堂.AB| 免费看污网站| 日本超碰97日韩精品人妻| 久久爱超碰网| 精品免费成人久久| 色五月AV| 成人a级高清视频在线观看| 日本三级A片网站com| 人人操人人插人www| 99精品成人免费看| 一区二区三区在线资源| 99re9这里只有精品| 白丝jkav| 久久精品噜噜噜成人看免欧美大片| 亚洲91射| 99re免费| 欧洲一级性爱视频在线观看| 按摩中文字幕| 欧美传媒一区| 国产精品乱码久久久久| 高潮的A片激情扒开一区| 日韩卡一卡二卡三在线| 国产不卡片| 91网站视频在线观看| 99热18这里只有精品| 东京热91| www.yeyecao| 8050无码八戒| 四虎视频在线观看| 青草精品视频一日本久久久久网站| 超碰在线一区二区三区| 亚洲AV秘 精品久久老牛影视| av资源在线播放天堂| 久久9亚洲| 综合网少妇| 操啊国产| 高凊专区人人操| 呦女网站| 日本在线不卡v二区| 午夜男人天堂| 欧美色图99| 一道α片欧美| 亚洲日韩一区电影| 久操视频在线| 九九热久久99精品re| 色色婷婷丁香| 日本欧美m v精品网站加| 97香蕉网| 超碰91在线| 天美欧美国产| 免费A片三p视频| 亚洲成人网站在线观看| 日日干夜夜欢| 亚洲最新av无码成人精品区| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 亚洲 欧美 综合 91| 又大又大又大又粗爽高潮观看 | 极品少妇久久久久| www.色综合| 四虎国产成人精品免费一女五男| 超碰95| 六月婷婷五月丁香| 日本幼女18+| 无码少妇精品一区二区60岁老人| 中亚黄色三级大片| 欧美成人四级在线播放| 亚洲妇色| 性爱乱伦视频免费| 五十路熟女工口 | 色情婷婷| 日韩激情电影中文字幕| 偷拍欧美激情| 青草成人免费视频一com| 久久久97| 嗯嗯不要视频| 欧美久久草熟女| 欧美色青| www.AV有限公司一区| 精品日韩人妻视频| 美女毛片999| 二男一女成人A片| 一区二区三区成人 | 死我十八禁| 免费看日产一区二区三区| 天天在线91| 操人无码| 天天综合网网欲色| 人妻精品一区二区全免费| 高清有码一区二区| 欧美操逼视频二区| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 亚洲色棕合| 久久男人网| 熟妇的味道HD中文字幕| av久日| 91成人在线免费视频| 中日韩久久久免费看| 精品人人插人人操| 嫩草美女久久| 男人的亚洲天堂| 熟女乱伦二区| 手机看片91人妻| 欧美色997| 自拍偷拍 高清无码| 色与欲影视天天看综合网| 九月婷婷综合| 天天看精品动漫视频一区| 亚洲精品美女操逼| 在线播放成人网站| 思思热在线视频免费| 欧洲精品一二三在线| 久久综合99| 综合伊人网12色| 校园春色欧美| 91九久| 色情乱伦AV| 人人操人人色网| 国产视频大全| 人妻日日夜夜精品| 亚洲成人久久美女| xxxx网站亚洲精品| 欧美AB在线| 日韩人妻精品| 久久久专区| 欧美拳交在线播放| 免费在线观看国内色片网站网址| 亚洲美女av无码| 大香蕉青青9| 久久超碰亚洲人| 强奸xx国产| 色就色综合| 青青草好吊色| 亚洲综人网| 国产精品网站www| 日韩乱码Av| 五月天丁香网| 蜜桃视频成a人v在线| 人人人干干人人干| 中文字幕乱码在线观看| 欧美肥臀在线| 亚州欧美总和| 欧美色图97| 国产乱人妻精品入口| 天天干天天日天天射黄色| 桃花色涩综合影院| 丁香五月天啪啪| 在线综合色| 成人性爱AV在线免费观看| 欧美资源| 久操免费观看| 999999精品| 天美传媒精品久久视频| 热久久无毒不卡| 啊啊啊要高潮了| 91九九九逼| 亚洲av热热色| 激情终合网| 日韩AV一区二区三区三州三州| 国产91美女高潮| 婷婷五月花| 狠狠爱综合网| 2010男人的天堂| 九九碰九九爱97超碰| 99久久精品国产高潮| 无色无码| 午夜男人一级A片7777| 超碰91在线| 可以看的av| 人妻丝袜无 码视频专区| 激情五月天色播| 婷婷综合五月天| 色色色五月婷婷| 色色色五月婷婷| 日韩免费人妻色情网站| 天天综合网国产| 一本正道久久熟女| 男人的天堂在线| 国产女人9999| 美女t无毒不卡不卡| 97超碰欧美精品| 色图综合网| 日韩免费三级黄片电影| 国产精品免费日韩| 色婷婷综合网站| 女人爽到高潮久久久| 亚洲国产综合久久天堂| 9 9无尺码天堂网| 96国产精品| 农村女一级毛卡片| 国语国产操逼伊人AV网| 岛国精品视频在线观看| 96AV久久久| 日本免费一区二区不卡 | 欧美日产国产在线成人第一区| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 曰韩精品九九无码| 超碰中文字幕人妻草一区| 操91| 欧美色999| 精品欧美А∨无码黑人大荫蒂| 国产精品成人蜜臀AV在线| 五月丁香啪啪啪| 亚洲综合有玛| 天天碰久久入| 影音先锋日本一区二区| AV九九| 密臀AV在线| 十八禁黄色| 影视综合无码少妇| 日韩精品99999| 欧美午夜视频| 少妇综合| 丝袜六区| 欧美综合在线第一页| 天天日天天干天天操| 美女尤物人人操| 67914亚洲精品| 97精品综合久久网| 欧美极品美女aaaaaa级黄片| 伊人婷婷五月天| 大香蕉欧美国产日韩高潮| 俞拍久久国应视频| 青青操狠狠撩| 亚洲欧美国产va在线| 欧美色偷偷| 亚洲第一无码播放立川理惠| 99色婷婷中文字幕乱色| 天堂v无码免费视频| AV丝袜东京热| 国内精品久久人妻性色av| 啊啊啊好爽快点啊啊啊嗯嗯| 国产成人啪一区二区| 日熟女| 欧美日韩国第一区| 91美女在线观看| 亚洲色五月| 天天搞欧美| 国产一区二区精品久久99| 亚洲精品欧洲精品| AAAA欧美日韩| 超碰色中文| 午夜精品久久一区二区| 欧美精品成人亚洲| 久久精品久久久久久久| 另类天堂| 96精品久久久久久久久| 亚洲 欧美都市激情| 风月影院男女十八禁| 免费观看国产不卡av| 91久久久视| 欧美人人操人人插| 久久久久久波多野吉衣高潮| 国产隔壁老王影院在线| 97视频在线观看高清资源| 探花视频免费观看国产专区| av在线人气| 日本中文熟女视频| 大香蕉欧美伊| 国产操伦| 色婷婷A V一二三四区麻豆综合| 久久鲁干| 亚洲激情视频| 91九九九逼| 亚洲高清国产理伦片| 97国产综合欧美| av一区二区三区 中文| 91热热色| 天操天操夜操夜月操月年年操| 一级做a爰片性色毛片久久| 欧美精品91| 强奸乱伦大香蕉| 欧美爱国产综合、| 欧美另类色图片| 亚洲精品免费中文字幕| 色妇91| 狠狠操综合| 欧洲久久一二线| 综合天天网| a级理论午夜日本| 99热伊人| 色偷综合| 久久久亚洲精品电影免费看| ..日韩av毛片精品久久久| 在线五区| 四虎影视在线| α√在线| 国产亚洲福利第一页丝袜| 欧美论理片| 中文字幕啊啊啊在线观看视频| 91AV入口| 亚洲欧美97√| 亚州 综合 色图| 99自拍视频在线| 香蕉国产精品麻豆亚洲欧美日韩| 蜜臀一二三区| 香港成人一级视频在线青青草| 麻豆啪啪啪视频| 国产高清亚洲日韩一区| 亚洲中文字幕一区| 加勒比综合九九99视频在线播放| 久久激情视频| 国产91啪| 国产多人在线观看视频| 神马麻豆福利院| 日本中文字幕一区| 97操97色| 亚洲激情网一二三四区| 日本视频在线观看污污污| 丰满人妻一区二区三区色-百度| 久日综合网| 韩日男人的天堂| 色情五月婷婷| 欧美麻豆成人同性GⅤ在线| 69XX一中文字幕人妻91| 久久精品人妻一区| 欧美亚洲特P| 国模久久在线| 麻豆天美在线喷水AV| 性色中出| 久久9精品视频| 日韩三级视频一区二区三区| 成人av动漫在线观看| 免费看黄视频亚洲网站| 91视频伊人| 青春草莓视频在线观看网址| 色悠久| 日逼97| 亚洲深夜福利| 91操熟女视频| 日日夜夜骑| 人人操人人精品影片| 午夜无码熟妇丰满人妻| 青青伊人久久| 欧美成人国产精品| 亚洲久久东京热一二三四五区视频| 伦在线97| 久久同城AV| 国产欧美后入| 美女骚尻视频| 久久久青青草| 91老熟女视频| 午夜小电影在线插入淫高潮| 精品国产一区探花在线观看| 国产精品第一区第一页| AV天堂国产| 久久五十路熟女人妻| 国产日韩精品无码去免费专区国产| 日本乱人伦片中文三区| 日韩综合无码色欲vv| 久久国产性爱| 日韩性爱高清免费视频| 一区二区日韩欧美久久| 久久久久久久 九九九九九九九| 久久婷婷色综合一区二区三区| 青青11操操操操操操操操| 色女网日韩| 熟妇高潮一区二| 久久华人网| 91综合无码| 国产一级高清免费观看| 狠狠中文字幕| 91日本在线观看| 9久超碰| 99re69| 综合色久欲| 天天综合~91| 欧美天天干| 97精品综合| 秋霞男人网| 俺也射| 日韩视频中文字幕| 永久免费发布性爱网| 丁香五月天啪啪| 一区二区首页| 天天欧美97| 最新无码国产| 亚洲日本韩国在线| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 2025亚洲男人天堂| 91熟女视频网| 日韩精品中文字幕人妻| 无码乱人伦中文视频| 精品一区二区三区蜜桃臀赵总 | 国产一区二区三区视频在线看| 色爱国产| 嗯嗯啊好大| 91日韩国产欧美亚洲另类精盘州至城都| 成人自拍三级在线观看| 久久九九99| 久操网在线| 久久久亚洲| 成年人一级黄色毛片大全在线观看| 亚洲AV无码天美传媒一区| 亚州九九九精品视频| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 国产精品自拍视频| 欧美网站免费| 亚洲免费97免费| 9Ⅰ老熟女| 中文字幕av乱伦| 日本中文字幕一区| 久久久久久久久久va| 伊人成人中文字幕久久网| 久久99深爱久久99精品| 性饥渴少妇av无码毛片| 天美国产精品| 唯美清纯 妖精视频| 久久久久久久久成人av解说| 啊啊啊啊在线观看网址| 日本操逼无码| 爱爱60秒免费视频| 亚洲少妇视频| 翔田千里av一区二区三区| 97超碰精品成| 久久黄色视频一区二区三区 | 长久操视频| 亚洲国产奇米影视久久| 天天综合欧美综合| a片 xxxx受爽视频| 亚洲色图久久成人| 老熟女91视频| 天天综合91在线| 91综合网在线| 夜色五月天| 亚洲色图欧美| 欧美日韩国产中文超碰| 亚洲天堂欧美| 少妇毛片久久| 被窝影院午夜看片无码| 成人日本精品九区| 成人无码在线视频网站| 操B久久| www.久久制服糖| 欧洲精品一区二区三区| 久操com| 少妇色综合| 91天堂色男人的天堂| 久久久久96| 婷婷五月色| 天天日天天干少妇日| 天无日色综合| 操B视频日韩无码| 亚州欧美一区| 婷婷久久五月天| 超碰免费人妻在线| 熟啊v色欧美热| 亚洲熟女性高潮久久久| 一级免费精品| 亚洲91少妇| 精品日韩人妻精品一二三区| 色综合超碰超| 女人爽到高潮潮喷18禁网站| 好吊色青靑草| 欧美亚洲AN| 久久‘黄片视频| 久草新在线| 91性高| 亚洲高清在线| 黄色AV免费| 亚洲国产精品久久久久婷婷老年| 思思热在线| 正在播放国产精品一区| 后入精品| 麻豆福利视频导航| 亚洲aV性爱| 一级性爱网| 亚洲综合 欧美| 啊啊啊啊嗯嗯嗯用力好爽 | 淫荡少妇免费| 欧美性色网| 欧美天堂第二区| 国产精品一二三免费网站| 国产精品永久免费10000| 日本国产二线女色| 啊啊啊男女| 人妻久热在线| 日韩av在线播放不卡| 亚洲久久久| 中文在线视频| 久久久久久久久久久久久久久乱码| 亚洲午夜福利在线影院| 亚洲成人激情小说视频| 久久99干一本高清| 欧洲一区二区三区免费| 亚洲日韩一区电影| a天堂视频| 麻豆国产精品午夜视频| 久久久亚洲精品中文字幕人妻| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚 | 久操黄色视频| 日本黄 R色 成 人网站| 欧美精品日韩久久久九| 91麻豆天美| 精品国产乱码久久久影院| 97久久精品国产| 久久久久久午夜男人的天堂| 欧美极度丰满熟妇hd| 欧美伊人久久综合网| 97欧美在线| 人妻夜爽夜夜爽| 熟女高潮合集-永久久久-成人AV| 澳门成人网站久国产日韩| 97色婷| 无码抄逼网| av在线免费一区二区| 国产精品久久久无码aV去| 91亚洲在线| 大逼色网站| 日韩在线观看AV| 九九av| 中文字幕乱偷人妻久久艾草网| 五月天久久婷婷亚洲| 老熟女91av| 欧美日韩夜夜| 国产suv精品一区二区四区999| 五月激情影院| 九九亚洲| 久久超碰久| 97WW精品| 九九九久千久久激情蜜桃在线看 | 激情久久日韩精品中文字幕麻豆| 亚洲视频二区| 亚洲综合一| 午夜综合在线| 好一吊区二区| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 少妇专区一二三四五| 欧美天堂超碰97| 天堂射| 亚洲大色鬼| 后入福利| 91精品网站| 懂色av一区二区三区天美传媒| 久九色| 日韩欧美性吧婷婷乱伦大香蕉 | 欧美亚涩| 好吊色一区| 亚洲 另类 丝袜 自拍 动漫| 97av,com| 78精品| 人妻少妇久久中文字幕一区二区 麻豆| 极品销魂美女一区二区| 亚洲在线网站| 久久精品毛片免费不卡| 久综合网| 五月久久HDAV| 制服诱惑亚洲一区二区三区在线观看| 国产熟女自拍| 亚洲动态色图| 国产高清精品一区二区三区毛片| 日韩三级天堂在线观看| 99热精品在线| 禁十八久久| 九一性生活免费视频| 久久久久女教师免费一区| 偷拍精品一区二区三区| 蜜乳AV一区| 久久激情网| 青青草亚洲一区| 欧美色图91p| 神马午夜久久| 亚洲中文日韩欧美大香蕉视频| 97色色网| 91丨精品丨国产丨丝袜| 97超碰超| 岛国视频一二三区| 婷婷五月天av| 一区二区国产视频在线观看| 久久久久久久| 日韩色欲久久一二三四区| 久久小视频| 综合网97| 桃花色综合影院| 91丨九色丨熟女高潮| 伊人991| 啊啊啊网站| 蜜乳AV一区二区三区四| 亚州色图欧美色图| 国产乱伦亚洲| 狠狠躁AV| 91制服丝袜| 色欲蜜臀AV| 欧美亚男人的天堂| 日本三级精品| 欧美系列在线一区二区| 日本女厕偷拍| 99久久99九九99九九九| 99精品视频在线观看免费| 久久超碰久| 亚洲三级网址久久最新| 香蕉99秘 一区精品蜜桃臀| 96久久精品一二三区色欲| 欧洲免费一区二| 男人的天堂va在线| 18禁中文字幕| 激情自拍 校园春色| 欧色性第一页| 久久9精品网站| 2019男人的天堂| 韩日自拍| 91 亚洲情侣偷拍 久久| 青青草狠狠撸| 天天天做天天天爱天天天爽| 天天日天天干天天摸天天操| 热热色91| 日本性交操一区二区不卡系列| 欧美精品久久96人妻无码| 欧美极品美女aaaaaa级黄片| 色欲久久99精品久久| 中文字幕老熟妇黄色视频| 亚州熟女乱伦| 国产 亚洲 丝袜 制服| 日本一级真人黄色性爱视频| 99精品久久| 亚洲精品乱码线路中文字幕| 日韩操逼性鲍| 五月天玖玖资源站| 超碰这里有精品| 男女91| 高凊专区人人操| 天天日老熟妇| 美中韩AV综合网| 欧美综合站| 最新一二三区视频| 日韩一999精品| 色婷婷aV一区二区三区麻豆综合| 99热超碰| 中文字幕91综合| 国产人伦精品一区二区三区| 91AV老熟女视频| 天天天乱色综合全| 精品久久九| 色九色久| 亚洲天堂男人| AV天堂国产| 一类无码操逼视频| 天天操天天舔| 天天操天天插| 偷拍亚洲高清图片| 97一区二区三区视频| 亚洲色天堂九9| 黄页| 日本视频在线观看污污污| 国产做?爰片久久毛片?片美国| 俺去也婷婷| 天天澡天天爽日日av| 亚洲自拍小说| 国产狂喷潮在线精品| 日韩精品在线观看网站| 青娱乐导航AV| 欧美综合色| 亚洲AV成人无码一二三久久| 337p大胆噜噜噜噜噜91Av| 日本加靬比网站发布页| 欧美在线|亚洲| 中文字幕一区二区免费在线| 色婷婷五月天| 欧美成人国产精品| 成人无遮挡毛片免费看| 动漫爆乳3D奶水一区在线观看| 亚洲 图片 欧美 色图| K8久久久久| 很很热性爱视频| 久久国语| 无码逼| 加勒比AV天堂| 日本成人A片网站| 日韩熟女精品无码专区一区二区| 激情欧美97| 97在线精品| 日日躁夜夜躁狠狠躁超爽| 人人操人人大香蕉| 欧美超碰人妻97| 再深点灬舒服灬太大了添视频| 国产老熟女| 亚洲乱色熟女一区| 2019AV天堂| 色色色色日本| 男人天堂免费| 国产乱伦一二三区| 久久久久久久久久久久97| 久久精品性| 亚洲色91| 日韩少妇丰满亚洲| 亚洲欧美自拍偷拍| 超碰在97| 日韩av乱伦| 色牛aV| 91美女色视频亚洲| 俺去俺来也在线www| 欧美成人一级免费电影| 60秒免费视频| 国产高清不卡视频| 亚洲色91C| 色香网| 亚洲欧美首页| 91高清无码下载| 日韩欧美亚洲一区二区三区影院| 五月丁香婷婷色| 大香樵伊人网| 超碰97网址| 欧美日韩色| …亚洲黄色厕厕女女在线播…| 日本女厕偷拍| 欧美少妇一区二区三区| 无遮挡h肉动漫在线观看| 91在线超高颜值国产| 国产熟妇 码视频户外直播| 欧美瑟综合| 2020中文字幕在线| 超碰97久久观看| 青青草原人妻| 色性荡荡荡荡视频| 天美传媒国产原创中文字幕亚洲欧美另类| 凹凸久久人人| 高潮毛片无遮挡高清免费| 久久久久幕乱码| 欧美色997| 亚洲成?V人片在线观看福利| 午夜福利免费福利视频| 性色生活片久久毛片婬片免费放女人一级毛片| 人妻AV 中文字幕的| 国产诱惑| 青苹果影院男人的天堂| 六月丁香婷| 亚洲va有码在线天堂| 97资源久久| 亚洲大色鬼| 亚洲自拍一区夜夜操| 99热在线观看| 久久五月视频| JULIA一区二区三区在线播放| 国产精品黑人一区二区三区| 国产精品午夜精品| 亚洲偷拍欧美激情| 婷婷香网站| 欧美91精彩| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 天天拍天天操| 天天日天天干天天整| 伊人精品久久网站| 国产性爱在线视频一区二区| Sekablack无码一区| 天天干人人看综合| 翔田千里AV无码秘 三区| 五月丁香激情四射| 97干色| 伊人一区二区在线播放| 亚洲欧美日韩偷拍色图| 亚洲国产熟妇综合色专区| 日韩情色一区二区| 一起草视频在线| 熟女人妻精品一区二区视频| 玖草在线视频| 思思热国产高清| 成人无码电影在线观看网| 伊人黄色片| 午夜偷拍久久熟女| 精品黑人一区二区| 日韩高潮一区| 色超碰综合| 精品97久久| 久久久久久亚洲中文| 国产九九九九九九九九| 久都青青视频| 91精品国产91久久久久久久久久久久| 久久久555| 黄色片一区二区三区四区五区 | 蜜桃久久综合视频| 欧美青青视频| 国产福利合集| 日韩在线观看中文字幕视频| 亚欧美综合网。| 91精品久久久| 久久久久久久久久久久黄色| 国产精品视频内谢女人| 少妇一线天久久久久久| 蜜臀久久久99久久久久 | 99精品久久| 九九九九一区| 俺去俺来也在线www| 男人的天堂日本东京热| 人人看人人插| 大香蕉中文aV在线| 久久超碰国产一区二区三区| 日本天天色| 超碰在线在公开超碰在线在公开| 天天日天天操天天射河南省| 欧美一级三级| 加勒比海人人操超碰在线| 五月婷婷综合网| 蜜桃午夜视频一区二区| 国产情侣自拍在线播放| 超碰伊人在线| 日本熟女中文| 校园春色亚洲色图| 97舔舔| 美女裸体无遮挡永久免费观看网站| 无码抄逼网| 伊人九九九| 成人女人国产| 久久成人午夜精品影院 | 色香综合| 欧美精品成人亚洲| 女人精品内射国产99| 一区二区三区日韩欧美 | 嗯嗯嗯啊啊啊在线免费观看| 思思热国产高清| 六月丁操逼| 最新国产精品久久精品| 久久风骚城市人| 天美国产三级传媒| 三级日本一区二区三区| 亚洲九九视频在线观看| 人妻久久久| 大香蕉一区二区在线观看.| 欧美激色| 日韩无码嘿咻黑热久| 国产极品精品美女视频| 超碰97COm中文| 最新中文字幕av| 国产91美女高潮| 色就色综合| 精品无码秘 人妻一区二区| 亚洲国内精品成人不卡| 超碰97爽| 欧美国产日韩高清在线| 亚洲欧美在线观看无码| 十八禁黄色| 久湿久久 | 九月丁香综合网| 亚洲av青草久久一区二区| 久久久久久久9最新免费视频观看| 一本久道久久综合狠狠爱| 亚洲最大成人a毛毛片| 性综合网| 91老熟女| 在线视频资源| 91美女精品| 国产精品禁久久久精品| 日韩一级二级三级免费看完整版国语版| 激情第四色| 丁香六月啪啪| 国产欧美美女免费观看视频| 免费观看啪视频| 91N欧美| 久久色激情一区二区三区| 日韩人妻网站| 999 久久久| 99re这里只有| 欧美性暴力| 日韩精品在线视频,日韩精品……| 久久国产乱子伦精品免费女,网站| 超碰91在线| 国产强奸乱伦xd| 深夜国产一区二区三区在线看| 天天躁日日躁xxxxx| 国产精品久久久久综合| 97精品综合| 欧美少妇第一页| 熟女露脸激情自拍视频| 久久日韩肥臀| 伊人操你| 欧美色婷婷| 黑丝日韩av丝袜av| 色97欧美| 国内偷自视频区视频综合| 久久久免费一级黄片| 日韩乱码av| 自拍第一页| 乱伦色图网址是多少| 丁香婷婷久久 | www.久久爱| 99黄页网站| 国产91福利小视频在线观看| 免费A V在线播放| 肉丝网站91| 999综合网| 色激情五月天| 热久久无毒不卡| 天天干人人干天天日97| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 福利在线观看一区二区| 色哟哟-国产专区| 91色插| 精品人妻伦一二三区久久| 羞答答AV中文字| 成人av免费观看| 97操在线| 无码137片内射在线影院| 激情五月天丁香| 欧美色图99| 色综合尤物| 亚洲,欧美,综合网| 岛国视频一二三区| 日韩精品操少妇| 老熟女乱伦一区| 欧洲Au麻豆| se吧提供91精品国产91久久久久久| 亚洲精品视频在线播放| 密臀国产在线| 99性爱视频| 91精品91久久久中77777| 92福利社视频| 亚洲国产精品无码AV久久| 青青草原人妻| 永久免费av无码网站国产app| 天天干天天日天天射黄色大片| 国产毛片毛片4p懂色| 综合久欧洲| 亚洲黄色网址视频| KK色在线影院| 肥臀熟女福利视频一区二区| 亚洲麻豆av一区二区| 色天堂综合| 色5月婷婷| 操操操五月天婷婷丁香影院| 夜夜骑操视频| 亚洲超碰在线| 中文字幕精品免费一区二区| 欧美黑人168页欧美黑人167| 婷婷在线视频| 久久久精品中文字幕爱豆| 蜜臀av网址| 中文字幕一区二区三区蜜臀| 丰满人妻一区二区三区四区| 精品人妻1区| 91九九九馒头| 亚洲丝袜色| 蜜臀久久99精品久久久老,,| 一区二区三区精品视频| 人妻81p| 国产精品极品美女视频| 精品成人亚洲午夜电影| 精品对白久久不卡| 色网在线| 久日91在线| 九九英色视频| 综合网欧| 久久天天躁日日躁狠狠躁 | 亚洲一区二区中文字幕|