1.分頁內存管理的核心就是:頁面的翻譯。
對於任何一個虛擬頁面,系統要知道該頁面是否在物理內存中?如果在的話,對應的物理頁面是哪一個?如果不在,就會產生一個缺頁中斷,並將該虛頁從磁盤轉到內存,然後將分配給它的物理頁面號返回。虛擬頁面到物理頁面的映射,這個翻譯過程由內存管理單元MMU完成。MMU接收CPU發出的虛擬地址,將其翻譯爲物理地址後發給內存。MMU對虛擬地址的翻譯只是對頁面號的翻譯,而對於偏移值則不進行任何操作,這是因爲虛擬頁表和物理頁表大小完全一樣,虛擬頁面裏的偏移值和物理頁面裏的偏移值完全一樣,因此無需翻譯。
2.頁表在分頁管理系統中的地位?
頁表記錄的條數與虛擬頁面數相同。對於32位尋址的虛擬地址,如果頁面大小爲4KB,則頁表的記錄條數最多可以達到1048576條。內存管理單元依賴頁表來進行一切與頁面有關的管理活動,例如,判斷某一頁面號是否在內存中,頁面是否受保護,頁面是否非法空間。
3.頁表記錄了那些內容?
4.頁面翻譯過程?
5.分頁內存管理的缺點與解決方法?
頁表會很大,佔用大量的內存空間,如1048576個頁面的記錄,每個記錄又會佔用多個字節,這樣一個頁表所佔的內存空間就很大了。
1)多級頁表
2) 反轉頁表
6.如何提高翻譯效率?
如果使用單級頁表,則每次內存訪問變爲兩次內存訪問,先訪問頁表,在訪問實際的物理內存,如果使用多級頁表或反轉頁表,則每次內存訪問變爲更多次的內存訪問,這樣效率會越來越低。爲了提高這種內存翻譯的效率,我們想出了一些方法。
在一段時間內,程序所要訪問的地址空間有一點的空間侷限性,如果一個頁面被訪問,則有些頁面被訪問的可能性很大,這樣我們可以將這些頁面的翻譯結果存在緩存裏,如是可以大大提高系統效率。
TLB通常由CPU製造商提供,但TLB的更換算法則有可能由操作系統提高。
7.缺頁中斷處理?
8.鎖住頁面:如果一個頁面非常重要,可以把它鎖住,從而防止不必要的頁面替換。
9.一個進程內的碎片空間稱爲內部空間,頁面越大,內部碎片就可能越大。而頁面越小,則頁表尺寸將越大,所以頁面尺寸的大小要在內部碎片和頁表大小之間平衡。
10.內存抖動的概念?
在更換頁面時,如果更換的頁面是一個很快就會被訪問的頁面,則在此次缺頁中斷後很快又會發生新的缺頁中斷,最壞的情況是,每次新的訪問都是對一個不在內存的頁面進行訪問,即每次內存訪問都會產生缺頁中斷,這樣每次的內存訪問其實變成可磁盤訪問,磁盤的訪問速度可能會比內存慢幾百萬倍,因此整個系統的效率急劇下降,這種現象稱爲內存抖動。發生內存抖動是,系統幾乎看不到任何進展的現象,CPU的資源絕大部分將消耗在缺頁中斷上。