作業系統13 儲存器管理之分頁儲存

2021-08-21 11:21:50 字數 3923 閱讀 7334

四.位址變換機構

五.訪問記憶體的有效時間

六.兩級和多級頁表

七.反置頁表

八.參考資料

連續儲存會產生許多的「碎片」,雖然「緊湊」方法可以將許多碎片拼接可以的大塊空間,但需為之很大的開銷。如果允許將乙個程序直接分散的裝入到許多不相鄰的分割槽中,便可以充分利用記憶體空間。基於這一思想,產生了離散分配方法。根據在離散分配時所分配的位址空間的基本單位不同,將離散分配方法分為以下三種:

1.頁面和物理塊

a.頁面

分頁儲存管理將程序的邏輯位址分為若干頁。病對每個頁進行編號,從0開始,如:第0頁,第1頁。相應的,把記憶體中的實體地址分為若干塊,同時對他們進行編號,如0#,1#等。在記憶體分配時,以塊為單位,將若干頁面分別裝入多個不相鄰的物理塊中。由於程序的最後一頁經常裝不滿,就形成了不可利用的碎片,稱為「頁面碎片」

b.頁面大小

在分頁系統中,頁面過小會造成單個程序占有多個頁面,從而導致程序的頁面過長,占用大量記憶體,還會降低頁面換進換出的效率。頁面過大,會導致頁面碎片過大。因此,頁面的大小應該適中,且頁面大小應該為2的冪。通常為1kb—8kb.

2.位址結構

分頁位址中位址結構如下:

它包括兩部分:前一部分為頁號p,後一部分表示為位移量w,即頁內位址。

上圖中的位址長度為32位,其中011位表示頁內位址,即每頁大小為4kb,1231表示頁號,位址空間最多執行有1m頁。

對某特定機器,其位址結構是一定的。若給定乙個邏輯位址空間中的位址為a,頁面的大小為l,則頁號p和頁內位址d可按下式求得:

$ p = a/ l $(整除)

$ d= a % l $(取餘)

3.頁表

在分頁系統中,為了保證程序可以在記憶體中找到每個頁面對應的物理塊,系統為每乙個程序建立了一張頁面映像表,簡稱頁表。在程序位址空間內的所有頁,依次在頁表中有一頁表項,其中記錄了相應頁在記憶體對應的物理塊號。如下圖:

在分頁系統中,常常會在頁表的表項中設定一各訪問控制字段,用於表示該儲存塊中的內容是允許讀/寫還是唯讀,以此來對該儲存塊中的內容加以保護。

位址變化機構的任務是將邏輯位址中的頁號轉換為記憶體中的物理塊號。

1.基本的位址變換機構

程序在執行期間,需要將使用者位址空間中的邏輯位址變換為記憶體空間中的實體地址,由於它執行的頻率非常高,每條指令的位址都需要進行變換,因此需要採用硬體來實現。頁表功能是由一組專門的暫存器來實現的。乙個頁表項用乙個暫存器。而頁表大多駐留在記憶體中,在系統中只設定乙個頁表暫存器,在其中存放頁表在記憶體中的的始址和頁表的長度。在程序未執行時,這兩個資料存在程序的pcb中,當作業系統排程該程序時,再講這兩個資料裝入頁表暫存器中。因此。單處理機環境中,雖然系統可以允許多個程序,但只需要乙個頁表暫存器。

轉換過程

當程序要訪問某個邏輯位址中的資料時,分頁位址變化機構會自動將有效位址分為頁號和頁內位址兩部分,再以頁號為索引去檢索頁表。查詢操作由硬體執行。執行前,將頁號和頁表長度進行比較,檢視是否出現越界錯誤,如果出現則產生位址越界中斷,若未出現,則將表頁始址與頁號和頁表項長度的乘積相加,便得到該表項在頁表中的位置,於是可以得到該塊的物理塊號,將之裝入實體地址暫存器中,與此同時,再將有有效位址暫存器中頁內位址送入實體地址暫存器的塊內字段中,這樣就完成了從邏輯位址到實體地址的轉變。

邏輯位址轉換實體地址例項2.具有快表的位址變換機構

上述方法需要訪問兩次記憶體,一次是訪問頁表,確定所訪問資料或指令的實體地址,一次是根據該實體地址訪問資料或者指令。顯然這樣的方法較慢。

為此我們可以在位址變換機構中增設乙個具有並行查詢能力的高速緩衝儲存器——快表,又稱聯想暫存器,用來存放當前訪問的若干頁表項,加速位址變換過程,命中率達到90%以上

有些處理器設計為快表和慢表同時查詢,快表查詢成功則終止慢表的查詢

從程序發出指定邏輯位址的訪問請求,經過位址變換,到在記憶體中找到對應的實際實體地址單元並取出資料,所需要花費的總時間,稱為記憶體的有效訪問時間(effective access time,eat)。

