期末考綱拆解:考點(diǎn)地圖與簡(jiǎn)答題模板梳理)
簡(jiǎn)介四川大學(xué)網(wǎng)安學(xué)院2023年操作系統(tǒng)期末考綱/題庫依據(jù)學(xué)院操作系統(tǒng)課程要點(diǎn)整理而成面向該校網(wǎng)安方向備考學(xué)生也適合其他高校復(fù)習(xí)操作系統(tǒng)基礎(chǔ)的人群。資源為一個(gè)PDF文件壓縮包約1.57MB內(nèi)容以問答形式系統(tǒng)梳理了主要考點(diǎn)從操作系統(tǒng)的基本概念定義、與一般程序系統(tǒng)的區(qū)別、功能與目標(biāo)、構(gòu)成模塊、發(fā)展階段與三個(gè)里程碑到分時(shí)與批處理系統(tǒng)背景、異常中斷的作用、對(duì)OS是虛擬機(jī)的理解再到進(jìn)程管理中的硬件支持、進(jìn)程與程序的關(guān)系、進(jìn)程控制塊PCB的作用、程序到進(jìn)程的完整過程以及目錄中涉及的進(jìn)程狀態(tài)轉(zhuǎn)換、fork()創(chuàng)建進(jìn)程等內(nèi)容。目前已有149人學(xué)習(xí)下載對(duì)于需要快速過一遍操作系統(tǒng)主干知識(shí)、理清易混淆概念的同學(xué)是一份實(shí)用的考前復(fù)習(xí)資料。1. 操作系統(tǒng)期末考綱拆解先把八章考點(diǎn)壓成一張可背誦的答題地圖期末周最怕的不是題難而是不知道考什么。這份 2023 年某高校網(wǎng)安學(xué)院的操作系統(tǒng)期末考綱/題庫把教材第二到第十二章的知識(shí)點(diǎn)按章節(jié)拆成了五十多個(gè)簡(jiǎn)答考點(diǎn)——從OS 是一個(gè)虛擬機(jī)這種概念理解到 page fault 的五步處理流程再到段表頁表的軟硬件邊界基本覆蓋了閉卷考試?yán)锲叱梢陨系奈淖诸}和畫圖題。它不是官方真題集更像一份按講義整理的命題方向清單每章標(biāo)了哪些要背概念、哪些要畫五狀態(tài)圖、哪些要對(duì)比用戶級(jí)線程與內(nèi)核級(jí)線程。適合兩類人一是網(wǎng)安方向正在備考操作系統(tǒng)期末的學(xué)生二是在補(bǔ) OS 基礎(chǔ)、想快速建立知識(shí)框架的自學(xué)者。下文我會(huì)把考綱里最容易踩坑的考點(diǎn)、復(fù)習(xí)順序和答題模板逐個(gè)拆開講。2. 考綱背后的命題邏輯先搞清楚八章里哪些考點(diǎn)值得背這份考綱最值錢的地方不是答案而是它把老師出題的偏好暴露了出來。通讀一遍你會(huì)發(fā)現(xiàn)第二章到第六章全是概念與辨析第七章第八章則是存儲(chǔ)管理的演進(jìn)主線和流程題第九到第十二章被壓縮成長(zhǎng)程/中程/短程調(diào)度、I/O buffer 和文件系統(tǒng)層次圖。如果按教材章節(jié)順序硬啃效率很低按考綱的題型密度來排復(fù)習(xí)順序能省下不少時(shí)間。2.1 第二章到第六章概念題的主戰(zhàn)場(chǎng)第二章考的是操作系統(tǒng)的定位。這里的高頻考點(diǎn)有三個(gè)操作系統(tǒng)的概念管理計(jì)算機(jī)硬件與軟件資源的程序、功能資源管理者、用戶接口、資源抽象和目標(biāo)有效性、方便性、可擴(kuò)充性、開放性。注意考綱里特別問了操作系統(tǒng)與一般程序系統(tǒng)的區(qū)別標(biāo)準(zhǔn)答案是三條操作系統(tǒng)是由處理器執(zhí)行的一段程序它會(huì)頻繁釋放控制且必須依賴處理器恢復(fù)控制它是控制應(yīng)用程序執(zhí)行的程序。這一題幾乎年年以簡(jiǎn)答或名詞解釋出現(xiàn)答題時(shí)最好把接口資源管理程序三個(gè)關(guān)鍵詞都寫全缺一個(gè)就可能被扣半分。第三章進(jìn)程管理是整份考綱里最重的部分??季V列了十個(gè)考點(diǎn)其中進(jìn)程控制塊的作用、進(jìn)程與程序的區(qū)別、進(jìn)程創(chuàng)建過程結(jié)合 fork() 的描述這三題屬于必背。進(jìn)程控制塊是進(jìn)程的唯一標(biāo)識(shí)也是中斷后恢復(fù)執(zhí)行的關(guān)鍵工具這兩條作用要拆開答標(biāo)識(shí) 恢復(fù)執(zhí)行。進(jìn)程創(chuàng)建過程的五個(gè)步驟分配進(jìn)程標(biāo)識(shí)符、分配空間、初始化 PCB、設(shè)置鏈接、創(chuàng)建或擴(kuò)充數(shù)據(jù)結(jié)構(gòu)和 fork() 的六步邏輯建議按順序默寫錯(cuò)一步的排序都會(huì)被扣分。第四章線程與第五章同步互斥出題風(fēng)格偏對(duì)比題。線程的產(chǎn)生背景必答進(jìn)程作為資源擁有者和調(diào)度單位的雙重屬性被分離這個(gè)點(diǎn)這是線程概念的根源同步與互斥則要答出直接制約關(guān)系與間接制約關(guān)系這兩個(gè)關(guān)鍵詞。管程的引入背景也要留意考綱里給的答案是信號(hào)量使用困難管程更易控制答這個(gè)點(diǎn)就夠了。第六章死鎖的四類解決方法是最高頻簡(jiǎn)答預(yù)防、避免、檢測(cè)各自的破壞條件和算法名稱銀行家算法要能對(duì)上號(hào)我在第三章還會(huì)給出一套更細(xì)的辨析框架。2.2 三種題型分布簡(jiǎn)答、畫圖、對(duì)比辨析從考綱的排版看出題大致分三類。第一類是純背誦型簡(jiǎn)答比如操作系統(tǒng)的功能及目標(biāo)進(jìn)程控制塊的作用虛擬內(nèi)存實(shí)現(xiàn)的三種方法。這類題沒有理解門檻背下來就有分建議優(yōu)先搞定。背誦建議是按定義→作用→列舉三段式答題例如進(jìn)程控制塊先寫它是什么包含標(biāo)識(shí)符、狀態(tài)、優(yōu)先級(jí)等的數(shù)據(jù)結(jié)構(gòu)再寫作用唯一標(biāo)識(shí)進(jìn)程、支持中斷恢復(fù)最后補(bǔ)一句操作系統(tǒng)提供多重處理技術(shù)的關(guān)鍵工具。第二類是畫圖題??季V明確寫了有五分畫圖線索集中在進(jìn)程五狀態(tài)圖、分頁地址翻譯過程、文件系統(tǒng)層次圖這三處。五狀態(tài)圖必須畫得出新建態(tài)、就緒態(tài)、運(yùn)行態(tài)、阻塞態(tài)、退出態(tài)以及它們之間的六條轉(zhuǎn)換路徑新建→就緒、就緒→運(yùn)行、運(yùn)行→就緒、運(yùn)行→阻塞、阻塞→就緒、運(yùn)行→退出。分頁地址翻譯的圖要標(biāo)出頁號(hào)寄存器、頁表、頁框號(hào)、偏移量四個(gè)要素缺一個(gè)標(biāo)注都不完整。第三類是辨析型簡(jiǎn)答近幾年考得最多的是進(jìn)程切換與模式切換的對(duì)比死鎖與饑餓的關(guān)系段表頁表誰構(gòu)造誰使用。這類題光背書不行得理解操作系統(tǒng)的軟硬件邊界。我的答題習(xí)慣是先用一句話給概念下定義再列差異點(diǎn)最后補(bǔ)一句聯(lián)系。比如死鎖與饑餓都是資源競(jìng)爭(zhēng)引起死鎖必然循環(huán)等待且涉及多個(gè)進(jìn)程饑餓可能只有一個(gè)進(jìn)程被忽視死鎖會(huì)拖垮整個(gè)系統(tǒng)饑餓時(shí)系統(tǒng)其他進(jìn)程還能跑。提示畫分頁地址翻譯圖時(shí)一定要標(biāo)出頁表起始地址寄存器否則閱卷老師會(huì)認(rèn)為你只背了流程、沒理解硬件怎么找到頁表。2.3 帶星號(hào)考點(diǎn)的優(yōu)先級(jí)判斷考綱里凡是帶 * 的題比如OS 是一個(gè)虛擬機(jī)條件競(jìng)爭(zhēng)是什么進(jìn)程切換的時(shí)機(jī)和流程基本都是教材課后思考題或課堂強(qiáng)調(diào)過的內(nèi)容命題概率明顯高于不帶星的。我的復(fù)習(xí)策略是先把帶星號(hào)的十來題背熟再用不帶星的題查漏。需要注意一點(diǎn)帶星號(hào)不意味著一定考大題。像簡(jiǎn)述使用硬件解決互斥的方法中斷禁用 專用機(jī)器指令和條件競(jìng)爭(zhēng)是什么更可能以選擇或判斷形式出現(xiàn)。因此復(fù)習(xí)時(shí)把帶星號(hào)題按可出簡(jiǎn)答可出選擇分開標(biāo)注能避免把精力浪費(fèi)在低概率的大題上。具體做法是拿到考綱后先過一遍在每題后面標(biāo) A必背大題、B選擇判斷、C理解即可三個(gè)優(yōu)先級(jí)再按 A→B→C 的順序滾動(dòng)復(fù)習(xí)比每次從頭背到尾高效得多。選擇題如果是從平時(shí)測(cè)驗(yàn)里抽取平時(shí)做錯(cuò)的題也要單獨(dú)歸檔考綱里簡(jiǎn)答只能覆蓋大題部分小題還得靠錯(cuò)題本。3. 從考點(diǎn)到答案進(jìn)程、線程與并發(fā)控制的答題模板第三章到第六章是這門課的理論核心也是簡(jiǎn)答題出得最密集的區(qū)域??季V里這些章節(jié)的考點(diǎn)有一個(gè)共同特征喜歡考對(duì)比和流程。對(duì)比題有規(guī)律的答題維度流程題有固定的步驟順序把它們整理成模板考場(chǎng)上能省下大量組織語言的時(shí)間。3.1 進(jìn)程與線程對(duì)比題的六維答題框架考綱第四章明確要求線程的概念、產(chǎn)生背景以及與進(jìn)程的對(duì)比這道題的標(biāo)準(zhǔn)答案在考綱里寫得非常全一共六個(gè)維度調(diào)度、擁有資源、并發(fā)性、系統(tǒng)開銷、地址空間和其他資源、通信。背誦時(shí)別死記六條而是抓兩組關(guān)鍵差異。第一組差異在線程與進(jìn)程的定位線程是獨(dú)立調(diào)度和分派的基本單位進(jìn)程是擁有資源的基本單位同一進(jìn)程內(nèi)線程切換不會(huì)引起進(jìn)程切換。第二組差異在開銷和通信創(chuàng)建撤銷進(jìn)程要分配回收資源開銷大線程只需保存少量寄存器內(nèi)容開銷小進(jìn)程間通信需要同步互斥輔助線程間可以直接讀寫共享數(shù)據(jù)段。答題時(shí)我習(xí)慣先寫為什么引入線程產(chǎn)生背景再寫六個(gè)維度的對(duì)比。背景那段必須答出進(jìn)程作為資源擁有者和調(diào)度單位、分派單位的雙重屬性分離這是整道題的題眼。如果時(shí)間不夠六維里優(yōu)先寫調(diào)度、系統(tǒng)開銷、通信三行這三行是閱卷時(shí)最容易給分的點(diǎn)。3.2 進(jìn)程切換的時(shí)機(jī)與流程按七步默寫進(jìn)程切換的時(shí)機(jī)和流程是帶星號(hào)考點(diǎn)也是容易被扣細(xì)節(jié)分的一道題。時(shí)機(jī)分三類時(shí)鐘中斷和 I/O 中斷使被中斷進(jìn)程進(jìn)入就緒態(tài)阻塞式系統(tǒng)調(diào)用和虛擬地址異常使進(jìn)程進(jìn)入阻塞態(tài)終止式系統(tǒng)調(diào)用和不能繼續(xù)執(zhí)行的異常使進(jìn)程進(jìn)入終止態(tài)。流程的七步在考綱里寫得很明確檢查是否允許上下文切換、保存當(dāng)前進(jìn)程上下文程序計(jì)數(shù)器和寄存器、更新 PCB 信息、把 PCB 移入對(duì)應(yīng)隊(duì)列、選擇另一個(gè)就緒進(jìn)程執(zhí)行并更新其 PCB、更新內(nèi)存管理數(shù)據(jù)結(jié)構(gòu)、恢復(fù)所選進(jìn)程上下文并把 CPU 交給它。我見過不少同學(xué)把檢查是否允許上下文切換這一步漏掉或者把更新內(nèi)存管理的數(shù)據(jù)結(jié)構(gòu)放在最后這兩種寫法都會(huì)被扣分。順帶一提考綱里進(jìn)程切換與 CPU Type 切換的對(duì)比應(yīng)該是模式切換 mode switch要答出本質(zhì)區(qū)別進(jìn)程切換會(huì)讓當(dāng)前進(jìn)程進(jìn)入其他狀態(tài)操作系統(tǒng)的環(huán)境產(chǎn)生實(shí)質(zhì)性變化模式切換不改變進(jìn)程狀態(tài)只是用戶態(tài)和內(nèi)核態(tài)的進(jìn)出保存和恢復(fù)上下文開銷小。很多同學(xué)把這題答成CPU 調(diào)度類型方向就偏了。3.3 死鎖與饑餓四條件、四方法、關(guān)系辨析第六章的性價(jià)比極高四類知識(shí)點(diǎn)就覆蓋了三種題型。死鎖概念與產(chǎn)生背景的答案是固定的多個(gè)進(jìn)程競(jìng)爭(zhēng)資源造成阻塞無外力作用無法推進(jìn)。死鎖的四個(gè)必要條件是互斥、占有且等待、不可剝奪、循環(huán)等待其中前三個(gè)是充分條件四個(gè)合起來是充要條件——考綱原話是前三個(gè)充分四個(gè)充要這個(gè)描述在判斷和選擇里反復(fù)出現(xiàn)。死鎖的解決方法按四類展開預(yù)防是破壞互斥外的三個(gè)條件避免是使用前先判斷典型算法是銀行家算法包括兩個(gè)層面進(jìn)程請(qǐng)求導(dǎo)致死鎖則不啟動(dòng)、增加資源請(qǐng)求導(dǎo)致死鎖則拒絕檢測(cè)是定期檢查并采取搶占資源或終止進(jìn)程的措施綜合策略是把資源分類并使用線性排序。答題時(shí)每一類都要寫清思路 手段只寫算法名不給分。死鎖與饑餓的關(guān)系辨析是近年簡(jiǎn)答新寵。四條關(guān)鍵差異要記牢死鎖進(jìn)程都在等待態(tài)饑餓進(jìn)程可能處于運(yùn)行或就緒態(tài)忙等待被餓死死鎖必然循環(huán)等待饑餓不是死鎖涉及多個(gè)進(jìn)程饑餓可能只有一個(gè)進(jìn)程死鎖最終可能拖垮系統(tǒng)饑餓發(fā)生時(shí)至少有一個(gè)進(jìn)程能正常運(yùn)行。3.4 同步互斥的解題切入點(diǎn)從條件競(jìng)爭(zhēng)到管程第五章的條件競(jìng)爭(zhēng)race condition是帶星號(hào)考點(diǎn)理解它有助于答好同步互斥的簡(jiǎn)答題。條件競(jìng)爭(zhēng)的定義是多個(gè)進(jìn)程或線程同時(shí)處理一個(gè)資源全局變量、文件時(shí)產(chǎn)生非預(yù)期的執(zhí)行效果導(dǎo)致程序執(zhí)行流改變。答題時(shí)只需要抓住同時(shí)處理共享資源 非預(yù)期效果兩個(gè)要素即可。同步與互斥的作用要從解決共享資源爭(zhēng)奪切入同步是合作關(guān)系進(jìn)程間按一定次序等待、傳遞消息互斥是制約關(guān)系進(jìn)程在臨界區(qū)加鎖其他進(jìn)程無法進(jìn)入通過阻塞實(shí)現(xiàn)。硬件解決互斥的方法中斷禁用、專用機(jī)器指令單獨(dú)成題時(shí)要分別說明工作原理——中斷禁用是禁止中斷發(fā)生使當(dāng)前進(jìn)程不被切換專用機(jī)器指令則是用一條原子指令完成測(cè)試和設(shè)置。管程那題則答三句話局部數(shù)據(jù)只能被管程過程訪問進(jìn)程通過調(diào)用管程過程進(jìn)入任何時(shí)候只有一個(gè)進(jìn)程在管程中執(zhí)行。4. 存儲(chǔ)管理專題七種方法、兩對(duì)表、一次缺頁第七章和第八章在考綱里占了大量篇幅是所有章節(jié)里最難啃的部分。這兩章的特點(diǎn)是概念多、關(guān)系復(fù)雜、軟硬件邊界容易混淆。我在備考時(shí)把它拆成三條線存儲(chǔ)管理方法的演進(jìn)、段表頁表的軟硬件邊界、page fault 的處理流程。4.1 七種存儲(chǔ)管理方法按拆不拆、裝不裝記演進(jìn)考綱第七章要求簡(jiǎn)述存儲(chǔ)管理的七種方法及它們之間的關(guān)系。這七種方法按歷史發(fā)展角度可以分成三類每類的記憶點(diǎn)是數(shù)據(jù)是否作為一個(gè)整體加載、是否連續(xù)存放。第一類是整體加載、連續(xù)存放包括固定分區(qū)和動(dòng)態(tài)分區(qū)。固定分區(qū)把內(nèi)存劃分成靜態(tài)分區(qū)實(shí)現(xiàn)簡(jiǎn)單、開銷小但會(huì)產(chǎn)生內(nèi)部碎片動(dòng)態(tài)分區(qū)分區(qū)大小與進(jìn)程匹配沒有內(nèi)部碎片但會(huì)產(chǎn)生外部碎片需要壓縮處理器利用率低。第二類是分成小塊、整體加載、不連續(xù)存放包括簡(jiǎn)單分頁和簡(jiǎn)單分段。分頁把內(nèi)存劃分成與頁框大小相等的頁沒有外部碎片但有少量?jī)?nèi)部碎片分段把進(jìn)程分段裝入不連續(xù)的動(dòng)態(tài)分區(qū)沒有內(nèi)部碎片但存在外部碎片。第三類是分成小塊、部分加載、不連續(xù)存放包括虛擬分頁、虛擬分段和虛擬段頁式這是虛擬內(nèi)存的基礎(chǔ)。七種方法的關(guān)系答題要點(diǎn)是從固定分區(qū)到虛擬段頁式是一個(gè)從簡(jiǎn)單到復(fù)雜、從直觀到微觀的過程后一方法通常是為了克服前一方法的缺點(diǎn)而引入的。分區(qū)技術(shù)在內(nèi)存上的使用低效要么內(nèi)部碎片要么外部碎片分頁/分段大大減少碎片虛存則進(jìn)一步解除了用戶與內(nèi)存之間的約束。4.2 段表與頁表的軟硬件邊界誰構(gòu)造、誰使用、何時(shí)用考綱帶星號(hào)的第 3* 題問得很細(xì)段表、頁表在構(gòu)造使用時(shí)的問題誰負(fù)責(zé)構(gòu)造、誰負(fù)責(zé)使用、什么時(shí)候構(gòu)造、什么時(shí)候使用。這個(gè)題考察的是操作系統(tǒng)與硬件的分工是整份考綱里最容易暴露理解空洞的地方。頁表的答案是操作系統(tǒng)為每個(gè)進(jìn)程維護(hù)一個(gè)頁表說明每頁對(duì)應(yīng)的頁框操作系統(tǒng)維護(hù)一個(gè)空閑頁框列表處理器硬件使用頁號(hào)和偏移量計(jì)算物理地址邏輯地址到物理地址的轉(zhuǎn)換用處理器硬件完成。段表的答案結(jié)構(gòu)完全一樣操作系統(tǒng)為每個(gè)進(jìn)程維護(hù)段表說明每段加載地址和長(zhǎng)度操作系統(tǒng)維護(hù)空閑空洞列表處理器使用段號(hào)和偏移量計(jì)算絕對(duì)位置。構(gòu)造、使用、時(shí)間的對(duì)應(yīng)關(guān)系是操作系統(tǒng)負(fù)責(zé)構(gòu)造、處理器負(fù)責(zé)使用、進(jìn)程運(yùn)行時(shí)構(gòu)造并使用除非使用覆蓋技術(shù)。很多同學(xué)答錯(cuò)在誰使用上這里的使用指地址翻譯動(dòng)作由 CPU 的存儲(chǔ)管理單元完成不是軟件在運(yùn)行時(shí)手動(dòng)查表。答題時(shí)把軟硬件邊界四個(gè)字寫進(jìn)結(jié)論句閱卷時(shí)印象分會(huì)好很多。提示答題時(shí)把構(gòu)造、使用、時(shí)間三個(gè)詞分開寫先寫操作系統(tǒng)構(gòu)造再寫處理器使用最后寫進(jìn)程運(yùn)行時(shí)生效順序顛倒會(huì)被判邏輯不清。4.3 page fault 處理流程五步答題模板第八章的 page fault 處理流程考綱要求從產(chǎn)生到解決涉及進(jìn)程切換。這道題是存儲(chǔ)管理部分最有代表性的流程題五個(gè)步驟不能亂。標(biāo)準(zhǔn)答題順序是第一步CPU 執(zhí)行進(jìn)程時(shí)發(fā)現(xiàn)要訪問的虛擬地址不在物理內(nèi)存中進(jìn)程中斷進(jìn)入阻塞態(tài)產(chǎn)生 page fault第二步操作系統(tǒng)查詢保存可執(zhí)行文件和進(jìn)程虛擬空間映射關(guān)系的數(shù)據(jù)結(jié)構(gòu)第三步找到空頁面所在的 VMA虛擬內(nèi)存區(qū)域通過 VMA 計(jì)算出空頁面在可執(zhí)行文件中的偏移第四步在物理內(nèi)存分配一個(gè)物理頁把物理頁和虛擬頁建立映射關(guān)系進(jìn)程進(jìn)入就緒態(tài)第五步CPU 控制權(quán)返還給進(jìn)程從剛才 page fault 的地方繼續(xù)執(zhí)行。答題時(shí)最容易漏的是第一步里的進(jìn)程狀態(tài)變化和最后一步的從斷點(diǎn)繼續(xù)執(zhí)行。這兩個(gè)點(diǎn)恰好是網(wǎng)安方向喜歡深挖的地方——中斷處理涉及上下文保存恢復(fù)執(zhí)行涉及程序計(jì)數(shù)器的重置。另外虛擬內(nèi)存實(shí)現(xiàn)的三種方法請(qǐng)求分頁、請(qǐng)求分段、請(qǐng)求段頁式要能回答它們都是建立在分頁或分段管理之上增加請(qǐng)求調(diào)頁/調(diào)段功能和置換算法這個(gè)總起句能幫你把這題和 page fault 流程串起來。4.4 虛擬存儲(chǔ)的三個(gè)問題與缺頁率分析考綱第八章第一題虛擬存儲(chǔ)需要解決的三個(gè)問題答案圍繞缺頁中斷展開減小缺頁中斷發(fā)生頻率處理缺頁中斷帶來的軟件開銷決定置換哪個(gè)駐留頁通過適當(dāng)安排使得訪問未命中頁的概率最小。這三個(gè)問題的核心其實(shí)是一個(gè)權(quán)衡缺頁處理開銷大所以設(shè)計(jì)目標(biāo)都圍繞著盡量別缺頁、缺頁了好處理、處理完別影響局部性。缺頁率、頁尺寸、頁框的關(guān)系是看圖說話題考綱給的分析角度是頁尺寸非常小時(shí)每個(gè)進(jìn)程在內(nèi)存中有較多數(shù)量的頁內(nèi)存中的頁都包含最近訪問的部分缺頁率較低頁尺寸增加時(shí)每頁包含的單元變多。這個(gè)分析要結(jié)合曲線圖來答讀圖時(shí)注意橫軸是頁尺寸、縱軸是缺頁率曲線形狀是先降后升——頁尺寸太小頁數(shù)太多、頁表開銷大頁尺寸太大局部性變差中間存在一個(gè)最優(yōu)值。頁框的多少?zèng)Q定了內(nèi)存能同時(shí)容納多少頁頁框越少缺頁率越高程序運(yùn)行時(shí)頻繁在內(nèi)外存之間換頁整體性能就會(huì)雪崩。答題時(shí)把先降后升的趨勢(shì)說清楚再補(bǔ)一句最優(yōu)頁尺寸與進(jìn)程局部性有關(guān)基本就能拿全分。5. 避坑指南備考操作系統(tǒng)最容易翻車的五個(gè)細(xì)節(jié)考綱本身是復(fù)習(xí)的向?qū)У罩骋矔?huì)踩坑。我把自己和身邊同學(xué)備考時(shí)真實(shí)遇到過的翻車現(xiàn)場(chǎng)整理成五條每條都按現(xiàn)象→原因→解決寫清楚希望能幫你少走一段彎路。這些坑有一個(gè)共同規(guī)律都是背了答案但沒背邏輯造成的——所以與其說是知識(shí)點(diǎn)問題不如說是答題習(xí)慣問題。5.1 死鎖的充分條件與必要條件記反現(xiàn)象做選擇題時(shí)看到死鎖的充分條件是互斥、占有等待、不可剝奪、循環(huán)等待毫不猶豫選了對(duì)結(jié)果判錯(cuò)。原因考綱原文寫的是前三個(gè)充分四個(gè)充要很多同學(xué)默認(rèn)四個(gè)條件都是充分條件。實(shí)際上循環(huán)等待這類條件單拎出來只是必要條件只有互斥、占有等待、不可剝奪三者同時(shí)成立才構(gòu)成死鎖的充分條件四個(gè)條件全滿足才是充要條件。選擇題里出現(xiàn)單個(gè)條件是充分條件這樣的表述基本都是錯(cuò)的。解決按單必要、三充分、四充要九個(gè)字記憶。遇到判斷題先數(shù)條件個(gè)數(shù)一個(gè)條件叫必要條件三個(gè)同時(shí)滿足叫充分條件四個(gè)全滿足叫充要條件。再把破壞互斥外的三個(gè)條件可以預(yù)防死鎖背熟死鎖預(yù)防題也就一起解決了。5.2 進(jìn)程切換與模式切換混為一談現(xiàn)象簡(jiǎn)答題進(jìn)程切換與 CPU Type 切換的對(duì)比有同學(xué)上來就答進(jìn)程切換是 CPU 從一個(gè)進(jìn)程轉(zhuǎn)到另一個(gè)進(jìn)程模式切換是從用戶態(tài)到內(nèi)核態(tài)接著把兩者的時(shí)機(jī)都寫成時(shí)鐘中斷、系統(tǒng)調(diào)用被扣了一半分。原因把模式切換誤讀成CPU 調(diào)度類型切換或者只記住了兩者都涉及上下文沒抓住關(guān)鍵差異——進(jìn)程切換必須改變進(jìn)程狀態(tài)模式切換不改變正在運(yùn)行進(jìn)程的狀態(tài)只是在用戶態(tài)和內(nèi)核態(tài)之間進(jìn)出開銷小得多。解決答題時(shí)分三行寫第一行概念進(jìn)程切換是當(dāng)前運(yùn)行進(jìn)程轉(zhuǎn)為就緒/阻塞等狀態(tài)模式切換是 CPU 特權(quán)級(jí)別的改變第二行開銷進(jìn)程切換需保存恢復(fù)程序計(jì)數(shù)器、寄存器、更新 PCB模式切換只保存恢復(fù)少量上下文第三行關(guān)系一次進(jìn)程切換可能包含多次模式切換。把這個(gè)三層結(jié)構(gòu)背熟基本不會(huì)再丟分。5.3 ULT 與 KLT 的優(yōu)缺點(diǎn)張冠李戴現(xiàn)象判斷題用戶級(jí)線程切換不需要內(nèi)核模式特權(quán)所以性能開銷小有同學(xué)覺得前半句對(duì)就選了正確但后半句性能開銷小在純 ULT 場(chǎng)景下確實(shí)成立這題本身是對(duì)的反過來遇到內(nèi)核級(jí)線程可以充分利用多處理器但線程切換需要內(nèi)核模式又因?yàn)榭吹叫枰獌?nèi)核模式就判錯(cuò)結(jié)果這題也是對(duì)的。原因沒掌握兩類線程的核心權(quán)衡ULT 的所有管理在用戶空間完成切換不經(jīng)過內(nèi)核但一個(gè)線程阻塞會(huì)阻塞整個(gè)進(jìn)程KLT 由內(nèi)核管理可以把同一進(jìn)程的多個(gè)線程分配給多處理器一個(gè)線程阻塞不影響同進(jìn)程其他線程但每次線程切換都要進(jìn)入內(nèi)核模式代價(jià)大。解決用一張小表整理對(duì)比項(xiàng)用戶級(jí)線程ULT內(nèi)核級(jí)線程KLT管理主體應(yīng)用程序中的線程庫操作系統(tǒng)內(nèi)核切換開銷小不需要內(nèi)核模式特權(quán)大需要用戶態(tài)與內(nèi)核態(tài)往返切換線程阻塞影響阻塞進(jìn)程內(nèi)所有線程只阻塞當(dāng)前線程同進(jìn)程其他線程仍可調(diào)度多處理器利用不能內(nèi)核只把一個(gè)進(jìn)程分配給一個(gè)處理器可以同一進(jìn)程多個(gè)線程可分配到多個(gè)處理器系統(tǒng)調(diào)用阻塞整個(gè)進(jìn)程阻塞僅調(diào)用線程阻塞考試遇到優(yōu)缺點(diǎn)對(duì)比就按這五列展開。5.4 五狀態(tài)圖漏掉狀態(tài)轉(zhuǎn)換路徑現(xiàn)象畫圖題被扣分的原因不是畫錯(cuò)了狀態(tài)框而是沒畫出新建態(tài)→就緒態(tài)這條加載路徑或者把阻塞態(tài)→就緒態(tài)的觸發(fā)條件寫成進(jìn)程自己醒來被扣分。原因五狀態(tài)圖的轉(zhuǎn)換不是進(jìn)程自愿觸發(fā)的而是由調(diào)度器、中斷、事件完成三類事件驅(qū)動(dòng)。進(jìn)程不會(huì)主動(dòng)從阻塞態(tài)回到就緒態(tài)必須等所等待的事件發(fā)生由操作系統(tǒng)把該進(jìn)程從阻塞隊(duì)列移到就緒隊(duì)列。解決畫圖時(shí)在每條轉(zhuǎn)換邊上標(biāo)出觸發(fā)者新建→就緒由操作系統(tǒng)加載完成就緒→運(yùn)行由調(diào)度器分派運(yùn)行→就緒由時(shí)間片超時(shí)或更高優(yōu)先級(jí)搶占運(yùn)行→阻塞由進(jìn)程發(fā)起阻塞式系統(tǒng)調(diào)用阻塞→就緒由事件完成I/O 結(jié)束且由操作系統(tǒng)負(fù)責(zé)移動(dòng)運(yùn)行→退出由進(jìn)程終止。邊上的觸發(fā)者比狀態(tài)框本身更值分。5.5 page fault 流程忽略進(jìn)程狀態(tài)變化現(xiàn)象默寫 page fault 處理流程時(shí)寫得出查 VMA、分配物理頁、建立映射但被問到進(jìn)程在這個(gè)過程中經(jīng)歷了哪些狀態(tài)就卡住或者寫錯(cuò)成一直在運(yùn)行態(tài)。原因考綱的題目要求里帶了涉及進(jìn)程切換的提示但很多同學(xué)只背步驟不背狀態(tài)實(shí)際上第一步產(chǎn)生 page fault的同時(shí)進(jìn)程從中斷到阻塞第四步建立映射后進(jìn)程回到就緒態(tài)最后恢復(fù)運(yùn)行時(shí)才回到運(yùn)行態(tài)。解決把狀態(tài)變化作為流程題的第三行固定寫出運(yùn)行態(tài)CPU 訪問缺頁→阻塞態(tài)中斷處理開始→就緒態(tài)物理頁分配完成、映射建立→運(yùn)行態(tài)CPU 恢復(fù)斷點(diǎn)執(zhí)行。只要流程題里涉及中斷或調(diào)度默認(rèn)都要補(bǔ)一句狀態(tài)變化這是答題的隱性給分點(diǎn)。另外還有一個(gè)容易被忽略的點(diǎn)考綱里文件系統(tǒng)層次圖和邏輯層物理層實(shí)現(xiàn)方法雖然只在九到十二章出現(xiàn)一次但畫圖題概率不低。復(fù)習(xí)時(shí)不要因?yàn)檎鹿?jié)靠后就跳過至少要把邏輯層的五個(gè)功能大致包含文件操作、目錄管理、權(quán)限控制、緩沖管理和訪問控制物理層的三種實(shí)現(xiàn)方法是連續(xù)分配、鏈接分配和索引分配這層對(duì)應(yīng)關(guān)系記牢是第九章之后最可能成為畫圖題的知識(shí)點(diǎn)。6. 考前沖刺用考綱做三遍自測(cè)的實(shí)操模板考綱最實(shí)用的打開方式不是背而是當(dāng)自測(cè)清單用。我的習(xí)慣是考前三天把考綱里所有簡(jiǎn)答考點(diǎn)逐條過三遍每一遍的側(cè)重點(diǎn)不同越到后面越貼近考場(chǎng)輸出。第一遍是閉卷復(fù)述。把考綱打印出來遮住答案只看題目口頭把答案講出來。講不出來的題用紅筆圈出來這一遍的目標(biāo)不是記住而是找出盲區(qū)。第二遍是精寫關(guān)鍵詞。把紅筆圈出的題寫在白紙上每個(gè)考點(diǎn)只寫關(guān)鍵詞脈絡(luò)不寫完整句子。比如進(jìn)程切換流程只寫檢查→保存上下文→更新PCB→移入隊(duì)列→選進(jìn)程→更新內(nèi)存→恢復(fù)七個(gè)箭頭寫完就過目的是把順序固化。第三遍是限時(shí)默寫。給自己設(shè)定每題五分鐘把考綱里帶星號(hào)的題完整寫一遍模擬考場(chǎng)的書寫節(jié)奏。這一遍最痛苦但最有效——很多同學(xué)考場(chǎng)寫不完不是因?yàn)椴粫?huì)而是因?yàn)楸车拇鸢柑珕孪迺r(shí)默寫能逼你找到精簡(jiǎn)表達(dá)的平衡點(diǎn)。三遍之外還有一個(gè)加分動(dòng)作把考綱里所有對(duì)比類考點(diǎn)匯總成一張表逐條寫下固定分區(qū)與動(dòng)態(tài)分區(qū)分頁與分段ULT 與 KLT進(jìn)程與線程死鎖與饑餓這幾對(duì)概念的差異點(diǎn)??记白詈笠煌碇豢催@張表比翻整本教材效率高得多。表格不用寫完整句子每格一到兩個(gè)關(guān)鍵詞就夠目的是讓大腦在考前把對(duì)比關(guān)系重新激活一遍。我在備考時(shí)還養(yǎng)成了一個(gè)習(xí)慣每背完一章考綱就合上資料用手機(jī)給自己錄音復(fù)述五分鐘再回放檢查哪里卡殼??さ牡胤酵褪情喚砝蠋熛肟鄯值牡胤?。后來我把這個(gè)方法也用在了這份考綱的復(fù)習(xí)上從第二章背到第八章用了三輪第一輪耗時(shí)一天第二輪半天第三輪兩小時(shí)越滾越快。從那以后我每門需要大量記憶的課都強(qiáng)制走一遍復(fù)述→關(guān)鍵詞→限時(shí)默寫的流程。希望這套拆解和自測(cè)方法能幫到你也祝你期末順利。把這份考綱按上面的方法過三遍比你盲目刷三套題更有把握。本文還有配套的精品資源點(diǎn)擊獲取