色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合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
返回資訊列表
青青伊人这里只有精品| 亚洲黄色AV电影| 日韩成人午夜精品久久高潮| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 国产亚洲精品av一区| 日韩乱码av| 欧美熟女激情| 草草草视频在线免费看| 亚洲色图大香| 羞答答AV中文字| 亚洲蜜桃V妇女| 亚洲的天堂网| 屌逼麻豆| 大香蕉www.超碰| 美女淫穴| 97精品综合久久| 久久9精品| 熟妇视频一区二区三区在线观看| 这里只有精品视频在线| 欧美日韩小说| 97色97好| 99久久久久| 中国人高清www色视频免费| 色婷婷狠狠18禁| 久久国产视频专区一二三| 国产青视频| 丰满人妻一区二区三区| 亚州再线| 99久久婷婷国产综合精品草原| 色综91| 91日韩国产欧美亚洲另类精盘州至城都| 欧美国产有色电影| 亚洲精品乱码久久久久久蜜桃麻豆| 妇人噜噜| WWW4虎| 93人人操人人| 97免费在线| 婷婷综合网站| 看黑丝美女操逼青青网站| 久久久久亚洲三级电影| 美女天天干| 在线视频一区二区传媒| 97综合在线观看| av天堂手机版追回| 国产人伦精品一区二区三区| 欧美熟妇成人一区二区| 男人天堂资源| 亚洲另类色综合网站| 丁香六月激情综合| 午夜大香蕉| 97人妻免费中文字幕| 久操91视频| 九久9精品| 香蕉大久久久| 亚洲欧美校园| 牛黄色久午久| 亚州色站 日韩电影| 日韩乱伦影音先锋| 全球成人中文在线| wwwss在线观看| 亚洲蜜桃V妇女| 性开放中文AV高清无码免费看| 超碰免费人妻人人| 国产成人精品必看| 东京热男人的天堂精品| 中文字幕一区日韩精| 日韩性爱1级片视频| 日本操逼aaaaa| 日韩在线欧美精品一区二区| 国产家庭乱伦性爱视频| 在线观看AV片| 蜜臀少妇一区二区| ss久久| 夜夜嗷嗷一区二区| 日韩精品国产一区二区| 欧美综合第一页| 日本欧美中文字幕| 日韩精品国产一区二区| 99久久婷婷丁香| 中文字幕123| 欧洲色色| 黄日韩| 在线五区| 91久久免费视频互動交流| 国产精选视频| 欧美黑人与女人91| 国产一级不卡在线观看| 东京热免费视频| 亚洲情色五月天| 亚洲s色图| 亚洲av资源| 欧美A片中文字幕| 九九人人操| 国产熟妇一区二区| 91动漫操逼视频| 久久久久精| 首页中文字幕中文字幕免费| 丰满少妇一区二区三区免费看| 日韩在线欧美精品一区二区| 九九综合九九综合| 亚洲精品骚逼| 91精品91久久久久77777俄罗斯老妇姓x| 亚洲欧美情色| 免费啪啪一级视频| 亚洲精品成人动漫在线| 一区二区三区四区五区高清无码永久视频 | 一起草三级AV电影在线观看| 九九性爱网| 亚洲999综合| 国产精品嫩草影院午夜两性| 欧美日韩美女精品久草一区二区三区 | 久久久久久久久久久久黄色| 亚洲欧美日韩中文播放| www四虎| 成人午夜高潮av猛片| 五月婷婷综合网| 欧美精品不卡一二三四在线91| 亚洲精品中文字幕一区在线视频| 很狠操| 骚逼高潮久久精品| 国内精品嫩模A∨私拍小视频| 日本福利二区视频| 9久久精品| 中文字幕 一区二区 亚洲无码| 欧美第一页| 五月天综合网| 超碰在线国产| 男女性感激情网站| 97色在线视频| av久日| 亚洲成av人片色午夜乱码| 老熟妇91| 理论久久婷婷网8| 91啪9色| 99久久婷婷丁香| 亚洲色图日韩丝袜制服一区二区五月在线| 99RE在线视频精品,这里只有精品| 隔壁邻居波多野结衣中文字幕| 97久久久久久久久久| 91精品国产高清久久久久久,亚洲成人| 中字幕人妻一区二区三区| 韩日巨乳美女免费视频在线观看| 精品女人999| 亚洲中文日韩欧美大香蕉视频| 五月丁香社区婷婷日韩欧美精品影院| 激情小说亚洲| 超碰2017| 国产精品点击进入在线影院高清 | 日本一本道A级黄色毛片试看60分钟| 91爱剪切久久| 欧美97色| 久久精品一区二区一8| 人妻免费观看| 97精品在线| 白丝被操91| 综合五月天| 极品色电影院| 日本顶级天天操狠狠操夜夜操中文字幕| 五月天激情四射| 欧美自拍偷拍免费观看| 欧美精品久久久久久久久88| 新婚人妻扶着粗大强行坐下| 8050无码八戒| 精品人人插人人操| 一起草av| 欧美国产一区二区三区麻豆传媒| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 人人看人人爰人人操| 碰碰97| 九九九精品美女| 男人天堂新在线| 少妇精品久久| 在线一道啪| 五月丁香色情| 久久久久9999精品九九九| 日本天堂在线播放| 操逼日批| 大香蕉男女超碰精品在线| 人人妻人人操人人乐| 性性久久| 婷婷久月| 国产福利第一视频| 久久久久9999妇女| 熟妇人妻一二三区免费| 涩综合导航| www.色婷婷色综合| 97超碰人人操人人操| 五月丁香拍拍激情综合三级| 国产精品一二三免费网站| 国产精品永久免费10000| 北约熟女超碰| 青青草十区九区爱夜| 亚洲色图片区| 无码伊人久久大杳蕉中文无码| 久久内射| 97在线观看| 操逼无码一区| 九九英色视频| 一本色道无码DVD中文字幕| 无码聚合| 91色欧美| 人妻加勒比东京热| 亚洲日韩国产精品| 老鸭窝亚洲毛片| 插插综合网天天影视网| 99无码精品| 精品久久久久瑟瑟| AAAA级日本片免费视频| 久久中出在线| a天堂视频| 亚洲999综合| 在线无码网站| 国产免费一区| 中文字幕日本久久| 亚洲高清视频在线免费观看| 精品人妻免费观看| 蜜桃传媒一区二区亚洲| 亚洲经典啪啪| 亚欧无码在线| 激情小说成人日本无码一| 国产日韩无码一区二区三区久久区| 欧美大的香蕉有线电视视频| 国产色产精品在线观看| 好色综合| 色y情视频免费看| A级片一区| 国产无马在线| 日韩一级片在线看| 久久人妻丝袜一区二区三| 9 9精品一区二区三区| 亚洲AV小说| 亚洲精品久| 一道本东京热加勒比一区二区三区| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 97国产人人| 韩美日操逼| 亚洲图片激情综合另类| a级成人毛片免费视频高清| 这里只有精品视频在线观看麻豆| 日本伦理一区二区| 日韩人妻精品中文字幕| 五月天人妻综合| 97亚洲精品| 老熟女乱伦片| 屌色在线97视频| 亚洲、日韩、综合、另类| 亚洲熟妇丝袜在线观看| 久久精品99| 清纯唯美亚洲综合| 激情无码日韩| 澳门成人网站久国产日韩| 久久久九九九九| 日韩无码服务区| 好吊色综合| 成人无遮挡毛片免费看| 九九av| 久久久久久久久久久久黄色| 亚洲欧美色图| 国产免费永久精品无码| 91女网站| 久久国产精品一区二区| 国产成人精品无码久久| 少妇 综合| 超碰到97情色| 吖在线不卡一区二区国产剧情| 欧美日韩 强奸乱伦| 好淫网一二三视区| 久久香蕉国产线看观看亚洲女人 | 天天干天天插| 精吧天堂| 国产欧美日韩一区二区三区| 性爱欧美五月| 在线中文字幕| 一区二区激情国产熟女| 后入福利视频| 中字幕人妻一区二区三区| 99视频只有精品| 综合久久99亚洲人妻中文在线| 99re98| 欧美一级黄色18片免费看| 欧美天天谢综合网| 日韩免费在线观看不卡| 91熟女熟妇视频网站| 欲色啪| 国产精品久久久无码aV去| 91久久久久免| 国产综合久| 手机看av网站在线看| 亚洲人91| 亚洲欧美在线观看2021| 蜜桃丰满熟妇av无码区不卡| 三级激情网站| 亚洲污一污二| 高清无码 国产精品| 亚洲熟女一区| 国产67194| 日本欧美不卡| 天天影视综合网欧美精品| 4tube欧美女厕所| 91足交| 岛国999| 亚洲性爱免费电影| 大但人体久久久久| 久久久久国产无av| 四虎影视欧美| 亚洲最大黄网| 午夜一区二区三区国产| 东京热不卡视频| 欧美 日韩 亚洲 春色| 色九九九综合| 大伊香蕉在线视频免费| 啊啊啊好大好深| 九九热精品| 国产白丝AV| 欧美综合站| 超碰免费97| 日本精品88888888| 乳欲人妻办公室奶水| 亚洲一区制服诱惑| 综合五月婷婷| 成人a v在线播放免费| 综合天天网| av日韩在线观看电影| 日韩电影中文字幕| 天天操av懂色| Blackedraw视频一区二区| 激情文学小说一区二区| 色性综合| 无码视频黄色网战| 日韩性爱长视频免费| 亚洲免费97免费| 午夜福利免费精品视频| 免费中文在线| 一级免费啪啪片| 天天操妹子| 99综合自拍| 日韩一性一交一A片俄罗斯| 精品二区三四区五电影 | 激情视屏国产乱伦强奸| 91性网| 四虎视频在线观看| 破苞ⅩXXX性无码动漫无码| 成人怡红院| 精品久久大胆人体| 在线观看一卡二卡| 亚洲一区二区精品福利| 激情小说图片亚洲首页| 9118禁| 激情视频一二三| 校园春色 男人天堂| 综合操逼| 尤物av网站免费在线播放| 亚洲在钱| 久草草一二三四区久久| 欧美成熟性爱精品| 欧美性爱伊人| 探花视频免费观看国产专区| 一区二区三区四区在线不卡| 日韩久久超碰色| 乱老女人一区二区视频| 欧美经典一区二区三区| 国产无码精品久久久久久| 干妹子| 久9久9精品| 久久秀这里有精品| 发朗少妇买婬全视频中文| 2018天天干在线视频| 亚洲欧美另类激情小说| 欧美精品日韩一区二区| 天天视频综合在线观看视频| 国产亚洲女v在线观看| 亚洲综合九九| 色九久| 999熟女精品| 欧美猛交黑寡妇中文字幕| 欧美大码在线视频| 久久超碰久| 婷婷99狠狠躁天天躁| 久草福利在线资源站| 精品久久久久久AV无码| 台湾一区国产高清在线| 欧美日韩黄片精品在线| 日本高清视频xxxx| 亚洲精品国产无码高清| 亚洲无无码αⅴ每日更新| 2024年最新色情网站在线观看| 久区视频| 啊啊啊啊好疼| 亚洲一区二区中文字幕| 人妻无码久久一区二区三区免费| 久久一二三四五六七八九区区| 中文字幕天天天天天| 蜜臀久久99精品久久久久久久久| 啊啊啊不要好疼视频| 久久婷婷五月综合| 婷婷伊人綜合中文字幕| 久久ww| 色噜噜婷婷| 久久草大香蕉| 色婷婷久久| 久草国产在线视频| 污污污8888| 美女91在线观看| 中文字幕亚洲欧美在线不卡| 中文字幕精品乱码| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 91黑人狂躁丰满熟妇| 日夜伊人网| 亚洲国产综合图区中文字幕| 日本视频在线中文字幕| 91视频精品| 日韩欧美视频青青| 丰满人妻av一区二区三区| 午夜福利1区2区3区| 亚洲天堂2020| 亚洲日韩av专区无码| 日韩成人在线性爱视频| 91爆操视频| 丝袜熟女一区二区三区| 天天干,夜夜爽| 大香蕉在线86| 国产99999久久精品| 97色欧洲| 九月激情婷婷| 婷婷五月天影院| 国产精品久久久亚洲一区| 色妺妺在线视频| 久久超碰98| 东京热,男人的天堂| 少妇熟女一区二区三区| 亚洲AV噜噜狠狠网址蜜桃动漫| 日韩精品黄片免费观看| 欧美日韩超碰在线| 青青草白白色| 天天做天天爱| 国产人伦a片信息免费片| 国产又粗又长又爽又色| 成人AV在线电影| 九九九综合精品| 一区中文字幕二区日韩| 天天综合网亚洲综合网| 啊啊啊啊操死我| 欧美巨大性舒爽顶到了| 日韩一级免费性爱| AV在线资源| 亚州综合网| 少妇高潮特黄A片| 私色综合网| 日韩精品人妻中文字有码在线| 亚州男人天堂| 日韩性爱播放| 伊人精品视频| 久久精品久久久久久久久| 亚洲色啪| 久草线上视频免费看| 亚洲色图综合| 精品一区二区国产日韩| 日韩人妻 中文字幕| 久久久夜夜嗨免费视频| 久久夜精品一区二区三区| 99夜夜操| 国产亚洲人妻综合日韩 久久| 青青草乱入乱欲视频在线观看| 97这里有精品| 色婷久久| 亚洲综人| 久久av一级av少妇av高潮| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 色好看av| 91精品人妻一区二区三区蜜桃| 亚洲成a人片在线观看中文!!!| 刺激性视频黄页| 2020国产精品| 日韩无码人妻中字久久三区四区| 国产探花精品在线| 亚洲激情色片| www.99中文字幕| 久久色激情一区二区三区| 唯美清纯 妖精视频| 国产亚州高清国产拍精| 精品十八在线观看| 蜜乳av首页| 日韩干B| 欧美性爱系列| 亚洲精品黄码久久久久| 成人 日韩欧美一区| 青青五月天| 国产成人网| 深喉吞精| 亚洲性爱高潮影院| 人人看人人插| 久久精品99久久久久久| 国产精品免费美女视频| 东京热天堂网| 少妇同性| 综合操逼| 一区二区三区麻豆| 97精品国产97久久久久久免费| 亚洲资源站| 熟啊v色欧美热| 亚洲一曲日韩精品| 天天干人妻视频| 加勒比大香蕉视频在线| 超碰97人人cao| 日日噜噜夜夜久久亚洲一区二区| 亚洲第一成人影院色播| 欧美男人天堂| 婷婷五月天无码 | 四季AV一区二区凹凸精品小说| 国产一进一出视频网站| 极品美女嘿咻| 久草婷婷| 中文字幕在线高清男人的天堂| 青青草依人大香蕉| 亚洲美女色图| 婷婷久久综合| 亚洲色欲天天天堂色欲网女| 亚洲操操操无码| 香一区二区三区| 国产一区二区a毛片| 国产精品农村妇女| 99国产精品免费| 91在线丝袜| 五月天色图| 天天干人人干天天日97| 中国特猛少妇色xxx| 亚洲 欧美 另类 综合 偷拍| 欧美东京热精品A∨| 欧美色综合网| 一区二区三区在线日韩影院观看| 天天操女人| 日韩乱伦影音先锋| www.99色| 四方色播| 91亚洲丝袜熟女| 日韩激情视频| 一二三区在线| 麻豆啪啪啪视频| 在线综合 亚洲 欧美中文字幕| 久久老熟女| 欧美视频激情久久久久久| 91狠婷| 麻豆啪啪啪视频| 极品综合| 一区二区视频在看| 亚洲熟女偷拍在线观看| 天天夜夜久久| 色综合98| 97舔舔| 国内毛片免费h片在线| 17c在线成人免费A片观看| 亚洲本色精品一区二区久久| 亚洲春色欧美| 加勒比av网| 日韩不卡一二三四| 91强在线播放| 在线黄色污污网站| 久久深夜无码| 久久久穴999| 91久久久久久久久久久| 久久久久日本视| 农村妇女一级二级三级视频| 91久久久久久久久18| 日本午夜精品理论片A级APP发布| 久久精品中文字幕无码l| 午夜精品久久久久久久久久蜜桃| 中文字幕日韩专区精品系列 | 国产Av超碰| 六月丁操逼| 五月久久HDAV| 另类天堂| 99国内精品| 97精品国产97久久久久久户外免费| 综合久久六月久久婷婷| 亚洲精品日日夜夜52| 伊人久久大香线蕉无码| 性爱视频无打码在线观看| 日本东京热加勒比久久| 日韩国产在线观看av| 日韩一性一交一A片俄罗斯 | 欧美亚洲高清不卡| 五月开心久久AV官网| 欧美 牲| 五月天欧美色图| 少好三P| 午夜亚洲| 啊啊啊啊啊啊啊啊视频| 色噜噜日韩精品| 蜜臀久久99精品久久久电影| 99久久无码| 五月天亚洲色图| 国产综合色精品在线观看| 一级做a爰片性色毛片久久| 国产AV毛片| 思思热免费视频观看| 国产免费久久久久| 国产有码一区| 色综合99999| 变态另类专区| 美女操逼A A| 青青操综合网| 99色视频| 蜜桃丰满熟妇av无码区不卡| 亚洲欧美校园| 国产精品4p在线观看| 国产精品无码AV网站| 五月天综合在线| 肥臀熟女福利视频一区二区| 超碰 欧美| 亚洲天堂男人| 无码国产Av| 色五月婷婷麻豆在| 很很很很操| 91网站在线播放| 国产精品黑人一区二区三区| 黄色大香焦1级‘′‘| 俺去久久| 白嫩妹子国产骚| 女性喷水高潮在线观看| 97福利视频| 国产农村妇女精品1区二区| 狠狠97| 欧美aaaaaaa| 偷拍欧美综合| 伊人在线大香蕉视频久久| 国产91亚洲精品一区二区三区| 色久桃花影院在线观看| 一级免费啪啪片| 色综合99999| 日日超碰亚洲| 国产精品一二三区福利| 色亚州人久干视频在线观看免费版| 丝袜美腿av女优在线| 极品尤物在线观看| 熟妇国产免费一区| 久久久久久久九九九九九九| 亚洲 欧美都市激情| 欧美视频一区二区三区| 国产深喉视频一区二区| 狠狠爱综合网| 成人九九| 色情五月婷婷| 加勒比色99999| 久久激情亚洲精品无码?V| 求求你操操我| 亚洲精品一区二区三区新线路| 久久久天美| 色青青久久影视| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 99国产天美| 大香蕉日亚洲日本亚大| 免费操逼视频下载| 97亚洲欧美日韩| 超碰在线人人射| 青青11操操操操操操操操| 99视频自拍区| 久/久精品99看9| 破处bbq| 性色av蜜臀av色欲aV| 91路www| 日本精品无码三级网站| 极品后入免费视频| 99久久婷婷丁香| 欧美综合制服在线| www.伪伪| 久久天堂网| 曰韩成人免费视频| 不卡视频一区蜜桃视频| 99热这里只有精品8| 96麻豆精品一区二区三区| 久久精精区一区二区一蜜桃一区二区| 久久伊人影院| 国产最新AV| 影音先锋乱伦资源| 99热日| www.yw尤物| 亚洲精品欧洲色| 欧美日韩人妻婷婷一区| 日本高清电影欧美色图| 亚洲情色 欧美| 精品久久久久,69国产成人精| 欧美日韩中文字幕人妻| 你操综合| 国产一进一出视频网站| 国产精品在线一区二区| 色色婷| 日韩无码极品| 另类av天堂| 天天天天天天天天天天干美女| 我爱搞逼综合网| 久久精品美女一区| 国产肏逼网站| 国产第11页| 95人妻爽爽人人做人人澡| 91丝袜在线观看| 黄色在线网站| 一色网男人的天堂| 美女自卫慰黄网站免费| 电家庭影院午夜69久久夜色精品国产69乱 | 日本色日夜干| 欧美五区| 久久av无码| 黑丝少妇在线观看| 久久精品28| www.色五月| 国产一级137片内射麻豆| 国产欧洲精品亚洲午夜拍精品| 亚洲情色在线| 国产成人主播| 热热色综合网| 亚洲狠狠入| 国语对白露脸XXXXXX| 国产极品美女高潮无套在线观看 | 天堂无码精品国产久| 婷婷香网站| 天天综合网~91综合网| 欧美综合天天| 亚洲中文字幕av| 色av中文字| 青操影院| 女人高潮大叫一级毛片| 中日992视频| 国产AV高清AV无码| 91制服丝袜| 成年男人的天堂| 成人av影院在线观看| 很很很很操| 成人免费不卡在线视频| 国产精品96久久久久久| 性色中出| 999精品国产高清一区二区| 98福利在线视频| 中美日韩毛片| 蜜乳Av成人片网站| 亚洲色性| 天天舔九色婷婷| 亚洲 无码 偷拍| 视频一区二区免费在线| 香港日本韩国人妇99www.wccm20| 成人日韩3| 九九九九亚洲| 色色综合97| 嗯嗯嗯啊啊啊在线免费观看| 日本一久是| 久热影视| WWW啪啪的com| 亚洲drav色图| 欧美曰韩国产精品| 又大又白奶子| 丁香激情五月| 丁香五月影院| 色小视频蜜乳| 亚洲欧洲综合成人av一区| 中亚黄色三级大片| 5252色欧美在线| 精品精品精品| 激情六月婷婷| 日本久久99| 亚洲精品 欧美精品| 国产熟女少妇一区| 久久婷色| 亚洲图片欧美91N| 99热在线播放| 99这里都是精品| 99热精品在线播放| 日韩熟妇二区| 欧美日韩亚洲天堂网| 老熟女91av| 天天享受天天看| 青青草色插素人| 99re在线视频国产| 久久久涩| 男人干美女| 亚洲欧美精品国产一区二区| 不卡超碰护士AV在线免费播放| 色色色欧美| 精精夜夜| 日本五十路在线| 好一吊区二区| 综合网 欧美| 精品国产乱码| 极品色www影院| 亚洲.欧美.丝袜.中文.综合| 玖玖人人爱| 中文字幕天天操| 午夜男人的天堂| 欧美A片中文字幕| 美女午夜福利免费视频| 色99视频| 91狠狠综| 永久免费发布性爱网| 婷婷五月天在线观看| 亚州中文字幕超碰97| 亚洲色香| 土豪酒店各种姿势玩弄极品幼稚| 操熟女91| 嫩草影院在线观看精品| 动漫片子网站3黄| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲综合首页| 九九亚洲| 日本2020一区二区| 偷拍三区| 丁香五月天婷婷姐| 97久久超碰亚洲| 日本免费专区| 日韩精品人妻中文字幕有码午| 欧美v日韩v亚洲v最新在线| 福利视频香蕉免费一区二区在线| 天天色综亚洲91污| 日韩精品怡红院| 伊人黄色片| 蜜臀久久久国产| 欧美男人天堂| 超碰97精品在线| 国产精品96| 热久久91婷婷| 国产综合在线视频网站| 啊啊啊啊啊在线视频| 人妻干天天| 免费成人在线熟妇网| 亚洲二区精品在线观看| 夜夜操夜夜高潮夜夜爽国产精品区| 最新日产中文在线麻豆| 台湾佬中文娱乐网久久久久久久久久com | 成人青青草原伊人| 免费一级视频特黄色大片| 欧美青青视频| 另类图片综合| 日本不卡二区| 嗯啊不要在线观看嗯啊| 亚洲综合99999| 亚洲加勒比| 91蜜臀熟女| 九九九偷拍| 国产精品不卡一区二区电影| 91亚洲精品青草| 91美女丝袜诱惑视频| 一区二区不卡| 日韩操逼HD| 情侣操 逼视频99| 日产欧美电影一区二区三区| 免费农村成人少妇人妻Aa一区二区视频| 亚洲男人天堂网站| 天堂在线一区二区| 加勒比大香蕉视频在线| 911av网站免费观看| 国产三级片在线观看| 亚洲免费精品一区| 亚洲成人综合在线| 一级黄色性爱A级片| 日韩欧美亚洲自拍偷拍| 91精品国产长腿丝袜美女| 好看的91视频| 91久久久久久久久久久| 亚洲制服欧美另类内射| 91性高朝久久久久久久久| 欧美偷拍| 丝袜 中出 制服 人妻 美腿 中文字幕| 求求你操操我| 96免费视频在线| 男人的天堂亚洲| 97综合在线| 免费视频a级毛片免费视频| 综合五月婷婷亚洲一区| 精品国产91av一区二区三区| 强奸抽插av| 超碰色男人操熟女| 99这里只有精品国产| 麻豆国产视频精品观看| 一本久道在线综合视频| 欧美一级黄片视频在线| 亚州一区二区成人片免费| 综合操逼| 色婷婷五月综合激情中文字幕| 欧美性爱www免费版| 国产精品成人无码av无码免费| 无遮挡h肉动漫在线观看| 欧美性生活综合| 夜夜夜久久| 色九九综合AV| 精品国产乱码久久久久久蜜臀| 欧美国产精品久久九九| 国产日产精品久久快鸭的功能介绍| 91新在线欧美| 色婷婷久久综合超碰| 久久一区二区蜜桃| 欧美爱三级日韩久久| 69少妇一区二区| 欧美aa一级片| 夜夜操av亚洲一区二区| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 2017人人操,人人摸| 国产做?爰片久久毛片?片美国| 蜜桃色色网站视频三区| 人妻喷水| 激情网色| 极品粉嫩少妇视频| 精品一区二区三区丰满熟女-亚洲欧美一区| 亚洲欧洲中文日韩女优乱码| 中文字幕成人| 大胆91| 黑丝制服中文字幕| 色哟哟511老熟女| 成人精品视频一区二区| 中文一区二区三区影院| 柠檬AV导航| 蜜臀久久99'精品久久久| 亚洲一区二区三区播放在线| 巨乳特殊服务按摩| 99操| 青青草密桃在线播放| 久久久影院| 亚洲综合 欧美| 九九九九九九免费视频| japan日本高清乱xxxx| 嗯阿好爽好紧| 亚洲无码超碰免费| 久久免费中文字幕在线观看| 五月综合色| 欧洲色综合| 丁香六月啪| 亚洲在线91| julia在线观看久久| 99人妻| 老熟女熟妇| 国产大陆天天艹| 日本三级韩国三级美三级91| 东北丰满熟女国产一区| 插入综合网| 粉嫩av平台| 老司机午夜精品福利视频一区二区| 欧美系列在线一区二区| 久久久久久久久久久精| 中文字幕jul-617人妻熟女| 天天欧美| 伊人丝袜美腿高跟在线观看高清| 91成人高清在线观看| 99色在线| 欧美日韩国产中文超碰| 人妻加勒比东京热| 欧亚日韩一区在线| 日本孕妇孕交| 免费的av网| 一区二区三区精品久久| 日日超碰亚洲| 天天夜夜久久| 超碰久久性爱| 国产精品第一区第一页| 欧美色综合网| 极品色电影院| 在线综合 亚洲 欧美中文字幕 | 伊人热综合| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 吖在线不卡一区二区国产剧情| 91碰碰| 熟女高潮合集-永久久久-成人AV| 日韩免费中文字幕视频| 国产suv精品一区二六| 大吊色| 精品久一区免费| 五月婷色| 麻豆这里只有精品| 乱伦3P视频| 久久久999日本大片| 欧美97av| 亚洲欧美精品久| 亚洲 欧美日韩 另类| 欧美性爱无码一区二区三区| 男人的天堂 在线一区| henhen91| 男人的天堂无码| 久久人妻一区二区三区高清| 欧美色图天堂在线| 久久精品亚洲婷婷| 动漫片子网站3黄| 久99| 久久亚洲人妻| 欧美91网站| 国产精品3| 欧美天天综合在线| 欧美一区二区三区不卡高清视频| 中文字幕国产在线天堂| 日本欧美韩国国产在线| 久久久久久国产无码精品| 国产家庭乱伦表演| 五月婷婷爱六月丁香色| AV色天香在线| 天天内射| 男人的天堂VA| 亲子敌伦对白在线播放| 少妇一区二区三区高速| 高清国产av无码| 第二页中文字幕| 中文字幕女同在线| 蜜臀99久久精品| 国产无马在线| 93人人操人人| 色妹子A V| 亚洲在钱| 视频国产成人精品日本亚洲18| 日韩免费高清大片在线| 99热欧美| 精彩久久中文| 大屁股人妻女教师撅着屁股| 日韩女模中文造逼| 激情视频一二三| 91 欧美| 五月综合久久| 天天影视色香色欲| 婷婷五月天色网| AV天堂国产| www.色婷婷色综合| 91欧美丝袜| 亚洲无码国产探花在线观看| 九九Av| 草B在线| 午夜精品久久久久久久99蜜桃一| 大吊色| 香蕉视频欧美一卡二卡| 国产精品蜜乳AV| 丝袜狠狠草尤物 91| 26uuu久久| 五月丁香激情综合网| 熟女人妻一区二区三区免费看 | 97精品国产精品免费观看| 日韩欧美久久婷婷网站| 在线观看精品国产免费| 亚洲在钱| hd成人一区二区在线| 日韩欧美蜜桃精品久久中文字幕久久| 亚洲国产高清福利视频| 蜜屁Av| 日韩欧美性吧婷婷乱伦大香蕉 | 九九久久久久久爱| 日本乱人伦片中文三区| 天天久久| 5月婷婷6月六月丁香| 午夜啊啊| 九九热精品| 天天摸天天插天天日| 好吊色青靑草| 波多野结衣被操50分钟免费视频| 欧美日韩*字幕一区| 超碰成人最新最好看| 亚洲 欧美 日韩另类 麻豆| 岛国在线一区二区三区| 亚洲成人AB| 歐美一級亂黃99在綫精品| 亚洲无码免费看| 亚洲一区二区AV| 美国日韩黄片| 夜夜嗨一区二区三区三州加勒比 | 日韩无码黄色片| 亚洲学生妹高清av| 日韩强奸av| 色yeye成人免费视频| 日韩黄片视频试看| 操逼逼无码| 99热久| 久婷婷一区| 久9爱精品| 加勒比无码毛片| 风韵犹存大大大大香蕉| 国产精品久久久久久久久久久久久久| 久久久久亚洲Av无码专区老牛影视| 丁香九月婷婷| 久久久久久亚洲中文| 十八岁啪啪视频免费看| 亚洲最大网站av| 99自拍B亚洲| 精品少妇99| 亚洲图片色图欧美另类| 中文字幕五月婷婷免费| 久视频在线观看| 欧美精品亚洲精品日韩传电影| 啊啊啊爽爽| 色牛牛AV| 91精产一区二区三区| 东北毛片| 中文字幕在线观看丝袜| 后入式999| 久久精品国产亚洲AV片多多| 91天美传媒在线观看| 岛国爱情动作片在国产AV无码专区亚洲AV漫画| 日韩Va亚洲va欧美Ⅴa久久| 91暧暧| 天天综合欧美| 婷婷久久综合| 91国产丝袜白虎| 日本高清一区二区在线| 亚洲宗合网| 岛国视频免费在线观看| 国产又大又粗又长视频在线| 人妻少妇久久中文字幕一区二区 麻豆| 97最新在线播放视频| 97天天在线| 欧美黄片欧美黄片xxx| 嗯嗯啊啊的视频| 亚洲 欧美 手机在线观看| nuu12国产麻豆精品| 人人射人人操人人摸| 免费一级a毛片久久久久久鸭绿欲| 97超碰色屌| 亚州免费啪啪视频| 日日碰视频网| 97久久精品亚洲| wwwxxx日本爽| 美女骚尻视频| 天美麻豆精品视频99| 久久综合资源一区二区| 国产精品禁久久久精品| 麻豆久久久一区二区| 国产一国产一级毛片古装| 美女黑人91神马| 久久婷婷五月| 男人天堂网址| 国色天香av| 三级片网站在线播放| 男人天堂网站| 成人在线午夜视频一区| 欧美日韩999| 国产乱伦搜索结果91P| 天天舔九色婷婷| 精品国产乱码| 青青草好吊色| 麻豆AV96熟妇人妻| 欧美日韩 强奸乱伦| 蜜臀99久久国产| 日韩本不卡视频在线观看| av婷婷色婷婷色六月| 欧美爆乳精品一区二区| 久久国产精品m码| 久久久精品一区二区| 麻豆九九九| 日韩在线AB| 江都AV在线| 伊人久久婷婷| 久久鲁干| 欧美天天综合网| 日本媚薬中文字幕在线| 试看60秒| 9999久久久久| 天海翼久久| 色超碰综合| 欧美78| 亚洲激情欧美色图| 久久伊人东京热| 久久后入制服| 天天综合91入口| 999国产精品999久久久久久| 可乐操亚洲蜜911| 日韩欧视频| 欧美色图91| 日韩三级伊人| 97超碰色色| 色噜噜狠狠色综无码久久合欧美| 午夜在线播放| 欧美性爱第一页久久| A片大香蕉在线|