操作系統(tǒng)實(shí)驗(yàn)八_第1頁
操作系統(tǒng)實(shí)驗(yàn)八_第2頁
操作系統(tǒng)實(shí)驗(yàn)八_第3頁
操作系統(tǒng)實(shí)驗(yàn)八_第4頁
操作系統(tǒng)實(shí)驗(yàn)八_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

實(shí)驗(yàn)八分頁存儲(chǔ)器管理實(shí)驗(yàn)?zāi)康摹W(xué)習(xí)i386處理器的二級頁表硬件機(jī)制,理解分頁存儲(chǔ)器管理原理?!げ榭碋OS應(yīng)用程序進(jìn)程和系統(tǒng)進(jìn)程的二級頁表映射信息,理解頁目錄和頁表的管理方式?!ぞ幊绦薷捻撃夸浐晚摫淼挠成潢P(guān)系,理解分頁地址變換原理。實(shí)驗(yàn)內(nèi)容執(zhí)行了實(shí)驗(yàn)指導(dǎo)書3.2的步驟,觀察到了EOS應(yīng)用程序進(jìn)程的頁目錄和頁表,說明了頁目錄所在的物理頁框號是從CR3寄存器中取得的,并且在頁目錄中顯示了所有有效的PDE的下標(biāo)和PDE的值。在各個(gè)頁表中也同樣顯示了所有有效的PTE的下標(biāo)和值。在下標(biāo)為0x200的PDE對應(yīng)的頁表中,所有的1024個(gè)PTE都映射了物理頁,且這1024個(gè)物理頁的物理頁框號是連續(xù)的。頁目錄和物理頁中都標(biāo)記了它們所在的邏輯地址,也就是說通過訪問這些邏輯地址,就可以訪問這些物理頁中的數(shù)據(jù)。但是,在頁表中卻標(biāo)記了每個(gè)頁表所能夠映射的4MB邏輯地址空間的基址,這樣可以方便用戶從頁表信息中迅速掌握進(jìn)程在4GB邏輯地址空間中的布局。當(dāng)EOS操作系統(tǒng)啟動(dòng)i386處理器的分頁機(jī)制后,就只能使用邏輯地址(虛擬地址)來訪問物理內(nèi)存,所以只有知道了頁目錄和頁表的虛擬地址,才能夠訪問它們。針對實(shí)驗(yàn)指導(dǎo)書3.2中提出的問題,進(jìn)行以下嘗試和回答:應(yīng)用程序進(jìn)程的頁目錄和頁表一共占用了幾個(gè)物理頁?頁框號分別是多少?答:頁目錄占用一個(gè)物理頁,頁框號是0x409;頁表占用5個(gè)物理頁,頁框號分別是是0x41D、0x401、0x403、0x404、0x402。映射用戶地址空間(低2G)的頁表的物理頁框號是多少?該頁表有幾個(gè)有效的PTE,或者說有幾個(gè)物理頁用來裝載應(yīng)用程序的代碼和數(shù)據(jù)?物理頁框號分別是多少?答:映射用戶地址空間的頁表的頁框號是0x41D;該頁表有11個(gè)有效的PTE;物理頁框號分別是0x41E、0x41F、0x420、0x421、0x422、0x423、0x424、0x425、0x426、0x427、0x428。3、執(zhí)行了實(shí)驗(yàn)指導(dǎo)書3.3的步驟,觀察到了應(yīng)用程序進(jìn)程和系統(tǒng)進(jìn)程并發(fā)時(shí)系統(tǒng)進(jìn)程的頁目錄和頁表。學(xué)到了頁目錄在虛擬地址空間中的基址的獲得方式:頁目錄的第0x300個(gè)PDE映射的頁表就是頁目錄本身,這樣頁表(頁目錄)的第0x300個(gè)PTE又映射到頁目錄,所以用PDE標(biāo)號(0x300)做32位線性地址的高10位,用PTE標(biāo)號(0x300)做12-22位,就得到了地址0xC0300000。同理,頁表在虛擬地址空間中基址的獲得方式:頁目錄的第0x300個(gè)PDE映射的頁表是頁目錄本身,而且頁目錄的第0x0個(gè)PDE映射了第0x0個(gè)頁表,所以頁表(頁目錄)的第0x0個(gè)PTE就映射到第0x0個(gè)頁表。用PDE標(biāo)號(0x300)做32位線性地址的高10位,用PTE標(biāo)號(0x0)做12-22位,就得到了地址0xC0000000。4、針對實(shí)驗(yàn)指導(dǎo)書3.3中提出的問題,進(jìn)行以下嘗試和回答:EOS啟動(dòng)后系統(tǒng)進(jìn)程是一直運(yùn)行的,所以當(dāng)創(chuàng)建應(yīng)用程序進(jìn)程后,系統(tǒng)中就同時(shí)存在了兩個(gè)進(jìn)程,這兩個(gè)進(jìn)程是否有各自的頁目錄?在頁目錄映射的頁表中,哪些是應(yīng)用程序進(jìn)程和系統(tǒng)進(jìn)程共享的,哪些是獨(dú)占的?分析其中的原因。答:系統(tǒng)進(jìn)程和應(yīng)用程序進(jìn)程一定有各自的頁目錄;映射了用戶地址空間的頁表被應(yīng)用程序進(jìn)程獨(dú)占,頁框號是0x41D,映射了內(nèi)核地址空間的頁表都是共享的。統(tǒng)計(jì)當(dāng)應(yīng)用程序進(jìn)程和系統(tǒng)進(jìn)程并發(fā)時(shí),總共有多少物理頁被占用?答:系統(tǒng)進(jìn)程占用的物理頁只有頁目錄與其不同,所以應(yīng)用程序進(jìn)程占用的1066物理頁,系統(tǒng)進(jìn)程頁目錄占用的1物理頁,總共1067物理頁被占用。思考為什么系統(tǒng)進(jìn)程(即內(nèi)核地址空間)占用的物理頁會(huì)減少?答:應(yīng)用程序結(jié)束后,EOS內(nèi)核會(huì)刪除應(yīng)用程序進(jìn)程在內(nèi)核地址空間中占用的內(nèi)存,例如刪除PCB對象等。這些內(nèi)存必須要回收,否則如果一個(gè)應(yīng)用程序反復(fù)運(yùn)行多次,內(nèi)核空間就有可能被耗盡,操作系統(tǒng)就失去了可靠性。5、執(zhí)行了實(shí)驗(yàn)指導(dǎo)書3.4的步驟,觀察到了同一個(gè)應(yīng)用程序的可執(zhí)行文件創(chuàng)建的兩個(gè)應(yīng)用程序進(jìn)程在并發(fā)時(shí)各自的頁目錄和頁表,學(xué)習(xí)到了多個(gè)應(yīng)用程序進(jìn)程是如何共享內(nèi)核空間的,以及同一個(gè)應(yīng)用程序的不同進(jìn)程是如何擁有各自獨(dú)立的用戶空間,從而完成隔離的。同一個(gè)應(yīng)用程序創(chuàng)建的兩個(gè)并發(fā)的進(jìn)程,它們的用戶虛擬地址空間完全相同,而映射的物理頁完全不同,從而保證相同的行為(執(zhí)行過程)可以在獨(dú)立的空間內(nèi)完成。6、針對實(shí)驗(yàn)指導(dǎo)書3.4中提出的問題,進(jìn)行以下嘗試和回答:假設(shè)進(jìn)程一使用的0x416和0x417物理頁保存了應(yīng)用程序的可執(zhí)行代碼,由于可執(zhí)行代碼通常是不變的、只讀的,現(xiàn)在假設(shè)優(yōu)化過的EOS允許同一個(gè)應(yīng)用程序創(chuàng)建的多個(gè)進(jìn)程可以共享那些保存了可執(zhí)行代碼的物理頁,嘗試結(jié)合圖16-3寫出共享可執(zhí)行代碼的物理頁后進(jìn)程二用戶地址空間的映射信息。并說明共享可執(zhí)行代碼的物理頁能帶來哪些好處。答:共享可執(zhí)行代碼的物理頁可以提高運(yùn)行效率高,因?yàn)檫M(jìn)程可以直接讀寫內(nèi)存,而不需要任何數(shù)據(jù)的拷貝。前面的問題只是解決了共享可執(zhí)行代碼物理頁的問題,其實(shí)就算是易變的數(shù)據(jù)所占用的物理頁也是可以共享的。例如在創(chuàng)建進(jìn)程二時(shí),可以使之共享進(jìn)程一中那些還沒有發(fā)生過寫操作的數(shù)據(jù)頁,然后當(dāng)進(jìn)程一或進(jìn)程二對共享的數(shù)據(jù)頁進(jìn)行寫操作時(shí),必須先復(fù)制一個(gè)新的數(shù)據(jù)頁映射到自己的進(jìn)程空間中,然后再完成寫操作,這就是“寫時(shí)復(fù)制”(Copyonwrite)技術(shù)。請讀者進(jìn)一步說明使用“寫時(shí)復(fù)制”技術(shù)能帶來哪些好處。感興趣的讀者也可以嘗試在EOS操作系統(tǒng)中實(shí)現(xiàn)“寫時(shí)復(fù)制”技術(shù)。答:寫時(shí)復(fù)制是一種計(jì)算機(jī)程序設(shè)計(jì)領(lǐng)域的優(yōu)化策略。其核心思想是,如果有多個(gè)調(diào)用者同時(shí)請求相同資源(如內(nèi)存或磁盤上的數(shù)據(jù)存儲(chǔ)),他們會(huì)共同獲取相同的指針指向相同的資源,直到某個(gè)調(diào)用者試圖修改資源的內(nèi)容時(shí),系統(tǒng)才會(huì)真正復(fù)制一份專用副本給該調(diào)用者,而其他調(diào)用者所見到的最初的資源仍然保持不變。這過程對其他的調(diào)用者都是透明的。寫時(shí)復(fù)制的優(yōu)點(diǎn)是如果調(diào)用者沒有修改該資源,就不會(huì)有副本被建立,因此多個(gè)調(diào)用者只是讀取操作時(shí)可以共享同一份資源。統(tǒng)計(jì)當(dāng)兩個(gè)應(yīng)用程序進(jìn)程并發(fā)時(shí),總共有多少物理頁被占用?有更多的進(jìn)程同時(shí)運(yùn)行呢?根據(jù)之前的操作方式,嘗試在更多的控制臺(tái)中啟動(dòng)應(yīng)用程序來驗(yàn)證自己的想法。如果進(jìn)程的數(shù)量足夠多,物理內(nèi)存是否會(huì)用盡,如何解決該問題?答:以進(jìn)程1占用的物理頁為基準(zhǔn),進(jìn)程2共有14個(gè)物理頁與其不同,1069+14=1083,即總共有1083物理頁被占用。如果有更多的進(jìn)程同時(shí)運(yùn)行,就會(huì)有更多的物理頁被占用,由于物理頁的數(shù)量是有限的,物理內(nèi)存會(huì)被用盡??梢允褂锰摂M內(nèi)存技術(shù)解決該問題。7、執(zhí)行了實(shí)驗(yàn)指導(dǎo)書3.5的步驟,學(xué)會(huì)了在系統(tǒng)進(jìn)程的二級頁表中映射新申請的物理頁。說明了雖然進(jìn)程可以訪問4G虛擬地址空間,但是只有當(dāng)一個(gè)虛擬地址通過二級頁表映射關(guān)系能夠映射到實(shí)際的物理地址時(shí),該虛擬地址才能夠被訪問,否則會(huì)觸發(fā)缺頁異常;所有未用的物理頁都是由EOS操作系統(tǒng)內(nèi)核統(tǒng)一管理的,使用時(shí)必須向內(nèi)核申請;為虛擬地址映射物理頁時(shí),必須首先為頁目錄安裝頁表,然后再為頁表安裝物理頁,并且只有在刷新快表后,對頁目錄和頁表的更改才能生效;不同的虛擬地址可以映射相同的物理頁,從而實(shí)現(xiàn)共享。驗(yàn)證以上第一個(gè)結(jié)論時(shí),通過調(diào)試EOS會(huì)出現(xiàn)藍(lán)屏,并顯示錯(cuò)誤原因是由于14號異常(缺頁異常)引起的。原因就是由于從MapNewPage.c文件復(fù)制的第二行代碼所訪問的虛擬地址沒有映射物理內(nèi)存,所以對該虛擬地址的訪問會(huì)觸發(fā)缺頁異常,而此時(shí)EOS還沒有為缺頁異常安裝中斷服務(wù)程序,所以就調(diào)用KeBugCheck函數(shù)顯示藍(lán)屏錯(cuò)誤了。調(diào)試結(jié)果如圖所示:注釋掉會(huì)觸發(fā)異常的那行代碼,EOS恢復(fù)正常,調(diào)試結(jié)果如圖所示:通過調(diào)試驗(yàn)證其他結(jié)論,結(jié)果如圖所示:思考練習(xí)3.修改EOSApp.c中的源代碼,通過編程的方式統(tǒng)計(jì)并輸出頁目錄和頁表的數(shù)目。注意頁目錄被復(fù)用為頁表。答:修改后代碼如下:((PMMPTE_HARDWARE)PageTableBase)[IndexOfTableEntry].Writable

=

1;

MiFlushEntireTlb();

//

//

測試

//

OutputFormat

=

"Read

Memory

0xE0001000:

%d\n";

fprintf(StdHandle,

OutputFormat,

*((PINT)0xE0001000));

KdbPrin

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論