下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精品文檔教師參考一、準(zhǔn)備實(shí)驗(yàn)建議在實(shí)驗(yàn)前結(jié)合幻燈片向?qū)W生講解預(yù)備知識(shí)中的內(nèi)容。建議重點(diǎn)講解:講解C語言中的位域結(jié)構(gòu)體概念,可以幫助學(xué)生理解PTE結(jié)構(gòu)體的定義。i386 處理器的二級(jí)頁表硬件機(jī)制,及邏輯地址到物理地址的轉(zhuǎn)換過程。EOS的頁目錄和頁表在進(jìn)程 4G虛擬地址空間中的位置。當(dāng) EOS操作系統(tǒng)啟動(dòng)i386 處理器的分頁機(jī)制后,就只能使用邏輯地址(虛擬地址) 來訪問物理內(nèi)存, 所以只 有知道了頁目錄和頁表的虛擬地址,才能夠訪問它們。在 memory.c 文件中就是使用這些虛擬地址來訪問頁目錄和頁表的。雖然打印出了 頁目錄和頁表映射的物理頁框號(hào), 但是這僅僅是為了演示它們的映射關(guān)系, 是沒有
2、辦法直接訪問物理內(nèi)存的。頁目錄在虛擬地址空間中的基址的獲得方式:頁目錄的第0x300個(gè)PDE映射的頁表就是頁目錄本身,這樣頁表(頁目錄)的第 0x300個(gè)PTE又映射到頁目錄, 所以用PDE標(biāo)號(hào)(0x300 )做32位線性地址的高 10位,用 PTE標(biāo)號(hào)(0x300)做12- 22 位,就得到了地址 0xC0300000。同理,頁表在虛擬地址空間中基址的獲得方式:頁目錄的第0x300個(gè)PDE映射的頁表是頁目錄本身,而且頁目錄的第0x0個(gè)PDE映射了第0x0個(gè)頁表,所以頁表(頁 目錄)的第0x0個(gè)PTE就映射到第0x0個(gè)頁表。用PDE標(biāo)號(hào)(0x300)做32位線性 地址的高10位,用PTE標(biāo)號(hào)(
3、0x0)做12-22位,就得到了地址 0xC0000000。在 memory.c 的 main 函數(shù)中是一個(gè)二重循環(huán)。在 memory.c 的 main 函數(shù)中使用了兩個(gè)輸出函數(shù)。 printf 將內(nèi)容輸出到標(biāo)準(zhǔn)輸出(屏幕),KdbPrint將內(nèi)容輸出到 OS Lab的“輸出”窗口。這樣就解決了EOS在屏幕上輸出的內(nèi)容不能被保存的問題。Win dows科學(xué)計(jì)算器可以幫助學(xué)生進(jìn)行十六進(jìn)制、十進(jìn)制和二進(jìn)制計(jì)算,對(duì)于計(jì)算 線性地址對(duì)應(yīng)的物理地址很重要,建議教師對(duì)該工具的用法進(jìn)行適當(dāng)講解。在Windows “開始”菜單“程序”中選擇“附件”,即可找到“計(jì)算器”工具。在計(jì)算 器工具的“查看”菜單中選擇“
4、科學(xué)型” ,即可進(jìn)行多種進(jìn)制數(shù)值的計(jì)算和轉(zhuǎn)換。二、問題答案及參考代碼2.1圖2 (a)中應(yīng)用程序進(jìn)程的頁目錄和頁表占用了幾個(gè)物理頁?頁框號(hào)分別是多少?頁目錄占用一個(gè)物理頁,頁框號(hào)是0x409。頁表占用5個(gè)物理頁(不算復(fù)用為頁表的頁目錄),頁框號(hào)是 0x41D、 0x401 、 0x403、 0x404、 0x402。2.2圖2 (a)中應(yīng)用程序進(jìn)程映射用戶地址空間(低2G)的頁表的頁框號(hào)是多少?該頁表有幾個(gè)有效的PTE或者說有幾個(gè)物理頁用來裝載應(yīng)用程序的代碼、數(shù)據(jù)和堆棧,頁框號(hào)是 多少?映射用戶地址空間的頁表的頁框號(hào)是0x41D。該頁表有11個(gè)有效的PTE,頁框號(hào)是0x41E, 0x41F,
5、0x420, 0x421 , 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428。2.3比較圖2 (a)和(b),系統(tǒng)進(jìn)程和應(yīng)用程序進(jìn)程是否有各自的頁目錄?在頁目錄映射 的頁表中,哪些是獨(dú)占的,哪些是共享的?系統(tǒng)進(jìn)程和應(yīng)用程序進(jìn)程一定有各自的頁目錄。 映射了用戶地址空間的頁表被應(yīng)用程序精品文檔 進(jìn)程獨(dú)占,頁框號(hào)是 0X41D,其它的頁表(映射了內(nèi)核地址空間)都是共享的。2.4統(tǒng)計(jì)當(dāng)應(yīng)用程序進(jìn)程和系統(tǒng)進(jìn)程并發(fā)時(shí),總共有多少物理頁被占用?在圖2中,以應(yīng)用程序進(jìn)程占用的物理頁為基準(zhǔn),系統(tǒng)進(jìn)程占用的物理頁只有頁目錄與其不同,所以應(yīng)用程序進(jìn)程占用的物理頁106
6、6加上系統(tǒng)進(jìn)程頁目錄占用的物理頁1就是1067。2.5應(yīng)用程序進(jìn)程結(jié)束后,為什么系統(tǒng)進(jìn)程(即內(nèi)核地址空間)占用的物理頁會(huì)減少?應(yīng)用程序結(jié)束后,EOS內(nèi)核會(huì)刪除應(yīng)用程序進(jìn)程在內(nèi)核地址空間中占用的內(nèi)存(例如刪 除PCB對(duì)象等)。這些內(nèi)存必須要回收,否則如果一個(gè)應(yīng)用程序反復(fù)運(yùn)行多次,內(nèi)核空間就 有被耗盡的危險(xiǎn),操作系統(tǒng)的可靠性就無從談起了。2.6兩個(gè)應(yīng)用程序進(jìn)程并發(fā)時(shí),進(jìn)程2共享進(jìn)程1代碼頁的映射方式。CR3->0x409PDE: 0x1 (0x400000)->0x41DPTE: 0x1 (0x401000)->0x41EPTE: 0x2 (0x402000)->0x41F
7、PTE: 0x3 (0x403000)->0x420PTE: 0x4 (0x404000)->0x421PTE: 0x5 (0x405000)->0x422PTE: 0x6 (0x406000)->0x423PTE: 0x7 (0x407000)->0x424PTE: 0x8 (0x408000)->0x425PTE: 0x9 (0x409000)->0x426PTE: 0xA (0x40A000)->0x427PTE: 0xB (0x40B000)->0x428CR3->0x42BPDE: 0x1 (0x400000)->0x
8、42EPTE: 0x1 (0x401000)->0x41EPTE: 0x2 (0x402000)->0x41FPTE: 0x3 (0x403000)->0x431PTE: 0x4 (0x404000)->0x432PTE: 0x5 (0x405000)->0x433PTE: 0x6 (0x406000)->0x434PTE: 0x7 (0x407000)->0x435PTE: 0x8 (0x408000)->0x436PTE: 0x9 (0x409000)->0x437PTE: 0xA (0x40A000)->0x438PTE: 0x
9、B (0x40B000)->0x4392.7統(tǒng)計(jì)當(dāng)兩個(gè)應(yīng)用程序進(jìn)程并發(fā)時(shí),總共有多少物理頁被占用?有更多的進(jìn)程同時(shí)運(yùn)行 呢?如果進(jìn)程的數(shù)量足夠多,物理內(nèi)存是否會(huì)用盡,如何解決該問題?在圖3中,以進(jìn)程1占用的物理頁為基準(zhǔn),進(jìn)程2共有14個(gè)物理頁與其不同,所以1069 + 14 = 1083。如果有更多的進(jìn)程同時(shí)運(yùn)行,就會(huì)有更多的物理頁被占用,由于物理頁的數(shù)量是有限的,所以肯定會(huì)被用盡。使用虛擬內(nèi)存技術(shù)(即將一些暫時(shí)不用的物理頁存儲(chǔ)在磁盤上,需要使用時(shí)再放入物理內(nèi)存),可以解決該問題。2.8假設(shè)修改了頁目錄, 使其第0x100個(gè)PDE映射的頁框號(hào)是頁目錄本身,此時(shí)頁目錄和頁表會(huì)映射在4G虛擬
10、地址空間的什么位置呢?說明計(jì)算方法。頁目錄:PDE標(biāo)號(hào)0x100做為虛擬地址的高 10位,PTE標(biāo)號(hào)0x100做為虛擬地址的12-22 位,得到虛擬地址 0x 40100000。頁表:PDE標(biāo)號(hào)0x100做為虛擬地址的高 10位,PTE標(biāo)號(hào)0x0做為虛擬地址的12-22 位,得到虛擬地址 0x 40000000。2.9通過編程的方式統(tǒng)計(jì)并輸出用戶地址空間占用的內(nèi)存數(shù)目。通過編程的方式統(tǒng)計(jì)并輸出頁目錄和頁表的數(shù)目。參見源代碼文件 memoryex.c。2.10為什么不能從頁表基址0xC0000000開始遍歷,來查找有效的頁表呢?只有當(dāng)一個(gè)虛擬地址通過二級(jí)頁表映射關(guān)系能夠映射到實(shí)際的物理地址時(shí),該虛擬地址才能夠被訪問,否則會(huì)觸發(fā)異常。由于并不是所有的頁表都有效,所以不能從頁表基址精品文檔0xC0000000 開始遍歷。2.11 編寫代碼將申請(qǐng)到的物理頁從二級(jí)頁表映射中移除,并讓內(nèi)核回收這些物理頁。參見源代碼文件 MapNewPageEx.c使用該文件中的ConsoleCmdMemoryMap函數(shù)替換ke/sysproc.c 中的 ConsoleCmdMemoryMa函數(shù)即可。提示:在移除映射的物理頁時(shí),只需要將PTE/PDE的存在標(biāo)志位設(shè)置為 0即可,要先修改PTE再修改PDE另外,要注意刷新快表。調(diào)用MiFreePages函數(shù)即可回收物理頁,具體的用法可以參考其函數(shù)定義
溫馨提示
- 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度產(chǎn)品發(fā)布會(huì)現(xiàn)場(chǎng)布置與策劃合同3篇
- 二零二五年度寵物狗行業(yè)規(guī)范與自律協(xié)議4篇
- 二零二四年智能石方破碎生產(chǎn)線建設(shè)合作合同3篇
- 2025年度個(gè)人與個(gè)人間寵物美容及寄養(yǎng)服務(wù)合同
- 二零二五年度鏟車租賃與道路養(yǎng)護(hù)合作協(xié)議3篇
- 二零二五年度炊事員勞務(wù)派遣與健康管理合同
- 二零二五年度船舶租賃與運(yùn)營(yíng)管理承包合同3篇
- 個(gè)人二手房出租合同書(2024年版)一
- 數(shù)字文創(chuàng)產(chǎn)業(yè)創(chuàng)新-深度研究
- 建筑抗震減災(zāi)新技術(shù)-深度研究
- 口腔醫(yī)學(xué)中的人工智能應(yīng)用培訓(xùn)課件
- 工程質(zhì)保金返還審批單
- 【可行性報(bào)告】2023年電動(dòng)自行車項(xiàng)目可行性研究分析報(bào)告
- 五月天歌詞全集
- 商品退換貨申請(qǐng)表模板
- 實(shí)習(xí)單位鑒定表(模板)
- 六西格瑪(6Sigma)詳解及實(shí)際案例分析
- 機(jī)械制造技術(shù)-成都工業(yè)學(xué)院中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- 數(shù)字媒體應(yīng)用技術(shù)專業(yè)調(diào)研方案
- 2023年常州市新課結(jié)束考試九年級(jí)數(shù)學(xué)試卷(含答案)
- 正常分娩 分娩機(jī)制 助產(chǎn)學(xué)課件
評(píng)論
0/150
提交評(píng)論