假設訪問一次記憶體的時間為t,在基本分頁儲存管理方式中,有效訪問時間為:eat = t + t = 2t

在引入快表的分頁儲存管理方式中,有效訪問時間的計算公式即為;eat=а×λ+(t+λ)(1—а)+t=2t+λ-t×а。λ表示查詢快表所需要的時間,а表示命中率,t表示訪問一次記憶體所需要的時間。

1.引入原因

現代系統大多都支援非常大的邏輯空間,在這種情況下,頁表就變得非常大,要占用相當大的記憶體空間。為了解決這一問題,我們採用了兩種方法來改進這個問題

2.兩級頁表

a.外層頁表

兩級頁表就只將頁表再次進行分頁,將頁表頁面在離散的放在不同物理塊中。同時為這些分散的頁表頁面再建立一張頁表,稱為外層頁表,外層頁表的頁表項記錄了頁表頁面的物理塊號。

b.位址結構

以32位邏輯位址空間為例。當頁面大小為4kb時,若採用一級頁表,應具有20位頁號,即頁表項應該有1m.如果採用二級頁表結構時,在對頁表進行分頁,頁表分頁包含2

102^

210個頁表項,最多允許有2

102^

210頁表頁面。即如下圖:

外層頁表的頁表項是頁表,頁表的頁表項是程序的頁面

c.位址變換

在兩級頁表中,增加了乙個外層頁表暫存器,存放外層頁表的始址,並利用邏輯位址中的外層頁號p

1p_1

p1​作為外層頁表的索引,從中找到指定頁表分頁的始址,再利用p

2p_2

p2​作為指定頁表分頁的索引,找到指定的頁表項,其中即含有該頁在記憶體的物理塊號p,用該塊號p和頁內位址d即可構成訪問的記憶體實體地址。

3.多級頁表

對於32位的機器,採用兩級頁表結構是合適的,但對於64位的機器,如果要求它支援2

322^

232規模的物理儲存空間。,則即使是採用**頁表結構也是很難辦到的的,而當前的實際應用中也無此必要。故在進兩年退出的64os中,把可直接定址的儲存器空間減少為45位長度,便可以利用**頁表結構實現分頁儲存管理。

1.反置頁表的引入

為了減少頁表占用記憶體的大小,引入了反置頁表。

一般的頁表的頁表項是按照頁號進行排序的。頁表項中的內容是物理塊號。而反置頁表是為每乙個物理塊建立乙個頁表項,並將他們按照物理塊的編號進行排序,其中內容是頁號和其所隸屬程序的識別符號。

2.位址變換

在利用反置頁表進行位址變換時,是根據程序識別符號和頁號,去檢索反置頁表。如果檢索到與之匹配的頁表項,則該頁表項(中)的序號i便是該頁所在的物理塊號,可用該塊號與頁內位址一起構成實體地址送記憶體位址暫存器。若檢索了整個反置頁表仍未找到匹配的頁表項,則表明此頁尚未裝入記憶體。對於不具有請求調頁功能的儲存器管理系統,此時則表示位址出錯。對於具有請求調頁功能的儲存器管理系統,此時應產生請求調頁中斷,系統將把此頁調入記憶體。

反置頁表僅包含以調入記憶體的頁面,並未包含未調入記憶體的頁面,所以還應該為每個程序建立乙個外部頁表,該錶和傳統頁表一樣。

搜尋時可以採用雜湊演算法進行改進

《作業系統 第四版》

作業系統儲存管理之分段儲存

從固定分割槽到動態分割槽,從分割槽方式到分頁方式發展提高了主存空間利用率。而分段儲存管理的引入,則滿足使用者 程式設計師 程式設計和使用上的要求,這些要求其它各種儲存管理技術難以滿足。在分頁式儲存管理中,頁的劃分 即邏輯位址劃分為頁號和單元號是使用者不可見的,連續的使用者位址空間將根據頁框架 塊 的...

作業系統儲存管理之分段儲存

而程式還存在一種分段結構 乙個程式由若干程式段 模組 組成,例如由乙個主程式段 若干子程式段 陣列段和工作區段所組成 每個段都從 0 開始編址,每個段都有模組名,且具有完整的邏輯意義。段與段之間的位址不連續,而段內位址是連續的。使用者程式中可用符號形式 指出段名和入口 呼叫某段的功能,程式在編譯或彙...

作業系統之分頁式記憶體管理1

1.分頁記憶體管理的核心就是 頁面的翻譯。對於任何乙個虛擬頁面,系統要知道該頁面是否在物理記憶體中?如果在的話,對應的物理頁面是哪乙個?如果不在,就會產生乙個缺頁中斷,並將該虛頁從磁碟轉到記憶體,然後將分配給它的物理頁面號返回。虛擬頁面到物理頁面的對映,這個翻譯過程由記憶體管理單元mmu完成。mmu...