

下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第1章 操作系統(tǒng)引論1.什么是 馮?諾依曼計(jì)算機(jī)工作模型?馮?諾依曼計(jì)算機(jī)工作模型或存儲(chǔ)程序工作模型:1)存儲(chǔ)器用來(lái)容納程序和數(shù)據(jù);2)程序由指令組成,并和數(shù)據(jù)一起存儲(chǔ)在計(jì)算機(jī)內(nèi)存中;3)指令按順序、轉(zhuǎn)跳和循環(huán)三種基本方式組織;4)機(jī)器一起動(dòng),就能按照程序指定的邏輯順序把指令從存儲(chǔ)器中讀出來(lái)逐條解釋執(zhí)行,動(dòng)完成程序所描述的處理工作;5)指令指針(CS:IP)指示當(dāng)前執(zhí)行指令,執(zhí)行完成指針會(huì)自動(dòng)調(diào)整到下一條指令6)當(dāng)前指令指針指向的內(nèi)存中程序,被認(rèn)為擁有機(jī)器控制權(quán);7)任何計(jì)算機(jī)都擁有自己的一套基本指令系統(tǒng),高級(jí)語(yǔ)言程序最終需經(jīng)專(zhuān)門(mén)的編譯程序, 翻譯為基本機(jī)器指令;2.簡(jiǎn)述 OS 的定義、作用和
2、主要功能。1)定義:是計(jì)算機(jī)系統(tǒng)的一個(gè)系統(tǒng)軟件;a)是一些具有如下功能的程序模塊的集合;b)能有效地組織和管理計(jì)算機(jī)硬件和軟件資源c)能合理組織計(jì)算機(jī)的工作流程,控制程序的執(zhí)行;d)能透明地向用戶(hù)提供各種服務(wù)功能, 使用戶(hù)能夠靈活、 方便地使用計(jì)算機(jī), 計(jì)算機(jī)系統(tǒng)能高效地運(yùn)行。2)操作系統(tǒng)的作用a)作為計(jì)算機(jī)系統(tǒng)資源的管理者;b)作為用戶(hù)與計(jì)算機(jī)硬件系統(tǒng)之間的接口;c)用作擴(kuò)充計(jì)算機(jī)硬件系統(tǒng);3)操作系統(tǒng)的功能: 處理機(jī)管理(進(jìn)程與線程管理):主要任務(wù)是對(duì)內(nèi)存進(jìn)行分配、保護(hù)和擴(kuò)充;具體是:a)進(jìn)程控制:負(fù)責(zé)進(jìn)行的創(chuàng)建、撤銷(xiāo)和狀態(tài)轉(zhuǎn)換b)進(jìn)程同步:對(duì)并發(fā)執(zhí)行的多進(jìn)程進(jìn)行協(xié)調(diào)c)進(jìn)程通信:負(fù)責(zé)完成
3、進(jìn)程間的信息交換d)進(jìn)程調(diào)度:按一定的算法進(jìn)行CPU分配存儲(chǔ)管理:主要任務(wù)是對(duì)內(nèi)存進(jìn)行分配、保護(hù)和擴(kuò)充;具體為:a)內(nèi)存分配:按一定的策略為每道程序分配內(nèi)存b)內(nèi)存保護(hù):保證各程序在自己的內(nèi)存區(qū)域內(nèi)運(yùn)行不受其它并發(fā)執(zhí)行程序影響。c)內(nèi)存擴(kuò)充:為允許大型作業(yè)或多作業(yè)并發(fā)運(yùn)行,必須借助虛擬存儲(chǔ)技術(shù)來(lái)獲得更大“虛擬”內(nèi)存設(shè)備管理:是OS中最龐雜、最瑣碎部分;具體為:a)設(shè)備分配:按一定原則對(duì)設(shè)備進(jìn)行分配。為使設(shè)備能與主機(jī)并行工作,需大量采用 緩沖技術(shù)和虛擬技術(shù)b)設(shè)備傳輸控制:實(shí)現(xiàn)物理設(shè)備的I/O操作,包括啟動(dòng)、中斷處理和結(jié)束處理等操作。 文件管理:OS中負(fù)責(zé)信息使整個(gè)管理部分稱(chēng)為文件系統(tǒng);a)文件
4、的存儲(chǔ)空間管理(分配、回收)b)目錄管理:目錄是為方便文件管理而采用的基本數(shù)據(jù)結(jié)構(gòu),它能提供“按名存取” 功能。c)文件操作管理:實(shí)現(xiàn)文件的基本操作,包括打開(kāi)、關(guān)閉、讀、寫(xiě)等。d)文件保護(hù):提供文件安全保護(hù)的有關(guān)功能和設(shè)施。3.比較:?jiǎn)蔚琅幚?OS 多道批處理 OS 分時(shí) OS 和實(shí)時(shí) OS 的基本特征。單道批處理OS:單道批處理系統(tǒng)監(jiān)督程序駐留內(nèi)存;自動(dòng)加載外部作業(yè),實(shí)現(xiàn)系統(tǒng)的自動(dòng)、不間斷連續(xù)運(yùn)行 但當(dāng)當(dāng)前執(zhí)行程序有I/O服務(wù)請(qǐng)求時(shí),CPU仍要空閑特征:自動(dòng)性、順序性和單道性多道批處理OS多道批處理系統(tǒng)多道程序設(shè)計(jì)技術(shù)用戶(hù)提交作業(yè)先在外存排隊(duì),然后由作業(yè)調(diào)度程序按一定的算法從隊(duì)列中選擇若干
5、 作業(yè)載入內(nèi)存,并允許它們并發(fā)(交替)執(zhí)行;引入多道程序設(shè)計(jì)技術(shù)后,可帶來(lái)如下的好處;提高系統(tǒng)(CPU內(nèi)存和I/O設(shè)備)的利用率;充分發(fā)揮CPU與外設(shè)并行工作的能力;提高系統(tǒng)的吞吐率;特征:多道性、無(wú)序性和調(diào)度性?xún)?yōu)缺點(diǎn)及需要解決的問(wèn)題分時(shí)OS:分時(shí)操作系統(tǒng)形成和發(fā)展的動(dòng)力:實(shí)現(xiàn)人機(jī)交互;共享或充分利用主機(jī);便于用戶(hù)上機(jī)分時(shí)OS實(shí)現(xiàn)要解決的關(guān)鍵問(wèn)題:及時(shí)接受多路卡;每個(gè)終端配備可暫存用戶(hù)命令的緩沖區(qū)及時(shí)處理 所有用戶(hù)作業(yè)要直接進(jìn)入內(nèi)存; 每個(gè)用戶(hù)(作業(yè))應(yīng)在較短的時(shí)間內(nèi)得到響應(yīng)處理的“時(shí)間片”; 分時(shí)系統(tǒng)的實(shí)現(xiàn)方法單道分時(shí)處理系統(tǒng) 具有“前臺(tái)”和“后臺(tái)”的分時(shí)系統(tǒng) 支持多道程序設(shè)計(jì)的分時(shí)系統(tǒng)特征
6、 :多路性、獨(dú)立性和交互性;實(shí)時(shí)OS:實(shí)時(shí)OS的引入目的(主要應(yīng)用領(lǐng)域)1)實(shí)時(shí)控制實(shí)時(shí)信息處理要求對(duì)信息進(jìn)行及時(shí)處理2)實(shí)時(shí)任務(wù)的類(lèi)型按是否有周期性劃分; 按截止時(shí)間要求嚴(yán)格與否劃分(硬、軟任務(wù));3)實(shí)時(shí)系統(tǒng)的基本特征具有多路性、獨(dú)立性、交互性、及時(shí)性和可靠性等特征.補(bǔ)充題: 試從交互性、 及時(shí)性和可靠性方面, 將分時(shí)系統(tǒng)與實(shí)時(shí)系統(tǒng)進(jìn)行比較分時(shí)系統(tǒng)和實(shí)時(shí)系統(tǒng)在交互性、及時(shí)性和可靠性方面存在較大差別:(1)從交互性方面來(lái)看,分時(shí)系統(tǒng)的目的是滿(mǎn)足多用戶(hù)交互的血藥,因此,交互性是分時(shí) 系統(tǒng)的一個(gè)關(guān)鍵問(wèn)題,用戶(hù)可以通過(guò)終端與系統(tǒng)進(jìn)行人機(jī)對(duì)話(huà)。而實(shí)時(shí)系統(tǒng)中的交互性 僅限于訪問(wèn)系統(tǒng)中的某些專(zhuān)用服務(wù)程序
7、,其交互性受到了限制。(2)從及時(shí)性方面來(lái)看,在分時(shí)系統(tǒng)中它指的是系統(tǒng)的響應(yīng)時(shí)間是以人能夠接受的等待時(shí) 間為標(biāo)準(zhǔn)的,一般為2-3秒;而在實(shí)時(shí)系統(tǒng)中則是以控制過(guò)程或信息處理中能夠接受的 延遲為準(zhǔn),往往是秒級(jí)、百毫秒級(jí)甚至毫秒級(jí)或更低,是實(shí)時(shí)系統(tǒng)的關(guān)鍵因素之一。(3)從可靠性方面來(lái)看,在實(shí)時(shí)系統(tǒng)中的人任何差錯(cuò)都可能帶來(lái)巨大的損失,為此,往往 需要采取多級(jí)容錯(cuò)措施來(lái)保證系統(tǒng)和數(shù)據(jù)的安全可靠。分時(shí)系統(tǒng)也有可靠性要求但相對(duì) 較低。4.簡(jiǎn)述目前研究/學(xué)習(xí) OS 的兩種主要觀點(diǎn)(虛擬觀點(diǎn)和資源管理觀點(diǎn))。1)虛擬觀點(diǎn):是對(duì)OS種由頂向下的俯視。裝有OS的計(jì)算機(jī)極大地?cái)U(kuò)展了原有計(jì)算機(jī)的功能。把包含由各種硬件、
8、復(fù)雜底層操作 細(xì)節(jié)隱藏起來(lái),使得用戶(hù)的操作和使用,由復(fù)雜變得簡(jiǎn)單,由低級(jí)操作變?yōu)楦呒?jí)操作, 把基本功能擴(kuò)展為多種功能。在裸機(jī)上裝上OS后,對(duì)用戶(hù)來(lái)說(shuō)好像是得到了一個(gè)擴(kuò)展的,使用更方便的計(jì)算機(jī)。2)資源觀點(diǎn):是目前對(duì)OS描述的主要觀點(diǎn),是一種對(duì)OS功能位置由底向上的觀察的觀點(diǎn)。把資源分為軟、硬件資源,硬件資源又包括CPU主存、輸入輸出設(shè)備。相應(yīng)的OS就有處理機(jī)管理、內(nèi)存管理、設(shè)備管理,和針對(duì)軟信息資源一文件的磁盤(pán)管理/文件管理5.為什么說(shuō) OS 極大擴(kuò)展了計(jì)算機(jī)的功能?裝有OS的計(jì)算機(jī)極大地?cái)U(kuò)展了原有計(jì)算機(jī)的功能,原因如下:OS把包含由各種硬件、復(fù)雜底層操作細(xì)節(jié)隱藏起來(lái),使得用戶(hù)的操作和使用,由
9、復(fù)雜變得簡(jiǎn)單,由低級(jí)操作變?yōu)楦呒?jí)操作,把基本功能擴(kuò)展為多種功能。在裸機(jī)上裝上OS后,對(duì)用戶(hù)來(lái)說(shuō)好像是得到了一個(gè)擴(kuò)展的,使用更方便的計(jì)算機(jī)。第2章進(jìn)程的描述與控制1.針對(duì):1)單任務(wù) OS 環(huán)境下程序順序執(zhí)行,2)多任務(wù) OS 環(huán)境下的多道程序并發(fā)執(zhí)行,試分析它們分別具有哪些特征?為什么?1)單任務(wù)OS環(huán)境下程序順序執(zhí)行:?jiǎn)稳蝿?wù)環(huán)境下的“可執(zhí)行”程序未執(zhí)行前的程序是可執(zhí)行格式的二進(jìn)制程序文件,通常被持久存儲(chǔ)在外存(磁盤(pán))中;程序被加載到主存并獲得CPU控制權(quán)后,將按其中指令所規(guī)定的邏輯順序被依次執(zhí)行;邏輯順序結(jié)構(gòu):順序、選擇、重復(fù)(循環(huán))通常可采用或引入前驅(qū)圖節(jié)點(diǎn)+有向邊,來(lái)描述程序中不同單元或
10、程序段之間的關(guān)系;以實(shí)模式執(zhí)行,具有最大的權(quán)限,可存取控制所有計(jì)算機(jī)軟硬資源;程序執(zhí)行具有以下基本特點(diǎn):順序性封閉性(結(jié)果)可再現(xiàn)性。2)多任務(wù)OS環(huán)境下的多道程序并發(fā)執(zhí)行:多道程序并發(fā)執(zhí)行情況示例i -本例中,程序片段S1與S2可并發(fā)執(zhí)行并發(fā)可有效提高系統(tǒng)的吞吐量 多道程序并發(fā)執(zhí)行的特征:間斷性(切換執(zhí)行)S2失去封閉性(共享系統(tǒng)的資源)卜結(jié)果不可再現(xiàn)性 為有效管理和調(diào)度多道并發(fā)執(zhí)行程序 須引入可完整描述每道執(zhí)行中程序的數(shù)據(jù)結(jié)構(gòu),該思想逐步進(jìn)化完善進(jìn)程(process)概念。2.深入理解進(jìn)程的概念,試說(shuō)明進(jìn)程的基本特征及現(xiàn)代OS中引入進(jìn)程的意義。提示:進(jìn)程是現(xiàn)代 OS 最重要的概念之一,是為
11、了能有效管理(正在被并 發(fā)執(zhí)行的)每道程序而必須引入的特別概念,或特別數(shù)據(jù)結(jié)構(gòu)。進(jìn)程的基本特征:用戶(hù)空間是進(jìn)程的一個(gè)最主要特征!獨(dú)立性: 每個(gè)進(jìn)程具有自己相對(duì)獨(dú)立的地址空間,除非通過(guò)進(jìn)程通信手段,否則不能相互影響 結(jié)構(gòu)性進(jìn)程空間是結(jié)構(gòu)化的、分段組織的;動(dòng)態(tài)性 是或包含可在其地址空間中活動(dòng)的執(zhí)行體對(duì)象 并發(fā)性,也稱(chēng)異步性在同一個(gè)計(jì)算機(jī)系統(tǒng)中允許同時(shí)存在多個(gè)進(jìn)程,微觀上它們可能是交替執(zhí)行;但宏觀 上看,則似乎在同時(shí)獨(dú)立運(yùn)行。操作系統(tǒng)引入進(jìn)程的意義:進(jìn)程是現(xiàn)代OS最重要的概念之一 進(jìn)程的管理、切換及調(diào)度,與保護(hù)模式密切相關(guān), 需要有保護(hù)模式知識(shí),才能清晰 理解進(jìn)程的實(shí)現(xiàn)機(jī)制和實(shí)現(xiàn)過(guò)程。執(zhí)行進(jìn)程切換的
12、相關(guān)代碼,被統(tǒng)稱(chēng)為OS的進(jìn)程調(diào)度模塊1) 通常被運(yùn)行在比 “進(jìn)程”更高的層級(jí)上;2) 現(xiàn)代OS的調(diào)度代碼,通常不是一個(gè)集中的模塊, 而是由分散在內(nèi)核多個(gè)位置的 若干代碼片段構(gòu)成;3.在引入進(jìn)程的OS中,進(jìn)程與(二進(jìn)制可執(zhí)行)程序這兩個(gè)概念的區(qū)別與聯(lián)系。 進(jìn)程與程序的區(qū)別:程序是靜態(tài)的,是有序代碼的集合,是進(jìn)程的定義和說(shuō)明對(duì)應(yīng)著一個(gè)持久外存文件, 具有外存文件的性質(zhì)(創(chuàng)建/復(fù)制/刪除.)。進(jìn)程是動(dòng)態(tài)的、暫時(shí)的,是程序的一次執(zhí)行,通常不能在計(jì)算機(jī)之間遷移。 進(jìn)程與程序的組成不同:進(jìn)程組成包括代碼段、數(shù)據(jù)段和控制塊。 多進(jìn)程實(shí)體可以同時(shí)存放在內(nèi)存中并發(fā)執(zhí)行,而程序不能正確并發(fā)執(zhí)行。 進(jìn)程是一個(gè)能夠獨(dú)
13、立運(yùn)行、 獨(dú)立分配資源的和獨(dú)立接受調(diào)度的基本單位。 而程序不能在 多道程序環(huán)境下獨(dú)立運(yùn)行。進(jìn)程與程序不是意義對(duì)應(yīng)的關(guān)系。進(jìn)程與程序密切關(guān)聯(lián):通過(guò)多次加載執(zhí)行, 一個(gè)程序可對(duì)應(yīng)多個(gè)進(jìn)程; 通過(guò)調(diào)用關(guān)系, 一個(gè)進(jìn)程可涉及多個(gè)程 序。4. 理解 PCB 數(shù)據(jù)結(jié)構(gòu)中的主要屬性域及作用。一個(gè)已被掛起的進(jìn)程,它的PCB是否會(huì)被交換到外存? PCB 被保存在系統(tǒng)空間可交換區(qū)、系統(tǒng)空間不可交換區(qū),還是進(jìn)程用戶(hù)空間?1)PCB數(shù)據(jù)結(jié)構(gòu)的主要屬性域及作用:PCB是操作系統(tǒng)內(nèi)核中一種數(shù)據(jù)結(jié)構(gòu),主要表示進(jìn)程狀態(tài),是在系統(tǒng)空間不可交換區(qū)中。PCB主要內(nèi)容:進(jìn)程描述信息:PID,NAME, USERID,PROCESS
14、GROUP處理器現(xiàn)場(chǎng)保護(hù)信息:CPU內(nèi)部各寄存器;進(jìn)程控制信息:當(dāng)前狀態(tài)、優(yōu)先級(jí)、代碼執(zhí)行入口地址、程序外存地址、運(yùn)行統(tǒng)計(jì) 信息(執(zhí)行時(shí)間、調(diào)度次數(shù)、頁(yè)面調(diào)度);資源占用信息列表,打開(kāi)資源對(duì)象句柄表;用于進(jìn)程間同步與通信的相關(guān)信息字段;指向進(jìn)程虛空間使用分配描述表指針(PCB-AddressSpace );(注意,因頁(yè)目錄/頁(yè)表占空間 較大,雖位于系統(tǒng)空間但不能安排在核心,即?PCB頁(yè)掛起進(jìn)程頁(yè)表可能會(huì)被SWAP1U外存!)PCB的主要作用:與進(jìn)程有關(guān)的信息被集中存儲(chǔ)在這個(gè)數(shù)據(jù)結(jié)構(gòu)中,它將程序變成了可并發(fā)執(zhí)行的進(jìn)程。2) 個(gè)已經(jīng)被掛起的進(jìn)程,它的PCB會(huì)被SWA交換到外存。5.什么是進(jìn)程的運(yùn)行
15、、就緒、阻塞和掛起狀態(tài)?試描述進(jìn)程的五狀態(tài)、七狀態(tài) 轉(zhuǎn)移變化圖。1)進(jìn)程的狀態(tài):運(yùn)行狀態(tài):一個(gè)進(jìn)程已得到CPU其程序正在CPU上執(zhí)行;就緒狀態(tài):進(jìn)程已獲得除CPU以外的所有必要資源,只要得到CPU便可立即執(zhí)行;阻塞狀態(tài):正在執(zhí)行的進(jìn)程因?yàn)槟撤N事件(如I/O請(qǐng)求)的發(fā)生二暫時(shí)無(wú)法繼續(xù)執(zhí)行,只有 等相應(yīng)的事件完成后才能去競(jìng)爭(zhēng)CPU掛起狀態(tài):其實(shí)質(zhì)是使進(jìn)程不能繼續(xù)執(zhí)行,及時(shí)掛起后的進(jìn)程處于就緒狀態(tài),它也不能參與CPU的競(jìng)爭(zhēng)。2)進(jìn)程的五狀態(tài)轉(zhuǎn)移變化圖:Riiiiiiin遼3)進(jìn)程的七狀態(tài)轉(zhuǎn)移變化圖: 單掛起:6.請(qǐng)描述實(shí)現(xiàn)進(jìn)程創(chuàng)建和進(jìn)程結(jié)束的內(nèi)部基本處理流程。進(jìn)程創(chuàng)建的基本過(guò)程:?申請(qǐng)空白PCB(創(chuàng)
16、建內(nèi)核進(jìn)程對(duì)象)?為新進(jìn)程分配資源?創(chuàng)建進(jìn)程地址空間框架;?創(chuàng)建進(jìn)程打開(kāi)對(duì)象句柄表;?加載并映射新進(jìn)程映像到進(jìn)程用戶(hù)空間,包括分配部分物理內(nèi)存頁(yè);?在進(jìn)程用戶(hù)空間中分配進(jìn)程運(yùn)行環(huán)境控制塊(PEB);?初始化進(jìn)程PCB和PEB?將新進(jìn)程狀態(tài)置為“就緒”,并插入就緒隊(duì)列。 進(jìn)程的終止/退出(EXIT()創(chuàng)建仆紅縮扌迅N 苗掛起壬H 起ra應(yīng)丁n隧桂起聽(tīng)雙掛起:扛?根據(jù)被終止進(jìn)程標(biāo)識(shí),從PCB隊(duì)列中檢索出該進(jìn)程PCB從中讀出進(jìn)程狀態(tài);?若被終止進(jìn)程處于執(zhí)行狀態(tài),應(yīng)立即中止該進(jìn)程的執(zhí)行?修改該進(jìn)程的狀態(tài)到終止?fàn)顟B(tài),并立即申請(qǐng)?jiān)僬{(diào)度;?若還有子孫進(jìn)程,還應(yīng)將它們終止或過(guò)繼;?釋放進(jìn)程擁有的所有資源;?釋
17、放PCB7.請(qǐng)說(shuō)明進(jìn)程與線程的區(qū)別與聯(lián)系。線程擁有獨(dú)立的用戶(hù)空間嗎?線程可以參 與資源分配嗎?1)進(jìn)程與線程的區(qū)別與聯(lián)系:a)地址空間: 不同進(jìn)程的地址空間相互獨(dú)立, 而同一進(jìn)程的各線程共享同一地址空間, 一 個(gè)進(jìn)程中的線程在另一進(jìn)程中是不可見(jiàn)的。b)通信關(guān)系:進(jìn)程間通信必須通過(guò)OS提供的進(jìn)程間通信機(jī)制,而同一進(jìn)程的線程間通信 可以通過(guò)直接讀寫(xiě)進(jìn)程數(shù)據(jù)段如全局變量進(jìn)行 (仍需要同步互斥機(jī)制保證數(shù)據(jù)訪問(wèn)的一 致性)。c)調(diào)度切換:同一進(jìn)程中的線程上下文切換比進(jìn)程上下文切換快得多。d)線程與進(jìn)程相比的主要優(yōu)點(diǎn):創(chuàng)建、終止、切換快,系統(tǒng)開(kāi)銷(xiāo)少;通信方便 由于同進(jìn)程內(nèi)線程間共享內(nèi)存和文件資源,故可直接
18、進(jìn)行不通過(guò)內(nèi)核的通信; 系統(tǒng)允許的最大線程數(shù)限制弱得多;e)采用多線程的程序設(shè)計(jì)技術(shù), 可以更好提高系統(tǒng)的運(yùn)行性能 (如吞吐量、 計(jì)算速度和響 應(yīng)時(shí)間等)。2)線程沒(méi)有獨(dú)立的用戶(hù)空間,同一進(jìn)程的多個(gè)線程位于同一用戶(hù)空間: 線程在用戶(hù)空間的相關(guān)數(shù)據(jù)結(jié)構(gòu)有自己專(zhuān)有堆棧; 有自己的運(yùn)行上下文; 有自己的線程環(huán)境塊TEB以及內(nèi)核數(shù)據(jù)結(jié)構(gòu)TCBPEB在用戶(hù)空間的位置是固定的,PEB下方就是TEB,進(jìn)程中有幾個(gè)線程就有幾個(gè)TEB每個(gè)TEB占一個(gè)4KB的頁(yè)面。3)線程不可以參與資源分配:一個(gè)進(jìn)程內(nèi)可容納多個(gè)線程。 進(jìn)程仍作為參與資源分配的最基本單位, 但把線程作為調(diào) 度的最基本單位,從而達(dá)到以小的開(kāi)銷(xiāo)來(lái)提高
19、進(jìn)程內(nèi)的并發(fā)和共享程度的目的。8. 請(qǐng)說(shuō)明 windows 系統(tǒng)中與線程描述有關(guān)的數(shù)據(jù)結(jié)構(gòu),以及線程創(chuàng)建的基本過(guò) 程。線程的相關(guān)數(shù)據(jù)結(jié)構(gòu):線程的內(nèi)核數(shù)據(jù)結(jié)構(gòu)(代表對(duì)象):是ETHREA,是一種調(diào)度對(duì)象,它的第一個(gè)成份是數(shù)據(jù)結(jié)構(gòu)KTHREAD也稱(chēng)為T(mén)CB;線程在用戶(hù)空間的相關(guān)數(shù)據(jù)結(jié)構(gòu): 有自己專(zhuān)有堆棧; 有自己的運(yùn)行上下文; 有自己的線程環(huán)境塊TEB;(PEB在用戶(hù)空間的位置是固定的,PEB下方就是TEB,進(jìn)程中有幾個(gè)線程就有幾個(gè)TEB,每 個(gè)TEB占一個(gè)4KB的頁(yè)面。) 線程的創(chuàng)建: 一般首個(gè)線程在進(jìn)程創(chuàng)建的結(jié)束階段被自動(dòng)創(chuàng)建 (由父進(jìn)程代為創(chuàng)建) ;其它線程由進(jìn)程自 己調(diào)用系統(tǒng)API函數(shù)創(chuàng)建
20、。線程創(chuàng)建的基本過(guò)程:創(chuàng)建/初始化ETHREA數(shù)據(jù)結(jié)構(gòu),并處理好與EPROCES的關(guān)系。 為新線程分配堆棧、創(chuàng)建并初始化執(zhí)行上下文。 在所屬進(jìn)程的用戶(hù)空間中,創(chuàng)建并設(shè)置新線程TEB。進(jìn)一步設(shè)置目標(biāo)線程的KTHREAD據(jù)結(jié)構(gòu),包括:設(shè)定新線程在用戶(hù)空間執(zhí)行入口始址。ETHREAD數(shù)據(jù)結(jié)構(gòu)中有相關(guān)成份,用來(lái)存放相關(guān)地址。將其上下文中的斷點(diǎn)(返回點(diǎn))設(shè)置成指向內(nèi)核中的一段程序KiThreadStartup,使 得該線程一旦被調(diào)度運(yùn)行時(shí)就從這里開(kāi)始執(zhí)行。將線程對(duì)象標(biāo)插入就緒隊(duì)列第3章 存儲(chǔ)管理1.說(shuō)明存儲(chǔ)管理的主要功能和目標(biāo)。1內(nèi)存分配與回收:為每個(gè)進(jìn)程創(chuàng)建執(zhí)行空間,分配初始所需基本內(nèi)存,并允許進(jìn)程在
21、執(zhí)行中動(dòng)態(tài)申請(qǐng)/釋放內(nèi)存;2實(shí)現(xiàn)有效的存儲(chǔ)保護(hù)與共享;3主存擴(kuò)充(擴(kuò)充主存的大小) 引入虛擬存儲(chǔ)技術(shù),用外存擴(kuò)充主存數(shù)量,彌補(bǔ)物理內(nèi)存數(shù)量的不足;4提高主存的利用率 采用合理得當(dāng)?shù)乃惴ā⒉呗院蛿?shù)據(jù)結(jié)構(gòu); 提高計(jì)算機(jī)資源利用率的根本途徑是采用多道程序設(shè)計(jì)技術(shù),實(shí)現(xiàn)并發(fā)共享。2.若采用首次適應(yīng)策略和 FBC 進(jìn)行空閑分區(qū)管理的動(dòng)態(tài)分區(qū)分配描述算法。若 將首次適應(yīng)策略改為最壞適應(yīng)策略、最佳適應(yīng)策略或循環(huán)首次適應(yīng)策略,該 如何修改算法?一種典型的動(dòng)態(tài)分區(qū)分配算法/采用首次適應(yīng)算法和FBC結(jié)構(gòu)long get_block(int x, byte * p) /請(qǐng)求大小為Xint i; long y;i=1
22、;while ( FBCi.size!=0 & FBCi.size=delt) FBCi.size= y;FBCi.addr= FBCi.addr+x;return x;最壞適應(yīng)策略:此處有錯(cuò),循環(huán)結(jié)束條件欠妥,最后應(yīng)該給FBC賦值long get_block(int x, byte * p) /請(qǐng)求大小為Xint i,j,max; long y;i=1;j=1;while ( FBCi.size!=0 & FBCi.size=x)availj+=FBCi;i+;min=avail1;for(i=1;i=max) max=availj;if (avali.size =0) p=
23、null;return 0 ;p=availi.addr;y=availi.size-x;if (y=delt) availi.size= y;availi.addr= availi.addr+x;return x;最佳適應(yīng)策略:此處有錯(cuò),循環(huán)結(jié)束條件欠妥,最后應(yīng)該給FBC賦值(懶得改了)long get_block(int x, byte * p) /請(qǐng)求大小為Xint i,j,min; long y;i=1;j=1;while ( FBCi.size!=0 & FBCi.size=x)availj+=FBCi;i+;min=avail1;for(i=1;ij;i+) if(avai
24、li=delt) availi.size= y;availi.addr= availi.addr+x;return x;循環(huán)首次適應(yīng)策略:int i ,flag=0; /全局變量long get_block(int x, byte * p) /請(qǐng)求大小為Xlong y;if(flag=0)i=1;flag=1;while ( FBCi.size!=0 & FBCi.size=delt) FBCi.size= y;FBCi.addr= FBCi.addr+x;return x;3.歸納總結(jié)頁(yè)式存儲(chǔ)分配與管理的基本特點(diǎn)。頁(yè)式分配管理的基本思想:進(jìn)程使用線性邏輯地址LA(32位、一維、連續(xù))
25、OS透明地將線性地址分頁(yè),即將32位地址劃分為兩段:p=LA/頁(yè)大小;d=LA-P*頁(yè)大小OS透明地將物理內(nèi)存也按頁(yè)大小(4k)劃分一系列的頁(yè)框(frame),并進(jìn)行依次編號(hào)OS通過(guò)頁(yè)映射表(頁(yè)表),將進(jìn)程地址空間的所有邏輯頁(yè),分別映射加載到不同的、 不必連續(xù)的物理頁(yè)框中。頁(yè)式分配的特點(diǎn):優(yōu)點(diǎn):內(nèi)存分配適應(yīng)性更強(qiáng);沒(méi)有外碎片;每個(gè)進(jìn)程浪費(fèi)空間不超過(guò)1個(gè)頁(yè)。缺點(diǎn):仍要求程序一次性地全部裝入內(nèi)存。4.試描述帶有快表的頁(yè)式地址變換機(jī)制。由于頁(yè)表是存放在內(nèi)存中的,CPU每存取一條指令或一個(gè)數(shù)據(jù),都要兩次訪問(wèn)內(nèi)存,第一次訪問(wèn)內(nèi)存中的頁(yè)表,以得到指令或數(shù)據(jù)所在頁(yè)對(duì)應(yīng)的內(nèi)存塊號(hào);第二次才可以根據(jù)物理地址存取
26、指令或數(shù)據(jù),這使得計(jì)算機(jī)的處理速度降低了近1/2。為了提高存取速度,可在地址變換機(jī)構(gòu)中增設(shè)一個(gè)具有并行查找能力的高速緩沖寄存器,又稱(chēng)為“聯(lián)想寄存器”或 “快表”,用以存放當(dāng)前被頻繁訪問(wèn)的頁(yè)面的也好和對(duì)應(yīng)的頁(yè)表項(xiàng)。在進(jìn)行地址轉(zhuǎn)換時(shí),地址變換機(jī)構(gòu)自動(dòng)將邏輯地址中的頁(yè)號(hào)并行地與快表中的所有也好 進(jìn)行比較,若其中有與此相匹配的頁(yè)號(hào),便可以直接從快表中讀出該頁(yè)對(duì)應(yīng)的物理塊號(hào),并送到物理地址寄存器中。如果在快表中未找到對(duì)應(yīng)的頁(yè)號(hào),則仍需訪問(wèn)內(nèi)存中的頁(yè)表來(lái)進(jìn)行地址轉(zhuǎn)換,同時(shí)還必須將得到的頁(yè)表項(xiàng)與頁(yè)號(hào)一起裝入到快表中,若快表已滿(mǎn),則還需根據(jù)置換算法淘汰某個(gè)快表項(xiàng),已裝入新內(nèi)容。由于成本的關(guān)系,快表通常做得較小
27、。5.試描述引入目錄頁(yè)的、具有兩級(jí)頁(yè)表的頁(yè)式地址變換機(jī)制。針對(duì)難以找到大的連續(xù)內(nèi)存空間以存放頁(yè)表的問(wèn)題,可利用將頁(yè)表進(jìn)行分頁(yè)的辦法,使每個(gè)頁(yè)面的大小與內(nèi)存物理塊的大小相同,離散地存放在不同的物理塊中,并為之建立一張頁(yè)表(外層頁(yè)表Outer Page Table)。以32位邏輯地址空間為例, 家丁頁(yè)面大小為4kB, 若采用1級(jí)頁(yè)表結(jié)構(gòu),須具有20位頁(yè)號(hào)占1M在采用兩級(jí)頁(yè)表結(jié)構(gòu)時(shí),再對(duì)頁(yè)表進(jìn)行 分頁(yè),使每個(gè)頁(yè)表中包含210個(gè)頁(yè)表項(xiàng),此時(shí)邏輯地址結(jié)構(gòu)如下:外層頁(yè)號(hào)外層頁(yè)內(nèi)地址、頁(yè)內(nèi)地址1 丿P1P2d3122 2112 1106.說(shuō)明段式分配管理的基本數(shù)據(jù)結(jié)構(gòu),以及段式系統(tǒng)的地址變換機(jī)制。段式分配與
28、管理的基本思想(地址變換機(jī)制):按程序中的自然分段特性來(lái)劃分邏輯空間,形成二維地址空間。 例如,序中主程序、子程序、靜態(tài)變量、堆棧等,都是基于段的。邏輯地址形式:(段號(hào)s,段內(nèi)位移d);低級(jí)語(yǔ)言程序中用戶(hù)可直接給出該形式地址,高級(jí)語(yǔ)言程序在編譯后也可得到這種形式地址。程序加載時(shí),OS為所有的段分配所需內(nèi)存,每個(gè)段被分配在一個(gè)連續(xù)分區(qū);但進(jìn)程中 的各個(gè)段可離散分配到主存的不同分區(qū);在為每個(gè)段分配物理內(nèi)存時(shí),采用動(dòng)態(tài)分區(qū)管理方法。段式分配管理的相關(guān)數(shù)據(jù)結(jié)構(gòu)進(jìn)程用戶(hù)空間段描述表段長(zhǎng)|屬性|起始邏輯地址|段表項(xiàng)索引號(hào)進(jìn)程段表(Segment Table,ST)每個(gè)進(jìn)程一張(套),被放置在系統(tǒng)空間段長(zhǎng)|
29、段屬性(保護(hù)碼)|段基址進(jìn)程局部描述符表(Local Descriptor Table, LDT)描述可變分區(qū)的空閑段表(FBT或FBC_ hh用戶(hù)空間 中的一個(gè) 邏輯段加載/映射需借助:FBT或FBC7.什么是局部性原理?試說(shuō)明虛擬存儲(chǔ)管理實(shí)現(xiàn)的基本思想、技術(shù)優(yōu)勢(shì)和特征。1)局部性原理:程序在執(zhí)行過(guò)程中的一個(gè)較短時(shí)期,所執(zhí)行的指令地址和操作數(shù)地址,將局限于一定區(qū)域內(nèi)。程序執(zhí)行活動(dòng)具有:時(shí)間局部性和空間局部性。2)虛擬存儲(chǔ)管理實(shí)現(xiàn)的基本思想:程序裝入時(shí),不必將其全部讀入內(nèi)存,只需將當(dāng)前執(zhí)行需要的部分頁(yè)(或段)裝入內(nèi)存,就可讓程序開(kāi)始執(zhí)行。在程序執(zhí)行過(guò)程中,如需訪問(wèn)尚未在內(nèi)存的邏輯地址單元(缺頁(yè)
30、或缺段),則OS通過(guò)相應(yīng)機(jī)制將所缺頁(yè)(段)裝入內(nèi)存消除缺頁(yè)(段)故障。另一方面,OS還將暫時(shí)不用的頁(yè)(段)調(diào)出內(nèi)存,以騰出更多的可用內(nèi)存空間。 從用戶(hù)的角度看,系統(tǒng)好象提供了比實(shí)際內(nèi)存更大的存儲(chǔ)容量這種虛擬擴(kuò)展的存儲(chǔ) 體系,常被稱(chēng)為“虛擬存儲(chǔ)器”3)技術(shù)優(yōu)勢(shì):能給用戶(hù)提供大于實(shí)際物理內(nèi)存的虛擬存儲(chǔ)器, 允許在較小內(nèi)存中執(zhí)行較大進(jìn)程, 并可 在有限主存中容納更多的并發(fā)進(jìn)程。32與覆蓋技術(shù)相比,虛擬存儲(chǔ)實(shí)現(xiàn)對(duì)用戶(hù)透明,不影響用戶(hù)編程結(jié)構(gòu),用戶(hù)可在高達(dá)232的虛空間編制程序。4)特征:離散性;多次性;對(duì)換性;虛擬性;5)實(shí)現(xiàn)方式: 請(qǐng)求分頁(yè);請(qǐng)求分段;請(qǐng)求段頁(yè)式;8.與頁(yè)式系統(tǒng)相比,請(qǐng)求分頁(yè)系統(tǒng)的頁(yè)
31、表項(xiàng)擴(kuò)展了哪些信息域?請(qǐng)簡(jiǎn)要說(shuō)明它們的作用。 請(qǐng)求分頁(yè)的虛存系統(tǒng)需對(duì)頁(yè)式系統(tǒng)進(jìn)行如下幾方面的擴(kuò)充:對(duì)頁(yè)表的頁(yè)表項(xiàng)(PTE)進(jìn)行擴(kuò)展,增加一些必要的管理標(biāo)志位(它們占用PTE原先恒為0的低位段,故并不需要擴(kuò)大PTE的大小)。(不需增加新的硬件或設(shè)施)增加可有效處理缺頁(yè)(故障)的相關(guān)設(shè)施和機(jī)制(硬件)增強(qiáng)頁(yè)面調(diào)度管理能力(軟件擴(kuò)展)選用合適的頁(yè)面調(diào)入策略、頁(yè)面置換策略和頁(yè)面置換算法; 增強(qiáng)對(duì)系統(tǒng)及各進(jìn)程駐留頁(yè)面集,即“工作集”的有效管理,降低系統(tǒng)缺頁(yè)率,提高系 統(tǒng)性能。(軟件擴(kuò)展)支持自動(dòng)選取/設(shè)定工作集大小,及動(dòng)態(tài)維護(hù)、修剪工作集。 增加對(duì)物理頁(yè)框的管理,以支持更有效的頁(yè)面調(diào)度和工作集管理(軟件
32、擴(kuò)展)增加頁(yè)框狀態(tài)描述數(shù)據(jù)庫(kù),該庫(kù)可直接存儲(chǔ)在相關(guān)頁(yè)框中。9.在請(qǐng)求分頁(yè)系統(tǒng)中,頁(yè)故障中斷有何特點(diǎn)?請(qǐng)描述這類(lèi)系統(tǒng)的缺頁(yè)故障處理機(jī)制。 缺頁(yè)中斷是一種比較特殊的中斷,體現(xiàn)在:a)在指令執(zhí)行期間產(chǎn)生和處理缺頁(yè)中斷b)常規(guī)外部中斷,是在每條指令執(zhí)行完畢后,檢查是否有中斷請(qǐng)求到達(dá)。c)一條指令可能產(chǎn)生多次中斷。d)當(dāng)從中斷處理程序返回時(shí),能正確執(zhí)行原先產(chǎn)生缺頁(yè)故障的指令。 故障處理的基本過(guò)程:當(dāng)發(fā)生缺頁(yè)故障時(shí),OS會(huì)向外存(頁(yè)文件或頁(yè)映射文件)發(fā)出讀操作調(diào)入相關(guān)頁(yè)面; 頁(yè)面調(diào)入I/O操作是同步的, 即線程會(huì)進(jìn)入睡眠等待直到I/O完成(等待事件到來(lái)) 被喚醒。對(duì)同一進(jìn)程的多個(gè)線程(并發(fā)),若遇到同位置
33、缺頁(yè)故障,可串接到同一等待事件中.頁(yè)面調(diào)入I/O代碼也必須能識(shí)別處理調(diào)入完成后,相關(guān)頁(yè)表項(xiàng)的情況變換。10. 在請(qǐng)求分頁(yè)系統(tǒng)中,若內(nèi)存分配有固定 / 可變兩種,置換有全局 / 局部置換兩 種,那么,基于分配與置換的組合,可得到哪幾種頁(yè)面置換策略?共有四種,分別為: 固定內(nèi)存分配,全局置換策略:采用該策略是, 為進(jìn)程分配的物理塊數(shù)目在進(jìn)程的整個(gè)生命周期都固定不變, 若進(jìn)程因調(diào)入 頁(yè)面而需要換出某個(gè)頁(yè)面, 可以從全局進(jìn)行置換。 雖然比固定內(nèi)存的局部置換好一些, 但是 固定的內(nèi)存限制了整個(gè)置換的效果。可變內(nèi)存分配,全局置換策略:采用該策略時(shí), 系統(tǒng)先為每個(gè)進(jìn)程分配一定數(shù)目的物理塊, 當(dāng)進(jìn)程發(fā)生缺頁(yè)時(shí)
34、, 若系統(tǒng)中有 空閑的物理塊, 則為其分配一個(gè)物理塊并裝入缺頁(yè); 若系統(tǒng)中已沒(méi)有空閑的物理塊, 則為其 分配一個(gè)物理塊并裝入缺頁(yè); 若系統(tǒng)中已沒(méi)有空閑的物理塊, 則從內(nèi)存中選擇一頁(yè)換出, 再 裝入缺頁(yè), 被換出的頁(yè)可以是系統(tǒng)中任意進(jìn)程的頁(yè), 這樣,自然又會(huì)使那個(gè)進(jìn)程的物理塊減 少,進(jìn)而使其缺頁(yè)率增加。固定內(nèi)存分配,局部置換策略:采用該策略是, 為進(jìn)程分配的物理塊數(shù)目在進(jìn)程的整個(gè)生命周期都固定不變, 若進(jìn)程因調(diào)入 頁(yè)面而需要換出某個(gè)頁(yè)面, 則只能患處他自己的內(nèi)存頁(yè)面。 由于進(jìn)程是動(dòng)態(tài)的, 即使在運(yùn)行 之前為它分配了適當(dāng)數(shù)目的內(nèi)存塊, 在采用固定分配局部置換策略時(shí), 進(jìn)程在運(yùn)行過(guò)程中仍 然可能會(huì)因
35、為內(nèi)存塊太少而頻繁缺頁(yè),或者因?yàn)閮?nèi)存塊太多而浪費(fèi)空間。可變內(nèi)存分配,局部置換策略:采用該策略時(shí), 為每個(gè)進(jìn)程分配一定數(shù)目的物理塊后, 若某個(gè)進(jìn)程發(fā)生缺頁(yè), 則只能將自己 的某個(gè)內(nèi)存頁(yè)換出, 。如果進(jìn)程在運(yùn)行時(shí)頻繁發(fā)生缺頁(yè)中斷, 則系統(tǒng)需為該進(jìn)程分配若干附 加的物理塊,直至其缺頁(yè)率減少到適當(dāng)程度為止; 反之, 若一個(gè)進(jìn)程的缺頁(yè)率特別低, 則可 以適當(dāng)減少分配給它的物理塊, 但不應(yīng)引起其缺頁(yè)率的明顯增加。因此, 可變分配局部置換 策略可以獲得較高的內(nèi)存空間利用率,同時(shí)又能保證每個(gè)進(jìn)程有較低的缺頁(yè)率。11.簡(jiǎn)要說(shuō)明OPT FIFO、LFU LRU CLOCK及改進(jìn)CLOCK等置換算法的基本思想,若假
36、設(shè) 系統(tǒng)采用固定分配局部替換的頁(yè)面調(diào)入策略,并假設(shè)某進(jìn)程在創(chuàng)建時(shí),分配到了3個(gè)頁(yè)面框。試針對(duì)如下的該進(jìn)程相關(guān)頁(yè)面引用順序;7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1分別計(jì)算采用OPT FIFO和LRU三種算法時(shí)的缺頁(yè)率。幾種算法的基本思想: 最佳算法(optimal, OPT)選擇未來(lái)最長(zhǎng)時(shí)間不使用頁(yè)進(jìn)行置換(最理想算法); 先進(jìn)先出算法(FIFO)選擇最先進(jìn)入駐留集的頁(yè)面進(jìn)行置換; 最不常用算法(Least Frequently Used, LFU)選擇到至今訪問(wèn)次數(shù)最少的頁(yè)進(jìn)行置換,要設(shè)置一個(gè)頁(yè)面訪問(wèn)計(jì)數(shù)器。最近最久
37、未使用算法(Least Rece ntly Used, LRU)?選擇內(nèi)存中至今最久未使用頁(yè)面進(jìn)行置換;是局部性原理的合理近似,性能接近最佳,但硬件開(kāi)銷(xiāo)較大。時(shí)鐘算法(clock)?也稱(chēng)最近未用算法(Not Recently Used,NRU),是LRU和FIFO的折衷。每頁(yè)框有個(gè)使用位(use bit,ub),若該頁(yè)被訪問(wèn)ub=1。所有駐留頁(yè)面組織為類(lèi)似時(shí)鐘的環(huán)形緩 沖池,置換時(shí)采用一個(gè)類(lèi)時(shí)鐘指針,從當(dāng)前指針位置開(kāi)始順時(shí)針?biāo)阉鳈z查ub=0的頁(yè)框,選擇首個(gè)遇到的ub=0的頁(yè)框進(jìn)行置換。改進(jìn)的時(shí)鐘算法(結(jié)合訪問(wèn)位A和修改位M)?第一輪候選對(duì)象:A=0AM=0,失敗進(jìn)入下一輪?第二輪候選對(duì)象:A=
38、0AM0,失敗進(jìn)入下一輪?第三輪,先將所有目標(biāo)駐留頁(yè)面框的A復(fù)位,再?gòu)臐M(mǎn)足A=0A博0的候選頁(yè)面框中,進(jìn)行一輪選擇。70120304230321201701FIFO77700123042223000127缺頁(yè)率001123042333011127015/20122304230001222701LRU77701223042203312017缺頁(yè)率001203042303212017012/20120304230321201701OPT77722222222222222777缺頁(yè)率00000044400000000009/20111333333331111111第 4 章 進(jìn)程的同步與通信(共享變
39、量是否一定互斥使用)1.了解多進(jìn)程環(huán)境下資源的概念、分類(lèi)和特性。概念:Any entity or any abstract machine component ,if it satisfies following charactics:(滿(mǎn)足以下三個(gè)特征的任何實(shí)體或抽象的計(jì)算機(jī)元件:)(1)a process must request it from OS(進(jìn)程需要從操作系統(tǒng)申請(qǐng)它)(2)theprocess must block its exeuti on un til the en tity is allocated to it(資源未分配給進(jìn)程時(shí),進(jìn)程處于阻塞狀態(tài))(3)thecoexi
40、st ing process will compete for resources if they n eed resources(當(dāng)互斥的進(jìn)程需要資源時(shí),進(jìn)程之間處于競(jìng)爭(zhēng)關(guān)系)分類(lèi):分類(lèi)一:(1)可分配,用完要?dú)w還(可歸還)(2)無(wú)需分配的抽象資源分類(lèi)二:(1)可冋時(shí)共享資源(2)臨界資源特性:有限性:2什么是臨界區(qū)?請(qǐng)說(shuō)明臨界區(qū)的代碼模式、同步原則。若不同進(jìn)程訪問(wèn)相同 臨界資源R1,它們?cè)L問(wèn)臨界資源 R1 的代碼一定相同嗎?它們控制進(jìn)入訪問(wèn) 臨界資源 R1 代碼區(qū)的同步代碼一定相同嗎?臨界區(qū)定義:每個(gè)進(jìn)程中訪問(wèn)臨界資源的那段代碼稱(chēng)為臨界區(qū)(Critical Section)(臨界資源是一次
41、僅允許一個(gè)進(jìn)程使用的共享資源)或定義為 :a segment of code ,that write a shard device(write a shared device,是寫(xiě)入操作,非讀寫(xiě)操作),which cannot be wxcuted while the other process arein the resp ond segme nt of code that acess to the same resources代碼模式:/進(jìn)入臨界區(qū)En terCriticalSecti on(&g_cs);/對(duì)共享資源進(jìn)行寫(xiě)入(不是讀寫(xiě),)操作/離開(kāi)臨界區(qū)2.什么是臨界區(qū)?每個(gè)進(jìn)程
42、中訪問(wèn)臨界資源的那段代碼稱(chēng)為臨界區(qū)(Critical Section)(臨界資源是一次僅允許一個(gè)進(jìn)程使用的共享資源)請(qǐng)說(shuō)明臨界區(qū)的代碼模式、同步原則。/臨界區(qū)結(jié)構(gòu)對(duì)象CRITICAL_SECTION g_cs;/共享資源char g_cArray10;UINT ThreadProc10(LPVOID pParam)/進(jìn)入臨界區(qū)EnterCriticalSection(&g_cs);/對(duì)共享資源進(jìn)行寫(xiě)入操作for (int i = 0; i 10; i+) g_cArrayi = a;Sleep(1); /離開(kāi)臨界區(qū)LeaveCriticalSection(&g_cs); ret
43、urn 0;UINT ThreadProc11(LPVOID pParam)/進(jìn)入臨界區(qū)EnterCriticalSection(&g_cs);/對(duì)共享資源進(jìn)行寫(xiě)入操作for (int i = 0; i 10; i+) g_cArray10 - i - 1 = b; Sleep(1);/離開(kāi)臨界區(qū)LeaveCriticalSection(&g_cs); return 0;void CSample08View:OnCriticalSection()/初始化臨界區(qū)InitializeCriticalSection(&g_cs);/啟動(dòng)線程AfxBeginThread(Thr
44、eadProc10, NULL);AfxBeginThread(ThreadProc11, NULL);/等待計(jì)算完畢Sleep(300);/報(bào)告計(jì)算結(jié)果CStri ng sResult = CStri ng(g_cArray);AfxMessageBox(sResult);進(jìn)程進(jìn)入臨界區(qū)的調(diào)度原則是:1、如果有若干進(jìn)程要求進(jìn)入空閑的臨界區(qū),一次僅允許一個(gè)進(jìn)程進(jìn)入。2、任何時(shí)候,處于臨界區(qū)內(nèi)的進(jìn)程不可多于一個(gè)。如已有進(jìn)程進(jìn)入自己的臨界區(qū),則 其它所有試圖進(jìn)入臨界區(qū)的進(jìn)程必須等待。3、進(jìn)入臨界區(qū)的進(jìn)程要在有限時(shí)間內(nèi)退出,以便其它進(jìn)程能及時(shí)進(jìn)入自己的臨界區(qū)。4、 如果進(jìn)程不能進(jìn)入自己的臨界區(qū),則應(yīng)
45、讓出CPU避免進(jìn)程出現(xiàn)“忙等”現(xiàn)象若不同進(jìn)程訪問(wèn)相同臨界資源R1,它們?cè)L問(wèn)臨界資源R1的代碼一定相同嗎?不一定,例如相同的循環(huán),可以采用i+或者使用i-它們控制進(jìn)入訪問(wèn)臨界資源R1代碼區(qū)的同步代碼一定相同嗎?一定相同同步原則:忙碌等待(必須):對(duì)已有進(jìn)程進(jìn)入臨界區(qū)時(shí),其他試圖進(jìn)入臨界區(qū)的進(jìn)程立即進(jìn)入臨界區(qū)。 空閑則入(必須):當(dāng)沒(méi)有進(jìn)程處于臨界區(qū)時(shí),可以允許一個(gè)請(qǐng)求進(jìn)入臨界區(qū)的進(jìn)程立即進(jìn)入臨界區(qū)。有限等待(錦上添花):對(duì)要求訪問(wèn)臨界資源的進(jìn)程,應(yīng)保證能在有限時(shí)間內(nèi)進(jìn)入臨界區(qū)。讓權(quán)等待(錦上添花):當(dāng)進(jìn)程不能進(jìn)入臨界區(qū)時(shí),應(yīng)釋放處理機(jī)。3.請(qǐng)寫(xiě)出利用1)禁止中斷結(jié)合共享標(biāo)志變量;2)多個(gè)共享標(biāo)志
46、變量;3)硬件指令TS; 4) 硬件指令SWAP等四種技術(shù)方案,實(shí)現(xiàn)臨界區(qū)同步的算法,并分別舉一例說(shuō)明它們的應(yīng) 用方法。這些算法都是基于平等競(jìng)爭(zhēng)的同步實(shí)現(xiàn)算法,它們能實(shí)現(xiàn)“有限等待”和“讓 權(quán)等待”這兩條原則嗎?1)禁止中斷結(jié)合共享標(biāo)志變量:En ter(lock)Disable in terrupt();While(lock )En able in terrupt()Disable in terrupt ()Lock=true;En able in terrupt()Exit (lock)Disable interrupt();Lock=false;Enable interrupt();2)
47、多個(gè)共享標(biāo)志變量:Boolean flagNWhile(1)Flagi=true;Turn=j;While(flagj=true& turn=j)null;Flagi=false;3)硬件指令TS:TS功能描述:Boolean TS(boolean *lock)Boolean old;old=*lock;*lock=true;Return old;應(yīng)用(算法描述):Lock=false;While (TS(&lock);Lock=false;進(jìn)程的其他代碼;4)硬件指令SWAP功能描述:Swap(Boolean *a, boolean *b)Boolean temp;Temp=
48、*a;*a=*b;*b=temp;應(yīng)用(算法描述)Pi/Pj(線程):有全局變量lockPi :有局部變量key例子:P1:While(1)key=true;While(key=true)Swap(&lock,&key)Lock=false;用上面所列出的算法語(yǔ)句,沒(méi)有辦法實(shí)現(xiàn)【有限等待】和【讓權(quán)等待】,但通過(guò)改進(jìn)的方式 和引入新的算法或許可以利用這四種方法實(shí)現(xiàn)【有限等待】和【讓權(quán)等待】4.理解信號(hào)量的概念、定義和分類(lèi);理解具有睡眠等待機(jī)制的信號(hào)量實(shí)現(xiàn)算法。信號(hào)量定義:*是一種最最經(jīng)典,能有效解決進(jìn)程同步的軟件方法,也是現(xiàn)代OS中最具基本的同步機(jī)制。*是一種抽象的OS內(nèi)核數(shù)據(jù)類(lèi)
49、型(見(jiàn)作業(yè)本)分類(lèi):(1) 二元信號(hào)量:value 0,1(互斥)(2)一般信號(hào)量:value非負(fù)具有睡眠等待機(jī)制的信號(hào)量實(shí)現(xiàn)算法:typedef struct /信號(hào)量定義int value;LIST_ENTRY queue; semaphore;normal compute section;void P (semaphore s) /wait (semaphore s)/ P操作定義 -s.value; if (s.value 0) 構(gòu)造一個(gè)包含進(jìn)程PID的等待描述塊,插入到信號(hào)量的等待隊(duì)列s.queue中;調(diào)用阻塞原語(yǔ),主動(dòng)放棄CPU進(jìn)入睡眠等待;void V (semaphore s)
50、 /sig nal(semaphore s) / V操作定義 +s.value;if (s.value =0) 從s.queue中移出第1個(gè)等待塊,將對(duì)應(yīng)進(jìn)程狀態(tài)改為就緒態(tài)后5.掌握用信號(hào)量解決臨界區(qū)問(wèn)題、基本同步問(wèn)題、生產(chǎn)者-消費(fèi)者問(wèn)題、讀-寫(xiě)者問(wèn)題和哲學(xué)家就餐問(wèn)題的算法。信號(hào)量解決臨界區(qū)問(wèn)題:Proc_0 Proc_1 while (1) while (1) ;p(mutex);v(mutex);p(mutex);v(mutex);這部分是注解: semaphore mutex=1;ork(proc_O,O);ork(proc_1,O);用信號(hào)量解決基本同步問(wèn)題:proc_A while
51、(1) ;write(x);/produce xV(s1); /sig nal proc_BP(s2);/waitfor proc_Bsig nalread(y);proc_B while (1) P(s1); /waitfor proc_Aread(x);write(y); /produce yV(s2); /sig nal proc_A;注釋部分:semaphore s仁0; s2=0;Ork(proc_A, 0 ); fork(proc_B,0);生產(chǎn)者-消費(fèi)者問(wèn)題:Producer。bufType *next, *herewhile (1) ProduceItem( next);P(e
52、mpty); /claim a empty bufP(mutex); /緩沖池操作here=obtain(empty)V(mutex);CopyBuffer(next, here);P(mutex); /緩沖池操作Release(here,fullPool);V(mutex);V(full); /signal a full bufferConsumer() bufType *next, *herewhile (1) P(full); /claim a full bufP(mutex); /緩沖池操作Here=obtain(full)V(mutex);CopyBuffer(here, next);P(mutex); /緩沖池操作Release(here,emptyPool);V(mutex);V(empty); /signal an emptyCon sumeItem( next)注釋部分:bufType bufferN;semaphore mutex=1; / 互斥使用 buffersemaphore full=O; empty=N;讀-寫(xiě)者問(wèn)題(讀者優(yōu)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 應(yīng)急與安全管理制度
- 影城操作間管理制度
- 微小型工廠管理制度
- 快遞分公司管理制度
- 性教育講師管理制度
- 總工辦員工管理制度
- 情商訓(xùn)練室管理制度
- 戶(hù)外led管理制度
- 換藥室消毒管理制度
- 推拿理療館管理制度
- 人工智能基礎(chǔ)與應(yīng)用課件
- 2022-2023學(xué)年吉林省重點(diǎn)中學(xué)小升初數(shù)學(xué)入學(xué)考試卷含答案
- 2023-2024學(xué)年江蘇省張家港市小學(xué)語(yǔ)文五年級(jí)期末自測(cè)模擬考試題詳細(xì)參考答案解析
- 2023名校人教版數(shù)學(xué)青島市第三十九中學(xué)分班考試模擬試卷
- 中國(guó)糖尿病患者的白內(nèi)障圍手術(shù)期防治策略專(zhuān)家共識(shí)(2020年)
- 中考病句修改試題及答案(完整版)資料
- 下肢靜脈曲張的規(guī)范治療
- 計(jì)算機(jī)組成與設(shè)計(jì)知到章節(jié)答案智慧樹(shù)2023年山東大學(xué)
- 安全施工作業(yè)票(樣板)
- 2023-2024學(xué)年廣東省云浮市小學(xué)數(shù)學(xué)一年級(jí)下冊(cè)期末自測(cè)考試題
- 馬原選擇題題庫(kù)及答案
評(píng)論
0/150
提交評(píng)論