計算機虛擬頁式存儲管理系統(tǒng)的仿真實現(xiàn)_第1頁
計算機虛擬頁式存儲管理系統(tǒng)的仿真實現(xiàn)_第2頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、系統(tǒng)課程設計實踐報告題目:姓名:學院:專業(yè):班級:學號:指導教師:計算機虛擬頁式存儲管理系統(tǒng)的仿真實現(xiàn)*信息科技學院廿算機科學技術系*2017年3月12日目錄摘要3關鍵詞3Abstract3Keywords31 緒論41.1 選題目的41.2 選題意義42 設計思路與完成功能說明42.1 課程設計思路42.1.1 模擬多進程并發(fā)環(huán)境42.1.2 頁面訪問請求與異常處理52.1.3 過程可視化52.1.4 整體思路流程圖62.2 完成功能說明73 裸機硬件部件仿真設計83. 1存儲空間的設計與抽象83.2 存儲管理部件MMU的抽象與設計93.3 中央處理器CPU的抽象與設計94通用數(shù)據(jù)結構設計9

2、4.1 后備作業(yè)隊列抽象設計94.1.1 數(shù)據(jù)結構設計94. 1.2基礎操作94.2 進程狀態(tài)隊列抽象設計104.2.1 數(shù)據(jù)結構設計104.2.2基礎操作104.3 快表抽象設計114.3.1 數(shù)據(jù)結構設計114.3.2基礎操作114.4 頁表項抽象設計124.4.1 數(shù)據(jù)結構設計124.4.2 基礎操作124.5 外頁表項抽象設計124.5.1 數(shù)據(jù)結構設計124.5.2基礎操作134.6 頁表基址寄存器抽象設計134.6.1 數(shù)據(jù)結構設計134.6.2 基礎操作134.7 程序狀態(tài)字抽象設計134.7.1 數(shù)據(jù)結構設計134.7.2 基礎操作134.8 駐留集抽象設計134.8.1 數(shù)據(jù)

3、結構設計134.8.2 基礎操作144.9 內(nèi)存抽象設計144.9.1 數(shù)據(jù)結構設計144.9.2 基礎操作154.10 外存抽象設計154.10.1 數(shù)據(jù)結構設計154.10.2 基礎操作155 軟件系統(tǒng)設計155.1 系統(tǒng)結構155.1.1 底層硬件抽象155.1.2 功能模擬155.1.3 模塊整合165.1.4 系統(tǒng)結構圖175.2 系統(tǒng)類圖與順序圖185. 2.1系統(tǒng)類圖185.2.2系統(tǒng)順序圖195.3 功能實現(xiàn)流程205.3.1實現(xiàn)作業(yè)生成、進程創(chuàng)建與資源分配205.3.2實現(xiàn)進程調(diào)度與進程上下文切換215.3.3實現(xiàn)對快表和駐留集的管理225.3.4實現(xiàn)快表和慢表的搜索235.

4、3.5實現(xiàn)缺頁異常處理與命中率的計算245.3.6實現(xiàn)過程可視化246 關鍵操作256.1 模擬并發(fā)環(huán)境256.1.1 進程阻塞原語256.1.2 進程喚醒原語256.1.3 進程上下文切換256.2 頁面替換算法266.2.1 先入先出FIFO頁面替換算法266.2.2 最久未被訪問LRU頁面替換算法276.2.3 時鐘CLOCK頁面替換算法286.3 過程可視化297 技術問題分析與解決方案307.1 存在問題與解決方案307.2 其他設想318 實踐體會31參考文獻32附件133附件238附件3399計算機虛擬頁式存儲管理系統(tǒng)的仿真實現(xiàn)*專業(yè)學生*指導教師*摘要:任何程序和數(shù)據(jù)必須占用內(nèi)

