存儲器/內存管理--分頁存儲管理方式


本文以32位操作系統為例來介紹存儲器/內存管理--分頁存儲管理方式。

 

  在此方式下,操作系統會將用戶程序的地址(邏輯地址)空間分為若干個固定大小區域,稱為“頁”或“頁面”。相應地,操作系統也會將內存空間(物理地址)划分為若干個物理塊或頁框,當然,頁和塊的大小應該相同,這樣就可以將一個頁存儲在一個物理塊中了。

 

頁面和物理塊兩個概念

  頁面:在分頁存儲管理方式中,操作系統會將進程的邏輯地址空間分成若干個頁,並加以編號,每一個編號代表一個頁或者頁面。

  物理塊:在內存的物理地址空間分成若干個塊,也為每個塊加以編號,每一個編號代表着一個物理塊或者頁框。

 

頁面大小的選擇

  由於進程的最后一頁通常是裝不滿的,從而形成了不可利用的碎片,這里稱為“頁內碎片”。如果頁/頁面的大小選擇過大,則會造成最后一頁的頁內碎片較大,內存利用率不高。如果頁/頁面大小選擇過小,則會造成進程的頁表(下面將介紹)過長,頁表將占用大量的內存,同樣也會降低頁面的換入換出的效率。因此,頁/頁面的大小應該選擇適中,通常為1--8KB。

 

分頁管理方式中邏輯地址的地址結構

 

  邏輯地址將分為兩部分,第一部分為頁號P,對應着所在的頁/頁面;第二部分為偏移量W,對應着所在頁的頁內地址。上圖中偏移量對應着低12位,所以每一個頁/頁面的大小為4KB,12--31位中共20位對應着頁號的地址空間,所以地址空間最多允許有1M(1024*1024)個頁。

以上是以4KB為頁/頁面大小的例子,其他頁/頁面大小可以用此方式類推。

  若給定一個邏輯地址空間中的地址A,頁面的大小為L,則可以計算出頁號P和頁內地址d,計算過程如下:

             P = INT [A/L],     d = [A] MOD L;

其中INT為取整,MOD為取余。

 

頁表:實現從頁號到物理塊號的地址映射(轉換)

 

 

 

  所以在頁表中有兩項數據,頁號和塊號,頁號和塊號是一一對應的,操作系統通過頁號,可以找到相應的物理地址的塊號,實現了從邏輯地址到物理地址的轉換。

 

地址變換過程:將邏輯地址的頁號轉換為內存中的物理塊號。

  頁表寄存器(Page-Table Register,PTR),當進程執行時,進程中PCB的頁表始址和長度就會存放到頁表寄存器中,當程序要訪問某頁號時,首先會判斷頁號是否越界了,就是判斷是否超出了頁表項的大小,接着按照頁表寄存器中的地址到內存中找到頁表,然后再根據頁表找到頁號對應的塊號,再根據頁內地址,找到對應物理地址中的數據。

兩級頁表

  頁表結構

 

 

   兩級頁表地址變換機構

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM