

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、系統(tǒng)課程設(shè)計(jì)實(shí)踐報(bào)告題目:姓名:學(xué)院:專業(yè):班級(jí):學(xué)號(hào):指導(dǎo)教師:計(jì)算機(jī)虛擬頁式存儲(chǔ)管理系統(tǒng)的仿真實(shí)現(xiàn)*信息科技學(xué)院廿算機(jī)科學(xué)技術(shù)系*2017年3月12日目錄摘要3關(guān)鍵詞3Abstract3Keywords31 緒論41.1 選題目的41.2 選題意義42 設(shè)計(jì)思路與完成功能說明42.1 課程設(shè)計(jì)思路42.1.1 模擬多進(jìn)程并發(fā)環(huán)境42.1.2 頁面訪問請(qǐng)求與異常處理52.1.3 過程可視化52.1.4 整體思路流程圖62.2 完成功能說明73 裸機(jī)硬件部件仿真設(shè)計(jì)83. 1存儲(chǔ)空間的設(shè)計(jì)與抽象83.2 存儲(chǔ)管理部件MMU的抽象與設(shè)計(jì)93.3 中央處理器CPU的抽象與設(shè)計(jì)94通用數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)9
2、4.1 后備作業(yè)隊(duì)列抽象設(shè)計(jì)94.1.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)94. 1.2基礎(chǔ)操作94.2 進(jìn)程狀態(tài)隊(duì)列抽象設(shè)計(jì)104.2.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)104.2.2基礎(chǔ)操作104.3 快表抽象設(shè)計(jì)114.3.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)114.3.2基礎(chǔ)操作114.4 頁表項(xiàng)抽象設(shè)計(jì)124.4.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)124.4.2 基礎(chǔ)操作124.5 外頁表項(xiàng)抽象設(shè)計(jì)124.5.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)124.5.2基礎(chǔ)操作134.6 頁表基址寄存器抽象設(shè)計(jì)134.6.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)134.6.2 基礎(chǔ)操作134.7 程序狀態(tài)字抽象設(shè)計(jì)134.7.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)134.7.2 基礎(chǔ)操作134.8 駐留集抽象設(shè)計(jì)134.8.1 數(shù)據(jù)
3、結(jié)構(gòu)設(shè)計(jì)134.8.2 基礎(chǔ)操作144.9 內(nèi)存抽象設(shè)計(jì)144.9.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)144.9.2 基礎(chǔ)操作154.10 外存抽象設(shè)計(jì)154.10.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)154.10.2 基礎(chǔ)操作155 軟件系統(tǒng)設(shè)計(jì)155.1 系統(tǒng)結(jié)構(gòu)155.1.1 底層硬件抽象155.1.2 功能模擬155.1.3 模塊整合165.1.4 系統(tǒng)結(jié)構(gòu)圖175.2 系統(tǒng)類圖與順序圖185. 2.1系統(tǒng)類圖185.2.2系統(tǒng)順序圖195.3 功能實(shí)現(xiàn)流程205.3.1實(shí)現(xiàn)作業(yè)生成、進(jìn)程創(chuàng)建與資源分配205.3.2實(shí)現(xiàn)進(jìn)程調(diào)度與進(jìn)程上下文切換215.3.3實(shí)現(xiàn)對(duì)快表和駐留集的管理225.3.4實(shí)現(xiàn)快表和慢表的搜索235.
4、3.5實(shí)現(xiàn)缺頁異常處理與命中率的計(jì)算245.3.6實(shí)現(xiàn)過程可視化246 關(guān)鍵操作256.1 模擬并發(fā)環(huán)境256.1.1 進(jìn)程阻塞原語256.1.2 進(jìn)程喚醒原語256.1.3 進(jìn)程上下文切換256.2 頁面替換算法266.2.1 先入先出FIFO頁面替換算法266.2.2 最久未被訪問LRU頁面替換算法276.2.3 時(shí)鐘CLOCK頁面替換算法286.3 過程可視化297 技術(shù)問題分析與解決方案307.1 存在問題與解決方案307.2 其他設(shè)想318 實(shí)踐體會(huì)31參考文獻(xiàn)32附件133附件238附件3399計(jì)算機(jī)虛擬頁式存儲(chǔ)管理系統(tǒng)的仿真實(shí)現(xiàn)*專業(yè)學(xué)生*指導(dǎo)教師*摘要:任何程序和數(shù)據(jù)必須占用內(nèi)
5、存空間才能得以執(zhí)行和處理,但讓進(jìn)程全部信息駐留于內(nèi)存是對(duì)內(nèi)存資源的極大浪費(fèi),因此利用“部分裝入,部分替換”來實(shí)現(xiàn)存儲(chǔ)空間在邏輯上的擴(kuò)充是提高內(nèi)存利用率的有效手段,虛擬頁式存儲(chǔ)管理是將程序信息副本存放在外存中,當(dāng)它被調(diào)度投入運(yùn)行時(shí)僅裝入當(dāng)前使用頁面;進(jìn)程執(zhí)行過程中訪問到不在內(nèi)存的頁面時(shí),再由系統(tǒng)自動(dòng)調(diào)入,根據(jù)頁面替換算法選擇淘汰頁面。它依靠底層硬件MMU支撐來完成地址轉(zhuǎn)換和存儲(chǔ)保護(hù)的功能,從邏輯上為用戶提供一個(gè)比物理內(nèi)存容量大得多的、可尋址的存儲(chǔ)器。本次課程設(shè)計(jì)目標(biāo)是利用C+程序設(shè)計(jì)語言抽象硬件部件,模擬系統(tǒng)軟件功能,完成并行環(huán)境下計(jì)算機(jī)虛擬頁式存儲(chǔ)管理系統(tǒng)的仿真實(shí)現(xiàn)。在實(shí)現(xiàn)過程中,采用QtCr
6、eator集成開發(fā)環(huán)境,利用C+面向?qū)ο蟮乃枷耄脤?duì)象類對(duì)硬件部件進(jìn)行抽象模擬,用成員函數(shù)作為接口,模擬各部件API完成功能的集成,基本完成了預(yù)期功能;實(shí)現(xiàn)了并發(fā)環(huán)境下的頁面訪問請(qǐng)求,利用多種頁面替換算法實(shí)現(xiàn)缺頁異常處理中的頁面替換;實(shí)現(xiàn)了進(jìn)程調(diào)度、內(nèi)外存實(shí)時(shí)占用情況及頁面替換的過程可視化,并最終將過程中涉及到的數(shù)據(jù)變化保存至指定文檔。關(guān)鍵詞:虛擬頁式存儲(chǔ)管理;內(nèi)存;外存;頁面替換算法;MMU;C+;可視化TheComputerSimulationofVirtualPageStorageManagementSystemStudentmajoringin*Tutor*Abstract:.Anyp
7、rogramordatamustoccupymemoryspacecanbeimplementedandprocessing,butletalloftheinformationprocessresidesinthememoryistothememoryresourceswaste,therefore"partoftheload,partialsubstitution"isusedtorealizethestoragespaceonthelogicofexpansionisaneffectivemethodforimprovingmemoryutilization,virtu
8、alstoragemanagementpagetypeistheprogramacopyoftheinformationstoredinCRT,whenitisdispatchingoperationuseonlyintothecurrentpage;Theexecutionofaprocesstoaccesstothepagethatisnotinthememory,againbythesystemautomaticallytransferinto,accordingtothepagereplacementalgorithmselectionpage.Itreliesontheunderly
9、inghardwareMMUsupporttocompletetheaddresstranslationandstorageprotectionfunction,logicallyprovidesuserswithamuchlargerthanphysicalmemorycapacity,addressablememory.Thiscoursewasdesignedbyusingc+programdesignlanguageabstracthardwarecomponents,functionofsimulationsystemsoftware,completetheparallelcompu
10、tervirtualpagestoragemanagementsystemundertheenvironmentofthesimulationimplementation.Intheprocessofimplementation,usingQtCreatorintegrateddevelopmentenvironment,usingtheideasofobject-orientedc+,useobjectclassestoabstractsimulationofhardwarecomponents,withamemberfunctionastheinterface,analogcomponen
11、tsAPIcompletefunctionintegration,basicallycompletedtheexpectedfunction;Pageaccessrequestrealizedconcurrentenvironment,usingavarietyofpagereplacementalgorithmimplementationmissingpagepagereplacementinexceptionhandling;Realizedthereal-timeprocessscheduling,bothinsideandoutsidestorageusageandpagereplac
12、ementprocessvisualization,andeventuallywillbeinvolvedintheprocessofdatasavedtothespecifieddocument.Keywords:Virtualpagestoragemanagement;Memory;Peripheralstorage;Pagereplacementalgorithm.MMU.C+;visualization1 緒論11選題目的編寫程序模擬請(qǐng)求分頁虛存管理中的存儲(chǔ)管理部件MMU進(jìn)行虛實(shí)地址轉(zhuǎn)換的過程以及缺頁異常的處理,利用頁面替換算法淘汰頁面,并實(shí)現(xiàn)過程可視化。主要包括:(1)模擬作業(yè)執(zhí)行與
13、調(diào)度,進(jìn)程創(chuàng)建與終止;(2)模擬進(jìn)程調(diào)度與進(jìn)程上下文切換;(3)實(shí)現(xiàn)硬件頁表基址寄存器與快表的管理與訪問;(4)仿真實(shí)現(xiàn)存儲(chǔ)管理部件MMU;(5)仿真實(shí)現(xiàn)頁表、外頁表并對(duì)其進(jìn)行管理與訪問;(6)處理缺頁異常,按照替換算法選擇淘汰頁面;(7)實(shí)現(xiàn)對(duì)內(nèi)存與外存的抽象設(shè)計(jì);(8)內(nèi)存與外存占用情況的可視化;(9)進(jìn)程調(diào)度與頁面替換過程可視化。從而將操作系統(tǒng)的處理器管理與存儲(chǔ)管理聯(lián)系在一起,將理論與實(shí)踐相結(jié)合,從整體上系統(tǒng)的了解并發(fā)環(huán)境中的地址轉(zhuǎn)換機(jī)制,更深入的理解計(jì)算機(jī)虛擬頁式存儲(chǔ)管理系統(tǒng)的實(shí)現(xiàn),在加深對(duì)理論理解的同時(shí)強(qiáng)化編程能力與算法思維。12選題意義存儲(chǔ)管理是操作系統(tǒng)的重要組成部分,負(fù)責(zé)管理計(jì)算
14、機(jī)系統(tǒng)的重要資源內(nèi)存儲(chǔ)器。由于任何程序和數(shù)據(jù)必須占用內(nèi)存空間才能得以執(zhí)行和處理,因此存儲(chǔ)管理的優(yōu)劣直接影響系統(tǒng)性能。但是進(jìn)程全部信息駐留于內(nèi)存是對(duì)內(nèi)存資源的極大浪費(fèi),因此利用“部分裝入,部分替換”來實(shí)現(xiàn)存儲(chǔ)空間在邏輯上的擴(kuò)充是提高內(nèi)存利用率的有效手段。操作系統(tǒng)是一個(gè)并發(fā)系統(tǒng),所有功能都是在并發(fā)環(huán)境下實(shí)現(xiàn)的,因此,如何將虛擬頁式存儲(chǔ)管理和處理器管理有效的結(jié)合起來是該選題的重點(diǎn)也是難點(diǎn),這也是意義所在。找到獨(dú)立章節(jié)的理論知識(shí)之間的聯(lián)系并用代碼建立聯(lián)系,實(shí)現(xiàn)相應(yīng)的功能,不僅僅是對(duì)理論知識(shí)的深入理解的過程,也是實(shí)踐能力、動(dòng)手能力和編程能力的考驗(yàn)與鍛煉有著重要意義。虛擬頁式存儲(chǔ)管理系統(tǒng)涉及到的硬件有中央
15、處理器CPU、存儲(chǔ)管理部件MMU、內(nèi)存、外存以及頁表基址寄存器、快表等相關(guān)寄存器。將這些硬件設(shè)備抽象成代碼實(shí)現(xiàn)不僅僅需要對(duì)這些硬件的屬性結(jié)構(gòu)有全面的了解,還需要對(duì)他們的功能做出動(dòng)態(tài)的仿真。從而在深化理論知識(shí)的同時(shí),也對(duì)面向?qū)ο蟮某橄竽芰εc對(duì)數(shù)據(jù)結(jié)構(gòu)靈活運(yùn)用的能力的鍛煉有著重要意義。同時(shí),虛擬頁式存儲(chǔ)管理系統(tǒng)所基于的“裝入替換”涉及到了頁面的裝入、替換與淘汰,因此需要頁面替換算法來實(shí)現(xiàn)這些功能。常見的頁面替換算法諸如先入先出頁面替換算法(FIFO)、最近最少使用頁面替換算法(LRU)、時(shí)鐘頁面替換算法(LRU)等,用程序設(shè)計(jì)語言實(shí)現(xiàn)這些算法,也對(duì)算法思維的培養(yǎng)有著重要意義。2 設(shè)計(jì)思路與完成功能
16、說明21課程設(shè)計(jì)思路211模擬多進(jìn)程并發(fā)環(huán)境首先從高級(jí)調(diào)度開始,作業(yè)生成后從后備作業(yè)隊(duì)列根據(jù)相關(guān)調(diào)度策略(以先來先服務(wù)為例)獲取作業(yè),接著動(dòng)態(tài)創(chuàng)建作業(yè)所需一系列進(jìn)程,即從PCB池中申請(qǐng)空白PCB,對(duì)其初始化并分配內(nèi)存空間等一系列資源。如果獲得所需的資源,將該P(yáng)CB從新建態(tài)轉(zhuǎn)換為就緒態(tài),即加入就緒隊(duì)列,同時(shí)更改進(jìn)程狀態(tài)位。需要注意的是,在進(jìn)程的抽象設(shè)計(jì)中,為了簡(jiǎn)化設(shè)計(jì)而使PCB代表進(jìn)程,進(jìn)程的指令數(shù)隨機(jī)生成,指令所需訪問的邏輯頁面隨機(jī)生成,邏輯頁號(hào)與物理頁號(hào)的對(duì)應(yīng)關(guān)系由系統(tǒng)為每個(gè)進(jìn)程自動(dòng)生成。進(jìn)程訪問某一頁面時(shí)MMU根據(jù)CPU給出的邏輯地址獲取相應(yīng)的邏輯頁號(hào)與頁內(nèi)偏移;然后以頁號(hào)為索引搜索快表,
17、如果快表中存在該頁號(hào),則獲得物理頁號(hào)與偏移地址拼接成物理地址;如果快表中不存在該頁號(hào),則搜索慢表,如果慢表中存在該頁號(hào)(即頁表項(xiàng)的駐留位為1),也就是該頁面存在于內(nèi)存,則直接獲取相應(yīng)物理頁號(hào),并將該項(xiàng)填入快表;如果慢表中不存在該頁號(hào),也就是該頁面未調(diào)入內(nèi)存(即頁表項(xiàng)駐留位為0),則發(fā)出異常信號(hào);該進(jìn)程被阻塞,釋放CPU資源并在保存現(xiàn)場(chǎng)信息后進(jìn)入等待隊(duì)列,下一個(gè)進(jìn)程獲得CPU資源開始回復(fù)自己的現(xiàn)場(chǎng),也就是進(jìn)程上下文切換,然后進(jìn)入運(yùn)行態(tài)。進(jìn)程從外頁表獲得該缺頁的信息后,如果駐留集未滿則直接加入該頁面對(duì)應(yīng)的邏輯頁號(hào),如果駐留集滿則采用頁面替換策略選擇淘汰相應(yīng)頁面對(duì)應(yīng)的邏輯頁號(hào),并加入新頁面對(duì)應(yīng)的邏輯
18、頁號(hào),同時(shí)將新頁面的邏輯頁號(hào)與物理頁號(hào)的對(duì)應(yīng)關(guān)系加入進(jìn)程快表信息。這時(shí)進(jìn)程等待事件已經(jīng)結(jié)束,進(jìn)程被喚醒,進(jìn)入就緒隊(duì)列等待CPU資源。需要注意,在頁面的訪問與替換過程中涉及到頁表引用位、駐留位等標(biāo)志位的轉(zhuǎn)變。進(jìn)程指令執(zhí)行完畢后,需要結(jié)束進(jìn)程進(jìn)入終止態(tài),從PCB池中撤銷該進(jìn)程PCB,并收回進(jìn)程所占內(nèi)存空間。212頁面訪問請(qǐng)求與異常處理頁面訪問請(qǐng)求過程如下:(1)MMU接收CPU傳送來的邏輯地址并按照頁面大小把它從某位起分解成兩部分:頁號(hào)和頁內(nèi)偏移;(2)以頁號(hào)為索引快速搜索快表TLB;(3)如果命中,立即送出頁框號(hào),并與頁內(nèi)偏移拼接成物理地址;(4)如果不命中,由硬件以頁號(hào)為索引搜索頁表,頁表基址
19、由硬件頁表基址寄存器指出;(5)如果頁表被命中,說明訪問頁面已經(jīng)在內(nèi)存中,可送出頁框號(hào),并與頁內(nèi)偏移拼接成物理地址,同時(shí)要把這個(gè)頁面和頁框信息裝入快表TLB,以備再次訪問。(6)如果發(fā)現(xiàn)頁表中的對(duì)應(yīng)頁面失效,MMU發(fā)出缺頁異常;缺頁異常處理過程如下:(1)掛起請(qǐng)求調(diào)頁的進(jìn)程;(2)根據(jù)頁號(hào)搜索外頁表,找到存放此頁的磁盤物理地址;(3)查看內(nèi)存是否有空閑頁框,如果有則分配一個(gè);(4)如果內(nèi)存中無空閑頁框,按照替換算法選擇淘汰頁面;(5)將修改過的的淘汰頁內(nèi)容寫回磁盤原先位置;(6)進(jìn)行調(diào)頁,把頁面裝入內(nèi)存所分配的頁框中,同時(shí)修改進(jìn)程頁表項(xiàng)。213過程可視化(1)控制臺(tái)顯示作業(yè)與進(jìn)程的創(chuàng)建、執(zhí)行、
20、調(diào)度等狀態(tài)信息,并顯示進(jìn)程的頁面訪問請(qǐng)求、頁面替換過程以及內(nèi)存、外存的占用情況;(2)將作業(yè)與進(jìn)程的創(chuàng)建、執(zhí)行、調(diào)度等狀態(tài)信息寫入文檔,并將進(jìn)程的頁面訪問請(qǐng)求以及頁面替換過程寫入文檔,將內(nèi)存與外存的占用情況寫入文檔;(3)將進(jìn)程的頁面訪問請(qǐng)求以及頁面替換過程寫入圖形化界面,將內(nèi)存與外存的占用情況以位示圖的方法寫入圖形化界面,實(shí)現(xiàn)動(dòng)態(tài)的過程可視化。214整體思路流程圖進(jìn)程上b'tVJ換決得口'L;登闞曲松限列圖2.1.4-1整體思路流程圖頁號(hào)A頁表拴度?否否內(nèi)存滿否?艮表頊在臧申2否否核頁被修改否?貢在內(nèi)存?是CPU檢索快叢啟動(dòng)DO磴件產(chǎn)生觥頁中斷謎求調(diào)頁操件系統(tǒng)命令CPU駅外存
21、諫缺頁修改頁表盼一頁從外存換入內(nèi)存選擇一頁換岀從外存中找到缺頁抿留CPU現(xiàn)場(chǎng)形成物理地址訪問頁我將該頁寫回外存悠改訪問位和悠改位缺頁中斷處理、圖2.1.4-2整體思路流程圖22完成功能說明(1)抽象并設(shè)計(jì)CPU模塊。實(shí)現(xiàn)進(jìn)程上下文切換,模擬進(jìn)程指令的執(zhí)行與進(jìn)程對(duì)頁面訪問請(qǐng)求的生成,實(shí)現(xiàn)對(duì)快表和頁表基址寄存器等硬件寄存器的訪問與管理,其中,快表按照FIFO算法進(jìn)行表項(xiàng)替換;函數(shù)聲明參數(shù)返回值函數(shù)功能setPCBPCBpcbvoid設(shè)置進(jìn)程控制塊,表示該進(jìn)程正在運(yùn)行setPSWPSWpswvoid設(shè)置程序狀態(tài)字,用于進(jìn)程上下文切換setPtbrPTBRptbrvoid設(shè)置進(jìn)程的頁表基址,用于進(jìn)程上
22、下文切換setTLBTQueueptlbvoid置快表內(nèi)容,用于進(jìn)程上下文切換setPCintpcvoid設(shè)置指令計(jì)數(shù)器setIRintirvoid設(shè)置當(dāng)前指令getIR無int獲得當(dāng)前指令邏輯地址InitTlb無void初始化快表ClearTlb無void清空快表(2)抽象并設(shè)計(jì)MMU模塊,實(shí)現(xiàn)對(duì)邏輯地址的分解、對(duì)快表與慢表的搜索、發(fā)出缺頁異常信號(hào),并調(diào)用相應(yīng)異常處理模塊完成對(duì)缺頁異常的處理,最后輸出物理地址;函數(shù)聲明參數(shù)返回值函數(shù)功能setLogicAddr無void獲得邏輯地址setPageNoTemp無void獲得頁號(hào)setOffsetAddr無void獲得偏移地址setCPUCPUc
23、puvoid獲得當(dāng)前CPU狀態(tài)setPhysicAddr無void獲得物理地址CutLogicAddr無void分解邏輯地址,頁號(hào)3位,頁內(nèi)偏移5位(3)抽象并設(shè)計(jì)PCB模塊與PCBPOOL模塊,設(shè)計(jì)后備作業(yè)隊(duì)列、進(jìn)程等待隊(duì)列、就緒隊(duì)列,實(shí)現(xiàn)作業(yè)的生成、調(diào)度、執(zhí)行與終止,以及在作業(yè)執(zhí)行過程中,進(jìn)程的創(chuàng)建、調(diào)度與終止,作業(yè)和進(jìn)程均按照先來先服務(wù)算法進(jìn)行調(diào)度,在進(jìn)程調(diào)度時(shí)需要保護(hù)CPU現(xiàn)場(chǎng)信息,以保證進(jìn)程能夠在自己的運(yùn)行環(huán)境下運(yùn)行;函數(shù)聲明參數(shù)返回值函數(shù)功能CreatePCB無int申請(qǐng)個(gè)空白PCB,分配內(nèi)存并初始化FreePCBPCBfpcbint釋放PCBBlockCoursePCBbpcbi
24、nt進(jìn)程阻塞原語WakeCoursePCB&wpcbint進(jìn)程喚醒原語ReadyQueueisEmpty無int判斷就緒隊(duì)列是否為空WaitQueueisEmpty無int判斷等待隊(duì)列是否為空EnReadyQueuePCBqpcbint進(jìn)就緒隊(duì)列,表示進(jìn)程已獲得內(nèi)存等資源,進(jìn)入就緒態(tài)DeReadyQueue無PCB出就緒隊(duì)列,表示進(jìn)程獲得處理器,進(jìn)入運(yùn)行態(tài)ReadyQueueLength無int獲得就緒隊(duì)列長度EnWaitQueuePCBqpcbint進(jìn)等待隊(duì)列,表示進(jìn)程出現(xiàn)等待事件,被阻塞進(jìn)入等待態(tài)DeWaitQueue無PCB出等待隊(duì)列,表示等待事件結(jié)束(4) 仿真實(shí)現(xiàn)存儲(chǔ)空間模塊
25、,包括內(nèi)存的抽象與外存的抽象,以及對(duì)頁表、外頁表的管理,頁表中有引用位、駐留位等標(biāo)志位;存儲(chǔ)空間按塊劃分,塊與頁大小相同,用位示圖法表示作業(yè)調(diào)度、進(jìn)程調(diào)度過程中存儲(chǔ)空間的占用情況;函數(shù)聲明參數(shù)返回值函數(shù)功能setPCBSpaceintaddr,intpidvoid為進(jìn)程分配內(nèi)存空間freePCBSpaceintaddr,intpidvoid釋放進(jìn)程內(nèi)存空間setPCBpageSpaceintiFvoid為進(jìn)程頁表分配內(nèi)存空間freePCBpageSpaceintiFvoid釋放進(jìn)程頁表內(nèi)存空間setJOBSpaceintaddrvoid為作業(yè)分配外存freeJOBSpaceintaddrvoi
26、d釋放作業(yè)外存(5) 模擬存儲(chǔ)管理程序?qū)θ表摦惓_M(jìn)行處理,按照FIFO、LRU、CLOCK三種頁面替換算法選擇淘汰頁面,實(shí)現(xiàn)頁面的調(diào)入與調(diào)出,并對(duì)進(jìn)程頁表標(biāo)志位進(jìn)行相應(yīng)的操作,實(shí)現(xiàn)進(jìn)程駐留集抽象;函數(shù)聲明參數(shù)返回值函數(shù)功能setRealPageNoTempLRUpcbpool,ShowProgram,ShowMemory,intint獲得頁框號(hào)LRU算法setRealPageNoTempFIFOpcbpool,ShowProgram,ShowMemory,intint獲得頁框號(hào)FIFO算法setRealPageNoTempCLOCKpcbpool,ShowProgram,ShowMemory,
27、intint獲得頁框號(hào)CLOCK算法(6) 將調(diào)度信息以及頁面替換信息寫入文檔,并完成用戶界面設(shè)計(jì),實(shí)現(xiàn)虛擬頁式存儲(chǔ)管理系統(tǒng)的過程可視化。函數(shù)聲明參數(shù)返回值函數(shù)功能setPagePCBpcbvoid獲得當(dāng)前正在運(yùn)行的PCB狀態(tài)clearPage無void清空頁表界面setTlbPCBpcbvoid獲得當(dāng)前快表的狀態(tài)clearTlb無void清空快表界面setStayPagePCBpcbvoid獲得當(dāng)前進(jìn)程LRU方法的駐留集狀態(tài)clearStayPage無void清空駐留集界面setCycleStayPagePCBpcbvoid獲得當(dāng)前進(jìn)程CLOCK方法的駐留集狀態(tài)setFifoStayPage
28、PCBpcbvoid獲得當(dāng)前進(jìn)程FIFO方法的駐留集狀態(tài)clearall無void清空全部界面(7)完成命中率的計(jì)算以評(píng)價(jià)模擬系統(tǒng)的優(yōu)劣。3 裸機(jī)硬件部件仿真設(shè)計(jì)31存儲(chǔ)空間的設(shè)計(jì)與抽象抽象并設(shè)計(jì)存儲(chǔ)空間模塊,采用將程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開的哈弗結(jié)構(gòu),具體分為內(nèi)存抽象與外存抽象。存儲(chǔ)空間按塊劃分,塊與頁大小相同,均為32B。內(nèi)存1024B即32塊,外存2048B即64塊。物理地址9位,4位頁號(hào),5位頁內(nèi)偏移,可訪問512B大小的空間;邏輯地址10位,5位頁號(hào),5位頁內(nèi)偏移,可訪問1024B大小的空間。32存儲(chǔ)管理部件MMU的抽象與設(shè)計(jì)抽象并設(shè)計(jì)存儲(chǔ)管理部件MMU模塊,以對(duì)象類的形式模擬存儲(chǔ)管
29、理部件MMU的結(jié)構(gòu)和功能。存放邏輯地址與物理地址的寄存器等結(jié)構(gòu)部件以靜態(tài)屬性抽象模擬。地址分解、地址轉(zhuǎn)換、發(fā)出異常與異常處理功能等功能以動(dòng)態(tài)成員函數(shù)抽象模擬。33中央處理器CPU的抽象與設(shè)計(jì)抽象并設(shè)計(jì)中央處理器CPU模塊,以對(duì)象類的形式模擬中央處理器CPU的結(jié)構(gòu)和功能。程序狀態(tài)字PSW;頁表基址寄存器PTBR;指令計(jì)數(shù)器PC;指令寄存器IR;快表TLB等寄存器部件都以靜態(tài)屬性抽象模擬。進(jìn)程調(diào)度時(shí)進(jìn)行進(jìn)程上下文切換以保護(hù)CPU現(xiàn)場(chǎng)信息;將邏輯地址傳送給存儲(chǔ)管理部件MMU;指令的運(yùn)行等功能以動(dòng)態(tài)成員函數(shù)抽象模擬。4 通用數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)41后備作業(yè)隊(duì)列抽象設(shè)計(jì)411數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)typedefstrue
30、t/后備作業(yè)隊(duì)列,數(shù)據(jù)結(jié)構(gòu)用隊(duì)列表示intbase10;/隊(duì)列基地址intrear;/隊(duì)列尾指針intfront;/隊(duì)列頭指針JQueue;412基本操作voidEnjob(intjob)/進(jìn)后備作業(yè)隊(duì)列作業(yè)進(jìn)隊(duì)列;尾指針+1;intDeJob()/出后備作業(yè)隊(duì)列if(隊(duì)列為空,作業(yè)執(zhí)行結(jié)束)返回-1;else作業(yè)出隊(duì)列;頭指針+1;為作業(yè)分配外存;返回0;voidInitJob()/初始化后備作業(yè)隊(duì)列隊(duì)列指針初始化;while(作業(yè)數(shù)不為0)作業(yè)號(hào)=生成隨機(jī)數(shù);作業(yè)數(shù)=作業(yè)數(shù)-1;42進(jìn)程狀態(tài)隊(duì)列抽象設(shè)計(jì)421數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)typedefstruet/進(jìn)程狀態(tài)隊(duì)列PCBbase100;/隊(duì)列元
31、素為進(jìn)程控制塊intrear;/隊(duì)列尾指針intfront;/隊(duì)列頭指針PQueue;422基本操作intReadyQueueisEmpty()/判斷就緒隊(duì)列是否為空if(隊(duì)列頭指針=隊(duì)列尾指針)返回1;返回0;intWaitQueueisEmpty()/判斷等待隊(duì)列是否為空if(隊(duì)列頭指針=隊(duì)列尾指針)返回1;返回0;intEnReadyQueue(PCBqpcb)/表示進(jìn)程已獲得內(nèi)存等資源,進(jìn)入就緒態(tài)進(jìn)程進(jìn)入就緒隊(duì)列;隊(duì)列尾指針+1;PCBDeReadyQueue()/出就緒隊(duì)列,表示進(jìn)程獲得處理器,進(jìn)入運(yùn)行態(tài)if(就緒隊(duì)列不為空)進(jìn)程出隊(duì)列;隊(duì)列頭指針+1;else返回空;intRead
32、yQueueLength();/就緒隊(duì)列長度intEnWaitQueue(PCBqpeb)/表示進(jìn)程出現(xiàn)等待事件,被阻塞進(jìn)入等待態(tài)進(jìn)程進(jìn)入等待隊(duì)列;隊(duì)列尾指針+1;PCBDeWaitQueue()/出等待隊(duì)列,表示等待事件結(jié)束if(等待隊(duì)列不為空)進(jìn)程出隊(duì)列;1o隊(duì)列頭指針+1;else返回空;43快表抽象設(shè)計(jì)431數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)typedefstructTNode/頁號(hào)和頁框號(hào)的對(duì)應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu)inttpageno;/頁號(hào)inttrealpageno;/頁框號(hào)TNode;typedefstruet/快表隊(duì)列TNodebase4;/快表大小是3,數(shù)據(jù)結(jié)構(gòu)為循環(huán)隊(duì)列,所以空出一位intrear;
33、/隊(duì)列尾指針intfront;/隊(duì)列頭指針TQueue;432基本操作voidInitTlb()/初始化快表快表頭指針=快表尾指針=0;intEnTlb(intepageno,interealpageno)/進(jìn)快表生成新的快表項(xiàng);快表項(xiàng)進(jìn)快表;快表尾指針+1;intDeTlb()/出快表if(快表為空)返回-1;else返回表頭快表項(xiàng)的物理頁號(hào);intTlbisFull()/判斷快表是否滿if(尾指針+1=頭指針)返回1;返回0;voidClearTlb()/清空快表尾指針=頭指針=0;intVisitTlb(intpageno);/遍歷快表intTlbSize()/快表長度返回尾指針-頭指針
34、;ii44頁表項(xiàng)抽象設(shè)計(jì)441數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)typedefstructPage/頁表項(xiàng),大小為2BintiPageNo;/頁號(hào)intiRealPageNo;/頁框號(hào)int訂nMemory;/駐留標(biāo)志位intiHavenUse;/引用位intiChange;/修改位intiProtect;/保護(hù)位Page;442基本操作voidsetPage()/進(jìn)程頁表生成新頁表;設(shè)置頁號(hào);設(shè)置駐留位、引用位、修改位、保護(hù)位;對(duì)應(yīng)頁框號(hào);voidsetPageInMemory(intpageno,intn)/設(shè)置頁面的駐留位遍歷頁表;if(頁號(hào)相同)該頁面駐留位置n;voidsetPageHavenUse(in
35、tpageno,intn);/設(shè)置頁面的引用位intgetPageInMemory(intpageno)/根據(jù)頁號(hào)獲得進(jìn)程頁表駐留位遍歷頁表;if(遍歷未結(jié)束&&頁號(hào)相同)駐留位置n;返回0;if(遍歷結(jié)束&&不存在頁號(hào)相同)返回-1;intgetPageHavenUse(intpageno);/根據(jù)頁號(hào)獲得進(jìn)程頁表引用位intgetPhyPageNo(intpageno);/根據(jù)頁號(hào)獲得對(duì)應(yīng)物理頁號(hào)45外頁表項(xiàng)抽象設(shè)計(jì)451數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)typedefstructOutPage/外頁表項(xiàng),大小為2BintiOutPageNo;/頁號(hào)intiOutRealPage
36、No;/頁框號(hào)intphyAddr;/物理地址OutPage;452基本操作voidsetOutPage()/進(jìn)程外頁表生成新頁表;設(shè)置頁號(hào);對(duì)應(yīng)物理地址;46頁表基址寄存器抽象設(shè)計(jì)461數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)typedefstruetPTBR/頁表基地址寄存器抽象intiF;/頁表起始地址intiM;/頁表長度PTBR;462基本操作voidsetPtbr()/生成頁表基地址設(shè)置頁表基地址;設(shè)置頁表長度;intgetiF()/獲得進(jìn)程頁表基址返回頁表基址;47程序狀態(tài)字抽象設(shè)計(jì)471數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)typedefstruetPSW/程序狀態(tài)字抽象intiNumber;/當(dāng)前運(yùn)行指令編號(hào)intIF;/中斷允
37、許標(biāo)志,為1允許響應(yīng)中斷,否則關(guān)中斷intiType;/此時(shí)運(yùn)行狀態(tài),0表示用戶態(tài),1表示內(nèi)核態(tài)PSW;472基本操作voidsetPSW(PSWpsw)/設(shè)置程序狀態(tài)字,用于進(jìn)程上下文切換設(shè)置當(dāng)前運(yùn)行指令編號(hào)設(shè)置中斷允許標(biāo)志,為1允許響應(yīng)中斷,否則關(guān)中斷設(shè)置此時(shí)運(yùn)行狀態(tài),0表示用戶態(tài),1表示內(nèi)核態(tài)48駐留集抽象設(shè)計(jì)481數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)typedefstruet/用于CLOCK算法的駐留集,數(shù)據(jù)結(jié)構(gòu)用循環(huán)隊(duì)列表示intptr;/當(dāng)前指針指向的位置intfront;/隊(duì)首標(biāo)志intrear;/隊(duì)尾標(biāo)志int*base;/隊(duì)列元素13CycleQueue;typedefstruet/用于FIFO的駐
38、留集,數(shù)據(jù)結(jié)構(gòu)用順序隊(duì)列表示int*base;/駐留集基地址intrear;/駐留集尾指針intfront;/駐留集頭指針MQueue;482基本操作intfStaySize()/獲得駐留集當(dāng)前長度返回尾指針-頭指針;intenCycleQueue(intpageno)/進(jìn)駐留集if(駐留集已經(jīng)滿)返回-1;else新頁號(hào)進(jìn)駐留集;尾指針+1;intdeCycleQueue()/出駐留集if(駐留集已經(jīng)空)返回-1;else出駐留集;頭指針+1;49內(nèi)存抽象設(shè)計(jì)491數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)typedefstructMemory/內(nèi)存空間抽象Pagepage256;/8頁大小的頁表區(qū),一頁32B,共256
39、BMpagempage768;/24頁大小的空閑區(qū),共768BMemory;/共32頁,1024B492基本操作voidsetPCBSpace(intaddr,intpid)/為進(jìn)程分配內(nèi)存空間if(內(nèi)存空間未占用)進(jìn)程占用內(nèi)存空間;位示圖置1;voidfreePCBSpace(intaddr,intpid)/為進(jìn)程釋放內(nèi)存空間進(jìn)程釋放內(nèi)存空間;位示圖置0;410外存抽象設(shè)計(jì)4101數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)typedefstructDisk/外存空間抽象OutPagedoutpage512;/16頁大小的頁表區(qū),一頁32B,共512BMpagempage1536;/48頁大小的空閑區(qū),共1536BDisk
40、;/共64頁,2048B4102基本操作voidsetJOBSpace(intaddr)/為作業(yè)分配外存if(外存空間未占用)作業(yè)占用外存空間;位示圖法置1;voidfreeJOBSpace(intaddr)/為作業(yè)釋放外存作業(yè)釋放內(nèi)存空間;位示圖置0;5 軟件系統(tǒng)設(shè)計(jì)51系統(tǒng)結(jié)構(gòu)511底層硬件抽象抽象設(shè)計(jì)中央處理器CPU模塊、存儲(chǔ)管理部件MMU模塊、內(nèi)存儲(chǔ)器與外存儲(chǔ)器模塊。512功能模擬模擬作業(yè)生成、執(zhí)行與結(jié)束。在作業(yè)執(zhí)行過程中由系統(tǒng)向PCB池申請(qǐng)空間,創(chuàng)建進(jìn)程,初始化進(jìn)程的指令與頁表等信息,當(dāng)進(jìn)程獲取所需資源后進(jìn)入就緒隊(duì)列。如果進(jìn)程獲得CPU資源則進(jìn)入運(yùn)行態(tài),這涉及到進(jìn)程上下文切換,將CP
41、U的快表、頁表基址寄存15器、程序狀態(tài)字等寄存器的內(nèi)容都切換成當(dāng)前運(yùn)行進(jìn)程的狀態(tài)。然后模擬進(jìn)程發(fā)出頁面請(qǐng)求,CPU將頁面邏輯地址傳送給MMU,MMU負(fù)責(zé)將邏輯頁號(hào)與偏移地址分離,并搜索快表或者慢表獲得該邏輯頁號(hào)與物理頁號(hào)的對(duì)應(yīng)關(guān)系。如果沒有則發(fā)出缺頁異常,進(jìn)入缺頁異常處理程序,如果有則給出物理頁號(hào),進(jìn)行物理頁號(hào)與偏移地址的拼接,返回給CPU執(zhí)行指令。缺頁異常處理中在從外存獲取邏輯頁號(hào)與物理頁號(hào)的對(duì)應(yīng)關(guān)系后,不僅要加入慢表,也要加入快表,還涉及到頁表項(xiàng)的標(biāo)志位的更改。如果快表已滿則根據(jù)先入先出算法進(jìn)行替換,如果駐留集已滿則根據(jù)LRU、CLOCK、FIFO三種頁面替換算法進(jìn)行頁面替換。513模塊整
42、合根據(jù)設(shè)計(jì),抽象模塊主要分為:CPU、PCB、MMU、PCB池、存儲(chǔ)空間。CPU內(nèi)存放當(dāng)前運(yùn)行的PCB的信息,以及實(shí)現(xiàn)對(duì)指令的操作;PCB直接代表進(jìn)程,存放進(jìn)程的信息;MMU進(jìn)行虛存管理,包括地址轉(zhuǎn)換與發(fā)出異常信息;PCB池初始化PCB分配的內(nèi)存空間,以及釋放PCB占用的空間。為方便整合程序,MMU模塊將引用將異常處理程序,完成對(duì)頁面的換入換出。作業(yè)生成模塊嵌套進(jìn)程創(chuàng)建模塊,后備作業(yè)隊(duì)列以及進(jìn)程狀態(tài)隊(duì)列需要管控全局。CPU模塊應(yīng)獲得當(dāng)前執(zhí)行進(jìn)程的所有狀態(tài),MMU模塊應(yīng)獲得當(dāng)前CPU的狀態(tài),內(nèi)存空間模塊與外存空間模塊應(yīng)是全局變量,在作業(yè)生成時(shí)占用外存空間,在進(jìn)程創(chuàng)建與頁面調(diào)入時(shí)占用內(nèi)存空間。同理
43、,當(dāng)作業(yè)執(zhí)行結(jié)束或者進(jìn)程執(zhí)行結(jié)束時(shí)都應(yīng)當(dāng)釋放存儲(chǔ)空間。寫入文檔和圖形化界面的代碼應(yīng)當(dāng)嵌入進(jìn)程調(diào)度和頁面替換的代碼中。在缺頁異常處理過程中,相應(yīng)進(jìn)程應(yīng)進(jìn)入等待態(tài)并使就緒態(tài)的進(jìn)程進(jìn)入運(yùn)行態(tài),要進(jìn)行進(jìn)程上下文切換,保護(hù)進(jìn)程信息,這也涉及到進(jìn)程狀態(tài)隊(duì)列的進(jìn)出。大多數(shù)功能需要幾個(gè)模塊共同完成,因此在各個(gè)模塊中都有相應(yīng)的函數(shù),因此導(dǎo)致大量代碼冗余。設(shè)計(jì)之初的思路為盡可能的將功能細(xì)化,使每個(gè)函數(shù)實(shí)現(xiàn)簡(jiǎn)單的功能,但實(shí)際的代碼編寫無法完全達(dá)到這一要求,導(dǎo)致在模塊組合時(shí)產(chǎn)生混亂。因此,將相關(guān)功能整合在抽象模塊中,以方便使用;對(duì)代碼盡可能的實(shí)現(xiàn)復(fù)用,減少代碼冗余的現(xiàn)象;劃分各模塊功能,并對(duì)其有清楚的認(rèn)識(shí),在整合代碼
44、時(shí)按照功能進(jìn)行組合與調(diào)試。1#514系統(tǒng)結(jié)構(gòu)圖JT給虧而在內(nèi)存I1.進(jìn)琨給這刃進(jìn)人嵌緒杰介也M迪W居Ajiidi頤接收控制執(zhí)行韋益符物理忙址巡啟論址汴問頁面創(chuàng)便進(jìn)出丄誡作業(yè)進(jìn)理I-.:汝切換進(jìn)即進(jìn)人運(yùn)行摳圖5.1系統(tǒng)結(jié)構(gòu)圖1752系統(tǒng)類圖與順序圖521系統(tǒng)類圖A.CPU-cpch-cpt-hrclb-uPC:iat-cIH:inj-ctLhSize:intl-atPCBi):vuic坤:voidsetPtbrO:midetlLlSO:voidseLPCO:void姑曰仁RC;vu?dctlRO:i毗Ih(J:voidllearTlb(J:voidIcpu-ellL0:voidCulLo耳iLd
45、dr():vcsid-sulPJjysLu.WdrO:vy-d-?.i?iOff>ctA;Jdr(:v<i-d一sptJ_cigirAddr(j:vnid-eLKpnlPiji!;BGLRL(J:inL汕1肌計(jì)1旳削壯陽0:LIll-ui.RualPii«uNuCLiXK():;fll-Disk-WringrulFCBSpticul);vuid-rn?t?F;BSpfici?O:void卩訂r:voidrfreePCISpngeSiwce(:void"seL.'CiBSpjjce0:vuidftl?l:JDBS|jul:u0:vijid-niiTrcsr
46、yirpi:(J:旳pPCBPOOLRe;jtlyMuPue血_iQueue-LreateK;ll():void-hreeR:B(j:vgid*Blackourse):vu-id-WakCuurs&.O:void+pcbx<ainliO:void-knKefidyUu«'.iR0:vniriDeReadyQuujet):vcid*En>aiLQueue):veid-DvWiiitQdUUcO:vuidJOB-JQueue-ln:z.|n?>(:voidEnJobO:void-DvJobO;ril<<dfiretype»踰1已u日«da.Latypa»PTBRrJ<datavype»PIERTftieue疋MmQTy«da.Ta1ype»MPage<<datatype»Disk«d*tatype>?PCSpProID:nil-pPtiDiily:int-卩ProStfiri?:in?-pRunTirc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 佛山市道廣體育初級(jí)游泳救生培訓(xùn)試題復(fù)習(xí)測(cè)試卷含答案
- 互聯(lián)網(wǎng)營銷師五級(jí)練習(xí)測(cè)試題附答案
- 2025年觸電救援考試試題及答案
- 2025年口腔醫(yī)學(xué)三基試題及答案
- 2025年山東合格考?xì)v史試題及答案
- 2025年防排煙自考試題及答案
- 2025年交往能力測(cè)試題型及答案
- 2025年專注力燈光測(cè)試題及答案
- 2025年戲?qū)Э荚嚨谋硌菰囶}及答案
- 2025年吸氣挑戰(zhàn)測(cè)試題及答案
- 《園林機(jī)械使用與維修》課件-任務(wù)3.園林養(yǎng)護(hù)機(jī)械
- 項(xiàng)目式學(xué)習(xí)在小學(xué)數(shù)學(xué)教學(xué)中的應(yīng)用
- 2024年05月山東威海市商業(yè)銀行科技類社會(huì)招考筆試歷年參考題庫附帶答案詳解
- 2025年八省聯(lián)考云南高考生物試卷真題答案詳解(精校打印)
- 2025中智集團(tuán)下屬單位公開招聘41人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 中醫(yī)理療館路演
- 產(chǎn)后腹直肌分離治療
- 【責(zé)任清單】醫(yī)院系統(tǒng)紀(jì)檢監(jiān)察責(zé)任清單
- 肛門墜脹與治療
- 申菱單元式空調(diào)機(jī)樣本
- 2024年職業(yè)技能互聯(lián)網(wǎng)營銷師操作知識(shí)考試題庫與答案
評(píng)論
0/150
提交評(píng)論