5、存空間才能得以執(zhí)行和處理,但讓進程全部信息駐留于內(nèi)存是對內(nèi)存資源的極大浪費,因此利用“部分裝入,部分替換”來實現(xiàn)存儲空間在邏輯上的擴充是提高內(nèi)存利用率的有效手段,虛擬頁式存儲管理是將程序信息副本存放在外存中,當它被調(diào)度投入運行時僅裝入當前使用頁面;進程執(zhí)行過程中訪問到不在內(nèi)存的頁面時,再由系統(tǒng)自動調(diào)入,根據(jù)頁面替換算法選擇淘汰頁面。它依靠底層硬件MMU支撐來完成地址轉換和存儲保護的功能,從邏輯上為用戶提供一個比物理內(nèi)存容量大得多的、可尋址的存儲器。本次課程設計目標是利用C+程序設計語言抽象硬件部件,模擬系統(tǒng)軟件功能,完成并行環(huán)境下計算機虛擬頁式存儲管理系統(tǒng)的仿真實現(xiàn)。在實現(xiàn)過程中,采用QtCr

6、eator集成開發(fā)環(huán)境,利用C+面向對象的思想,用對象類對硬件部件進行抽象模擬,用成員函數(shù)作為接口,模擬各部件API完成功能的集成,基本完成了預期功能;實現(xiàn)了并發(fā)環(huán)境下的頁面訪問請求,利用多種頁面替換算法實現(xiàn)缺頁異常處理中的頁面替換;實現(xiàn)了進程調(diào)度、內(nèi)外存實時占用情況及頁面替換的過程可視化,并最終將過程中涉及到的數(shù)據(jù)變化保存至指定文檔。關鍵詞:虛擬頁式存儲管理;內(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選題目的編寫程序模擬請求分頁虛存管理中的存儲管理部件MMU進行虛實地址轉換的過程以及缺頁異常的處理,利用頁面替換算法淘汰頁面,并實現(xiàn)過程可視化。主要包括:(1)模擬作業(yè)執(zhí)行與

13、調(diào)度,進程創(chuàng)建與終止;(2)模擬進程調(diào)度與進程上下文切換;(3)實現(xiàn)硬件頁表基址寄存器與快表的管理與訪問;(4)仿真實現(xiàn)存儲管理部件MMU;(5)仿真實現(xiàn)頁表、外頁表并對其進行管理與訪問;(6)處理缺頁異常,按照替換算法選擇淘汰頁面;(7)實現(xiàn)對內(nèi)存與外存的抽象設計;(8)內(nèi)存與外存占用情況的可視化;(9)進程調(diào)度與頁面替換過程可視化。從而將操作系統(tǒng)的處理器管理與存儲管理聯(lián)系在一起,將理論與實踐相結合,從整體上系統(tǒng)的了解并發(fā)環(huán)境中的地址轉換機制,更深入的理解計算機虛擬頁式存儲管理系統(tǒng)的實現(xiàn),在加深對理論理解的同時強化編程能力與算法思維。12選題意義存儲管理是操作系統(tǒng)的重要組成部分,負責管理計算

14、機系統(tǒng)的重要資源內(nèi)存儲器。由于任何程序和數(shù)據(jù)必須占用內(nèi)存空間才能得以執(zhí)行和處理,因此存儲管理的優(yōu)劣直接影響系統(tǒng)性能。但是進程全部信息駐留于內(nèi)存是對內(nèi)存資源的極大浪費,因此利用“部分裝入,部分替換”來實現(xiàn)存儲空間在邏輯上的擴充是提高內(nèi)存利用率的有效手段。操作系統(tǒng)是一個并發(fā)系統(tǒng),所有功能都是在并發(fā)環(huán)境下實現(xiàn)的,因此,如何將虛擬頁式存儲管理和處理器管理有效的結合起來是該選題的重點也是難點,這也是意義所在。找到獨立章節(jié)的理論知識之間的聯(lián)系并用代碼建立聯(lián)系,實現(xiàn)相應的功能,不僅僅是對理論知識的深入理解的過程,也是實踐能力、動手能力和編程能力的考驗與鍛煉有著重要意義。虛擬頁式存儲管理系統(tǒng)涉及到的硬件有中央

15、處理器CPU、存儲管理部件MMU、內(nèi)存、外存以及頁表基址寄存器、快表等相關寄存器。將這些硬件設備抽象成代碼實現(xiàn)不僅僅需要對這些硬件的屬性結構有全面的了解,還需要對他們的功能做出動態(tài)的仿真。從而在深化理論知識的同時,也對面向對象的抽象能力與對數(shù)據(jù)結構靈活運用的能力的鍛煉有著重要意義。同時,虛擬頁式存儲管理系統(tǒng)所基于的“裝入替換”涉及到了頁面的裝入、替換與淘汰,因此需要頁面替換算法來實現(xiàn)這些功能。常見的頁面替換算法諸如先入先出頁面替換算法(FIFO)、最近最少使用頁面替換算法(LRU)、時鐘頁面替換算法(LRU)等,用程序設計語言實現(xiàn)這些算法,也對算法思維的培養(yǎng)有著重要意義。2 設計思路與完成功能

16、說明21課程設計思路211模擬多進程并發(fā)環(huán)境首先從高級調(diào)度開始,作業(yè)生成后從后備作業(yè)隊列根據(jù)相關調(diào)度策略(以先來先服務為例)獲取作業(yè),接著動態(tài)創(chuàng)建作業(yè)所需一系列進程,即從PCB池中申請空白PCB,對其初始化并分配內(nèi)存空間等一系列資源。如果獲得所需的資源,將該PCB從新建態(tài)轉換為就緒態(tài),即加入就緒隊列,同時更改進程狀態(tài)位。需要注意的是,在進程的抽象設計中,為了簡化設計而使PCB代表進程,進程的指令數(shù)隨機生成,指令所需訪問的邏輯頁面隨機生成,邏輯頁號與物理頁號的對應關系由系統(tǒng)為每個進程自動生成。進程訪問某一頁面時MMU根據(jù)CPU給出的邏輯地址獲取相應的邏輯頁號與頁內(nèi)偏移;然后以頁號為索引搜索快表,

17、如果快表中存在該頁號,則獲得物理頁號與偏移地址拼接成物理地址;如果快表中不存在該頁號,則搜索慢表,如果慢表中存在該頁號(即頁表項的駐留位為1),也就是該頁面存在于內(nèi)存,則直接獲取相應物理頁號,并將該項填入快表;如果慢表中不存在該頁號,也就是該頁面未調(diào)入內(nèi)存(即頁表項駐留位為0),則發(fā)出異常信號;該進程被阻塞,釋放CPU資源并在保存現(xiàn)場信息后進入等待隊列,下一個進程獲得CPU資源開始回復自己的現(xiàn)場,也就是進程上下文切換,然后進入運行態(tài)。進程從外頁表獲得該缺頁的信息后,如果駐留集未滿則直接加入該頁面對應的邏輯頁號,如果駐留集滿則采用頁面替換策略選擇淘汰相應頁面對應的邏輯頁號,并加入新頁面對應的邏輯

18、頁號,同時將新頁面的邏輯頁號與物理頁號的對應關系加入進程快表信息。這時進程等待事件已經(jīng)結束,進程被喚醒,進入就緒隊列等待CPU資源。需要注意,在頁面的訪問與替換過程中涉及到頁表引用位、駐留位等標志位的轉變。進程指令執(zhí)行完畢后,需要結束進程進入終止態(tài),從PCB池中撤銷該進程PCB,并收回進程所占內(nèi)存空間。212頁面訪問請求與異常處理頁面訪問請求過程如下:(1)MMU接收CPU傳送來的邏輯地址并按照頁面大小把它從某位起分解成兩部分:頁號和頁內(nèi)偏移;(2)以頁號為索引快速搜索快表TLB;(3)如果命中,立即送出頁框號,并與頁內(nèi)偏移拼接成物理地址;(4)如果不命中,由硬件以頁號為索引搜索頁表,頁表基址

19、由硬件頁表基址寄存器指出;(5)如果頁表被命中,說明訪問頁面已經(jīng)在內(nèi)存中,可送出頁框號,并與頁內(nèi)偏移拼接成物理地址,同時要把這個頁面和頁框信息裝入快表TLB,以備再次訪問。(6)如果發(fā)現(xiàn)頁表中的對應頁面失效,MMU發(fā)出缺頁異常;缺頁異常處理過程如下:(1)掛起請求調(diào)頁的進程;(2)根據(jù)頁號搜索外頁表,找到存放此頁的磁盤物理地址;(3)查看內(nèi)存是否有空閑頁框,如果有則分配一個;(4)如果內(nèi)存中無空閑頁框,按照替換算法選擇淘汰頁面;(5)將修改過的的淘汰頁內(nèi)容寫回磁盤原先位置;(6)進行調(diào)頁,把頁面裝入內(nèi)存所分配的頁框中,同時修改進程頁表項。213過程可視化(1)控制臺顯示作業(yè)與進程的創(chuàng)建、執(zhí)行、

20、調(diào)度等狀態(tài)信息,并顯示進程的頁面訪問請求、頁面替換過程以及內(nèi)存、外存的占用情況;(2)將作業(yè)與進程的創(chuàng)建、執(zhí)行、調(diào)度等狀態(tài)信息寫入文檔,并將進程的頁面訪問請求以及頁面替換過程寫入文檔,將內(nèi)存與外存的占用情況寫入文檔;(3)將進程的頁面訪問請求以及頁面替換過程寫入圖形化界面,將內(nèi)存與外存的占用情況以位示圖的方法寫入圖形化界面,實現(xiàn)動態(tài)的過程可視化。214整體思路流程圖進程上b'tVJ換決得口'L;登闞曲松限列圖2.1.4-1整體思路流程圖頁號A頁表拴度?否否內(nèi)存滿否?艮表頊在臧申2否否核頁被修改否?貢在內(nèi)存?是CPU檢索快叢啟動DO磴件產(chǎn)生觥頁中斷謎求調(diào)頁操件系統(tǒng)命令CPU駅外存

21、諫缺頁修改頁表盼一頁從外存換入內(nèi)存選擇一頁換岀從外存中找到缺頁抿留CPU現(xiàn)場形成物理地址訪問頁我將該頁寫回外存悠改訪問位和悠改位缺頁中斷處理、圖2.1.4-2整體思路流程圖22完成功能說明(1)抽象并設計CPU模塊。實現(xiàn)進程上下文切換,模擬進程指令的執(zhí)行與進程對頁面訪問請求的生成,實現(xiàn)對快表和頁表基址寄存器等硬件寄存器的訪問與管理,其中,快表按照FIFO算法進行表項替換;函數(shù)聲明參數(shù)返回值函數(shù)功能setPCBPCBpcbvoid設置進程控制塊,表示該進程正在運行setPSWPSWpswvoid設置程序狀態(tài)字,用于進程上下文切換setPtbrPTBRptbrvoid設置進程的頁表基址,用于進程上

22、下文切換setTLBTQueueptlbvoid置快表內(nèi)容,用于進程上下文切換setPCintpcvoid設置指令計數(shù)器setIRintirvoid設置當前指令getIR無int獲得當前指令邏輯地址InitTlb無void初始化快表ClearTlb無void清空快表(2)抽象并設計MMU模塊,實現(xiàn)對邏輯地址的分解、對快表與慢表的搜索、發(fā)出缺頁異常信號,并調(diào)用相應異常處理模塊完成對缺頁異常的處理,最后輸出物理地址;函數(shù)聲明參數(shù)返回值函數(shù)功能setLogicAddr無void獲得邏輯地址setPageNoTemp無void獲得頁號setOffsetAddr無void獲得偏移地址setCPUCPUc

23、puvoid獲得當前CPU狀態(tài)setPhysicAddr無void獲得物理地址CutLogicAddr無void分解邏輯地址,頁號3位,頁內(nèi)偏移5位(3)抽象并設計PCB模塊與PCBPOOL模塊,設計后備作業(yè)隊列、進程等待隊列、就緒隊列,實現(xiàn)作業(yè)的生成、調(diào)度、執(zhí)行與終止,以及在作業(yè)執(zhí)行過程中,進程的創(chuàng)建、調(diào)度與終止,作業(yè)和進程均按照先來先服務算法進行調(diào)度,在進程調(diào)度時需要保護CPU現(xiàn)場信息,以保證進程能夠在自己的運行環(huán)境下運行;函數(shù)聲明參數(shù)返回值函數(shù)功能CreatePCB無int申請個空白PCB,分配內(nèi)存并初始化FreePCBPCBfpcbint釋放PCBBlockCoursePCBbpcbi

24、nt進程阻塞原語WakeCoursePCB&wpcbint進程喚醒原語ReadyQueueisEmpty無int判斷就緒隊列是否為空WaitQueueisEmpty無int判斷等待隊列是否為空EnReadyQueuePCBqpcbint進就緒隊列,表示進程已獲得內(nèi)存等資源,進入就緒態(tài)DeReadyQueue無PCB出就緒隊列,表示進程獲得處理器,進入運行態(tài)ReadyQueueLength無int獲得就緒隊列長度EnWaitQueuePCBqpcbint進等待隊列,表示進程出現(xiàn)等待事件,被阻塞進入等待態(tài)DeWaitQueue無PCB出等待隊列,表示等待事件結束(4) 仿真實現(xiàn)存儲空間模塊

25、,包括內(nèi)存的抽象與外存的抽象,以及對頁表、外頁表的管理,頁表中有引用位、駐留位等標志位;存儲空間按塊劃分,塊與頁大小相同,用位示圖法表示作業(yè)調(diào)度、進程調(diào)度過程中存儲空間的占用情況;函數(shù)聲明參數(shù)返回值函數(shù)功能setPCBSpaceintaddr,intpidvoid為進程分配內(nèi)存空間freePCBSpaceintaddr,intpidvoid釋放進程內(nèi)存空間setPCBpageSpaceintiFvoid為進程頁表分配內(nèi)存空間freePCBpageSpaceintiFvoid釋放進程頁表內(nèi)存空間setJOBSpaceintaddrvoid為作業(yè)分配外存freeJOBSpaceintaddrvoi

26、d釋放作業(yè)外存(5) 模擬存儲管理程序對缺頁異常進行處理,按照FIFO、LRU、CLOCK三種頁面替換算法選擇淘汰頁面,實現(xiàn)頁面的調(diào)入與調(diào)出,并對進程頁表標志位進行相應的操作,實現(xiàn)進程駐留集抽象;函數(shù)聲明參數(shù)返回值函數(shù)功能setRealPageNoTempLRUpcbpool,ShowProgram,ShowMemory,intint獲得頁框號LRU算法setRealPageNoTempFIFOpcbpool,ShowProgram,ShowMemory,intint獲得頁框號FIFO算法setRealPageNoTempCLOCKpcbpool,ShowProgram,ShowMemory,

27、intint獲得頁框號CLOCK算法(6) 將調(diào)度信息以及頁面替換信息寫入文檔,并完成用戶界面設計,實現(xiàn)虛擬頁式存儲管理系統(tǒng)的過程可視化。函數(shù)聲明參數(shù)返回值函數(shù)功能setPagePCBpcbvoid獲得當前正在運行的PCB狀態(tài)clearPage無void清空頁表界面setTlbPCBpcbvoid獲得當前快表的狀態(tài)clearTlb無void清空快表界面setStayPagePCBpcbvoid獲得當前進程LRU方法的駐留集狀態(tài)clearStayPage無void清空駐留集界面setCycleStayPagePCBpcbvoid獲得當前進程CLOCK方法的駐留集狀態(tài)setFifoStayPage

28、PCBpcbvoid獲得當前進程FIFO方法的駐留集狀態(tài)clearall無void清空全部界面(7)完成命中率的計算以評價模擬系統(tǒng)的優(yōu)劣。3 裸機硬件部件仿真設計31存儲空間的設計與抽象抽象并設計存儲空間模塊,采用將程序指令存儲和數(shù)據(jù)存儲分開的哈弗結構,具體分為內(nèi)存抽象與外存抽象。存儲空間按塊劃分,塊與頁大小相同,均為32B。內(nèi)存1024B即32塊,外存2048B即64塊。物理地址9位,4位頁號,5位頁內(nèi)偏移,可訪問512B大小的空間;邏輯地址10位,5位頁號,5位頁內(nèi)偏移,可訪問1024B大小的空間。32存儲管理部件MMU的抽象與設計抽象并設計存儲管理部件MMU模塊,以對象類的形式模擬存儲管

29、理部件MMU的結構和功能。存放邏輯地址與物理地址的寄存器等結構部件以靜態(tài)屬性抽象模擬。地址分解、地址轉換、發(fā)出異常與異常處理功能等功能以動態(tài)成員函數(shù)抽象模擬。33中央處理器CPU的抽象與設計抽象并設計中央處理器CPU模塊,以對象類的形式模擬中央處理器CPU的結構和功能。程序狀態(tài)字PSW;頁表基址寄存器PTBR;指令計數(shù)器PC;指令寄存器IR;快表TLB等寄存器部件都以靜態(tài)屬性抽象模擬。進程調(diào)度時進行進程上下文切換以保護CPU現(xiàn)場信息;將邏輯地址傳送給存儲管理部件MMU;指令的運行等功能以動態(tài)成員函數(shù)抽象模擬。4 通用數(shù)據(jù)結構設計41后備作業(yè)隊列抽象設計411數(shù)據(jù)結構設計typedefstrue

30、t/后備作業(yè)隊列,數(shù)據(jù)結構用隊列表示intbase10;/隊列基地址intrear;/隊列尾指針intfront;/隊列頭指針JQueue;412基本操作voidEnjob(intjob)/進后備作業(yè)隊列作業(yè)進隊列;尾指針+1;intDeJob()/出后備作業(yè)隊列if(隊列為空,作業(yè)執(zhí)行結束)返回-1;else作業(yè)出隊列;頭指針+1;為作業(yè)分配外存;返回0;voidInitJob()/初始化后備作業(yè)隊列隊列指針初始化;while(作業(yè)數(shù)不為0)作業(yè)號=生成隨機數(shù);作業(yè)數(shù)=作業(yè)數(shù)-1;42進程狀態(tài)隊列抽象設計421數(shù)據(jù)結構設計typedefstruet/進程狀態(tài)隊列PCBbase100;/隊列元

31、素為進程控制塊intrear;/隊列尾指針intfront;/隊列頭指針PQueue;422基本操作intReadyQueueisEmpty()/判斷就緒隊列是否為空if(隊列頭指針=隊列尾指針)返回1;返回0;intWaitQueueisEmpty()/判斷等待隊列是否為空if(隊列頭指針=隊列尾指針)返回1;返回0;intEnReadyQueue(PCBqpcb)/表示進程已獲得內(nèi)存等資源,進入就緒態(tài)進程進入就緒隊列;隊列尾指針+1;PCBDeReadyQueue()/出就緒隊列,表示進程獲得處理器,進入運行態(tài)if(就緒隊列不為空)進程出隊列;隊列頭指針+1;else返回空;intRead

32、yQueueLength();/就緒隊列長度intEnWaitQueue(PCBqpeb)/表示進程出現(xiàn)等待事件,被阻塞進入等待態(tài)進程進入等待隊列;隊列尾指針+1;PCBDeWaitQueue()/出等待隊列,表示等待事件結束if(等待隊列不為空)進程出隊列;1o隊列頭指針+1;else返回空;43快表抽象設計431數(shù)據(jù)結構設計typedefstructTNode/頁號和頁框號的對應關系的數(shù)據(jù)結構inttpageno;/頁號inttrealpageno;/頁框號TNode;typedefstruet/快表隊列TNodebase4;/快表大小是3,數(shù)據(jù)結構為循環(huán)隊列,所以空出一位intrear;

33、/隊列尾指針intfront;/隊列頭指針TQueue;432基本操作voidInitTlb()/初始化快表快表頭指針=快表尾指針=0;intEnTlb(intepageno,interealpageno)/進快表生成新的快表項;快表項進快表;快表尾指針+1;intDeTlb()/出快表if(快表為空)返回-1;else返回表頭快表項的物理頁號;intTlbisFull()/判斷快表是否滿if(尾指針+1=頭指針)返回1;返回0;voidClearTlb()/清空快表尾指針=頭指針=0;intVisitTlb(intpageno);/遍歷快表intTlbSize()/快表長度返回尾指針-頭指針

34、;ii44頁表項抽象設計441數(shù)據(jù)結構設計typedefstructPage/頁表項,大小為2BintiPageNo;/頁號intiRealPageNo;/頁框號int訂nMemory;/駐留標志位intiHavenUse;/引用位intiChange;/修改位intiProtect;/保護位Page;442基本操作voidsetPage()/進程頁表生成新頁表;設置頁號;設置駐留位、引用位、修改位、保護位;對應頁框號;voidsetPageInMemory(intpageno,intn)/設置頁面的駐留位遍歷頁表;if(頁號相同)該頁面駐留位置n;voidsetPageHavenUse(in

35、tpageno,intn);/設置頁面的引用位intgetPageInMemory(intpageno)/根據(jù)頁號獲得進程頁表駐留位遍歷頁表;if(遍歷未結束&&頁號相同)駐留位置n;返回0;if(遍歷結束&&不存在頁號相同)返回-1;intgetPageHavenUse(intpageno);/根據(jù)頁號獲得進程頁表引用位intgetPhyPageNo(intpageno);/根據(jù)頁號獲得對應物理頁號45外頁表項抽象設計451數(shù)據(jù)結構設計typedefstructOutPage/外頁表項,大小為2BintiOutPageNo;/頁號intiOutRealPage

36、No;/頁框號intphyAddr;/物理地址OutPage;452基本操作voidsetOutPage()/進程外頁表生成新頁表;設置頁號;對應物理地址;46頁表基址寄存器抽象設計461數(shù)據(jù)結構設計typedefstruetPTBR/頁表基地址寄存器抽象intiF;/頁表起始地址intiM;/頁表長度PTBR;462基本操作voidsetPtbr()/生成頁表基地址設置頁表基地址;設置頁表長度;intgetiF()/獲得進程頁表基址返回頁表基址;47程序狀態(tài)字抽象設計471數(shù)據(jù)結構設計typedefstruetPSW/程序狀態(tài)字抽象intiNumber;/當前運行指令編號intIF;/中斷允

37、許標志,為1允許響應中斷,否則關中斷intiType;/此時運行狀態(tài),0表示用戶態(tài),1表示內(nèi)核態(tài)PSW;472基本操作voidsetPSW(PSWpsw)/設置程序狀態(tài)字,用于進程上下文切換設置當前運行指令編號設置中斷允許標志,為1允許響應中斷,否則關中斷設置此時運行狀態(tài),0表示用戶態(tài),1表示內(nèi)核態(tài)48駐留集抽象設計481數(shù)據(jù)結構設計typedefstruet/用于CLOCK算法的駐留集,數(shù)據(jù)結構用循環(huán)隊列表示intptr;/當前指針指向的位置intfront;/隊首標志intrear;/隊尾標志int*base;/隊列元素13CycleQueue;typedefstruet/用于FIFO的駐

38、留集,數(shù)據(jù)結構用順序隊列表示int*base;/駐留集基地址intrear;/駐留集尾指針intfront;/駐留集頭指針MQueue;482基本操作intfStaySize()/獲得駐留集當前長度返回尾指針-頭指針;intenCycleQueue(intpageno)/進駐留集if(駐留集已經(jīng)滿)返回-1;else新頁號進駐留集;尾指針+1;intdeCycleQueue()/出駐留集if(駐留集已經(jīng)空)返回-1;else出駐留集;頭指針+1;49內(nèi)存抽象設計491數(shù)據(jù)結構設計typedefstructMemory/內(nèi)存空間抽象Pagepage256;/8頁大小的頁表區(qū),一頁32B,共256

39、BMpagempage768;/24頁大小的空閑區(qū),共768BMemory;/共32頁,1024B492基本操作voidsetPCBSpace(intaddr,intpid)/為進程分配內(nèi)存空間if(內(nèi)存空間未占用)進程占用內(nèi)存空間;位示圖置1;voidfreePCBSpace(intaddr,intpid)/為進程釋放內(nèi)存空間進程釋放內(nèi)存空間;位示圖置0;410外存抽象設計4101數(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)設計51系統(tǒng)結構511底層硬件抽象抽象設計中央處理器CPU模塊、存儲管理部件MMU模塊、內(nèi)存儲器與外存儲器模塊。512功能模擬模擬作業(yè)生成、執(zhí)行與結束。在作業(yè)執(zhí)行過程中由系統(tǒng)向PCB池申請空間,創(chuàng)建進程,初始化進程的指令與頁表等信息,當進程獲取所需資源后進入就緒隊列。如果進程獲得CPU資源則進入運行態(tài),這涉及到進程上下文切換,將CP

41、U的快表、頁表基址寄存15器、程序狀態(tài)字等寄存器的內(nèi)容都切換成當前運行進程的狀態(tài)。然后模擬進程發(fā)出頁面請求,CPU將頁面邏輯地址傳送給MMU,MMU負責將邏輯頁號與偏移地址分離,并搜索快表或者慢表獲得該邏輯頁號與物理頁號的對應關系。如果沒有則發(fā)出缺頁異常,進入缺頁異常處理程序,如果有則給出物理頁號,進行物理頁號與偏移地址的拼接,返回給CPU執(zhí)行指令。缺頁異常處理中在從外存獲取邏輯頁號與物理頁號的對應關系后,不僅要加入慢表,也要加入快表,還涉及到頁表項的標志位的更改。如果快表已滿則根據(jù)先入先出算法進行替換,如果駐留集已滿則根據(jù)LRU、CLOCK、FIFO三種頁面替換算法進行頁面替換。513模塊整

42、合根據(jù)設計,抽象模塊主要分為:CPU、PCB、MMU、PCB池、存儲空間。CPU內(nèi)存放當前運行的PCB的信息,以及實現(xiàn)對指令的操作;PCB直接代表進程,存放進程的信息;MMU進行虛存管理,包括地址轉換與發(fā)出異常信息;PCB池初始化PCB分配的內(nèi)存空間,以及釋放PCB占用的空間。為方便整合程序,MMU模塊將引用將異常處理程序,完成對頁面的換入換出。作業(yè)生成模塊嵌套進程創(chuàng)建模塊,后備作業(yè)隊列以及進程狀態(tài)隊列需要管控全局。CPU模塊應獲得當前執(zhí)行進程的所有狀態(tài),MMU模塊應獲得當前CPU的狀態(tài),內(nèi)存空間模塊與外存空間模塊應是全局變量,在作業(yè)生成時占用外存空間,在進程創(chuàng)建與頁面調(diào)入時占用內(nèi)存空間。同理

43、,當作業(yè)執(zhí)行結束或者進程執(zhí)行結束時都應當釋放存儲空間。寫入文檔和圖形化界面的代碼應當嵌入進程調(diào)度和頁面替換的代碼中。在缺頁異常處理過程中,相應進程應進入等待態(tài)并使就緒態(tài)的進程進入運行態(tài),要進行進程上下文切換,保護進程信息,這也涉及到進程狀態(tài)隊列的進出。大多數(shù)功能需要幾個模塊共同完成,因此在各個模塊中都有相應的函數(shù),因此導致大量代碼冗余。設計之初的思路為盡可能的將功能細化,使每個函數(shù)實現(xiàn)簡單的功能,但實際的代碼編寫無法完全達到這一要求,導致在模塊組合時產(chǎn)生混亂。因此,將相關功能整合在抽象模塊中,以方便使用;對代碼盡可能的實現(xiàn)復用,減少代碼冗余的現(xiàn)象;劃分各模塊功能,并對其有清楚的認識,在整合代碼

44、時按照功能進行組合與調(diào)試。1#514系統(tǒng)結構圖JT給虧而在內(nèi)存I1.進琨給這刃進人嵌緒杰介也M迪W居Ajiidi頤接收控制執(zhí)行韋益符物理忙址巡啟論址汴問頁面創(chuàng)便進出丄誡作業(yè)進理I-.:汝切換進即進人運行摳圖5.1系統(tǒng)結構圖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肌計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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論