頁 頁表 頁表項

2021-08-02 20:24:44 字數 1758 閱讀 4839

//作業系統和計算機組成原理裡都講到記憶體管理的頁式管理,但是本人以及很多初次學習分頁的時候,都會迷茫頁表大小和頁表項大小之間的關係,本人仔細分析了後寫了這篇blog,僅當學習交流,個人理解之用,如果有錯或者分析不夠嚴謹,歡迎指正。

//按字、圖結合起來分析,相信還是比較容易看懂。

號單元開始編址,稱之為目標模組的相對位址,即為邏輯位址。

頁:將程序劃分的塊,對應的大小就叫頁面大小。

頁框:將記憶體劃分的塊。

頁和頁框二者一一對應,乙個頁放入乙個頁框,(理論上)頁的大小和頁框的大小相等。 頁表

:就是乙個頁和頁框一一對應的關係表。【存放在記憶體中】

關係表只是起到乙個索引的作用,說白了就是能根據關係錶能查到某乙個頁面和哪乙個頁框所對應。 //

//已知條件:邏輯位址32

位、頁面大小

4kb、頁表項大小

4b,按位元組編址

。分析:        

首先32

位的虛擬位址可表示的程序大小應該是2^32b = 4gb(暫時別去想頁號p佔多少位,w佔多少位)

2.(根據頁的定義和頁面大小的定義)將程序進行分頁:

3.我們已經知道了頁面的數目為:2^20頁。現在的迷茫點就在於頁表項的問題上。

上圖在頁表上已經給出了幾個資料:20位,

12位,

32位,2^20

項。一一解釋如下【請結合上圖乙個乙個資料分析】:

2^20

項:因為頁表的作用是要將頁面的頁框一一對應起來,所以,每乙個頁面在頁表中都應該有乙個頁表項:用來表示乙個頁號對應一頁頁框號(記憶體中的塊號),故應     

該有2^20項。【不應該有問題吧,就好像乙個班有50個同學,每個人都應該有乙個位址一樣】

20位:已經很顯然了,需要表示出2^20個頁表項,就至少需要20

位的位址。為什麼只取

20位而不是

21位,

22位呢,本人現在還沒想這個問題,就暫時定為恰好取

20位即可。

32位:已知條件裡告訴了頁表項大小為4b

,那麼自然就應該是

32位了。

12位:32位

-20位 

= 12

位。為什麼頁框號位址為

12位,只能表示2^12個頁框,要小於2^20個頁面呢,因為並不是程序的每乙個頁面都要調入記憶體。其實32

位、12

位、20

位這三個資料還是有一

定依據的,在二級分頁的時候就會發現「哦,原來剛剛好」。此處暫不討論二級分頁。

4.通過上面的分析我們得出了哪些資料:

邏輯位址32

位,程序大小:

4gb。

頁面:大小4kb

,數量:2^20頁。

頁表項:4b

,數量:2^20

項。所以頁表就需要4b*2^20

= 4mb的空間儲存(這就是書中說:頁表項大小為4mb

的由來)進一步,主存的頁框大小和頁面大小是相等的,也為

4kb,所以將頁表存在主存就需要占用

4mb/4kb = 1024

頁(因為頁表也是存在主存中的,而主存也是按頁框劃分的。這的確是一種資源浪費,所以就需要建立二級頁面,將其大小控制在

1頁之內,將二級頁面存入主存即可)

頁 頁表 頁表項

作業系統和計算機組成原理裡都講到記憶體管理的頁式管理,但是本人以及很多初次學習分頁的時候,都會迷茫頁表大小和頁表項大小之間的關係,本人仔細分析了後寫了這篇blog,僅當學習交流,個人理解之用,如果有錯或者分析不夠嚴謹,歡迎指正。按字 圖結合起來分析,相信還是比較容易看懂。號單元開始編址,稱之為目標模...

作業系統 頁式儲存方式,頁,頁表,頁表項

作業系統和計算機組成原理裡都講到記憶體管理的頁式管理,但是本人以及很多初次學習分頁的時候,都會迷茫頁表大小和頁表項大小之間的關係,本人仔細分析了後寫了這篇blog,僅當學習交流,個人理解之用,如果有錯或者分析不夠嚴謹,歡迎指正。按字 圖結合起來分析,相信還是比較容易看懂。頁 將程序劃分的塊,對應的大...

linux 頁 頁表 頁框 塊

基本介紹 我們知道,在linux作業系統中,cpu在執行乙個程序的時候,都會訪問記憶體。但cpu並不是直接訪問物理記憶體位址,而是通過虛擬位址空間來間接的訪問物理記憶體位址。所謂的虛擬位址空間,是作業系統為每乙個正在執行的程序分配的乙個邏輯位址,在32位機上,其範圍從0 4g 1。作業系統通過將虛擬...