進程頁表兩級結構:頁目錄和頁表頁
進程頁表的基本結構僅適合於小進程地址空間,在大地址空間下,該結構發生了變化。大虛址空間下的記憶體進程頁表結構採用頁表頁和頁目錄。
32位意味著虛址空間可達4GB
虛址空間計算方法:32位的編址為232,232=210*210*210*22=4GB
1k=1024b
1m=1024K
1g=1024M
若虛址空間為2GB,在頁長4KB時共有
2G=1024K*1024K*2
(2*1024*1024KB/4KB)= 219頁
若每頁的物理頁號用4B表示,則該進程頁表本身占
219*4B = 210*29*22B = 210*210*2B = 2MB
該進程頁表佔用的空間為
(219*4B)/4KB =(219*4B)/(4*210B)= 512頁
1)算一算: 32位電腦進程頁表多大?
2)由於進程頁表大但是空,故對進程頁表採取動態分配、動態伸縮的策略
即:進程建立時並不馬上分配完整的進程頁資料表空間,當用到某頁時(缺頁中斷或分配頁時)才將該頁的物理頁號放入頁表。顯然頁表中的邏輯頁號不連續,頁表中每行同時要存放物理頁號和邏輯頁號。
頁表頁:頁表本身的空間分配也是以頁為單位。一個進程頁表的不同頁表頁之間不一定連續。
3)由於頁表所佔的巨大記憶體空間和其大部分內容在大部分時間內未使用,故進程頁表也被列入頁淘汰的範圍。
即:進程頁表的某些頁可能被淘汰到盤交換區中。
4)頁目錄:由於進程頁表的多個頁之間不再連續,因此頁表頁本身也需要地址索引,這種地址索引稱為頁目錄。
頁目錄中存放著進程頁表的所有頁表頁的地址。
採用由頁表頁和頁目錄共同構成的二級頁表機制來實現進程頁表,Intel CPU對二級頁表提供了硬體支援。
5)二級頁表結構及其地址映射
每個虛址分為三個部分
頁目錄號+虛頁號+頁內位移
6)多級頁表結構
對於更大的虛址空間,採用二級進程頁表結構可能不夠,需要三級甚至更多級頁表結構,圖3.27給出了三級頁表結構及地址映射過程。
7)多級表頁結構本質
由於頁表的不連續存放,導致對物理頁進行地址索引,這就是進程頁表,而進程頁表又是不連續導致對進程頁表頁進行地址索引,這就是頁目錄。
頁目錄是頁表頁的索引,頁表頁是進程物理空間本身的索引