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