操作系統根本分頁存儲管理方式

tags:    時間:2014-05-04 18:59:30
操作系統基本分頁存儲管理方式

操作系統基本分頁存儲管理方式

連續分配內存方式會形成許多「碎片」,通過緊湊的方式將碎片拼接成一塊大的空間,但是拼接過程系統開銷太大。如果允許將一個進程直接分散地裝入到許多不相鄰的分區中,那麼就不需要再進行「緊湊」。基於這一思想而產生了離散分配方式。如果離散分配的基本單位是頁,則稱為分頁存儲管理方式;如果離散分配的基本單位是段,則稱為分段存儲管理方式。

在分頁管理方式中,如果不具備頁面對換功能(將處於阻塞狀態且優先順序低的進程對換到外存),則稱為基本的分頁存儲管理方式,或稱為純分頁存儲管理方式,它不具有支持實現虛擬存儲器的功能,它要求把每個作業全部裝入內存后才能運行。

1、頁面與頁表

1.1、頁面

a)、頁面和物理塊

分頁存儲管理是將一個進程的邏輯地址空間分成若干個大小相等的片,稱為頁面或者頁,並為各頁加以編號012...。相應地,把內存空間分成與頁面相同大小的若干個存儲塊,稱為(物理)塊或頁框,也加以編號012...。在為進程分配內存時,以塊為單位將進程中的若干個頁面分別裝入到多個可以不相鄰接的物理塊中。由於進程的最後一頁經常裝不滿一塊而形成了不可利用的碎片——「頁內碎片」。

b)、頁面大小

在分頁系統中的頁面其大小適應中。頁面若太小,一方面雖然可使內存碎片減小,從而減小了內存碎片的總空間,有利於提高內存利用率,但是另一方面也會使每個進程佔用較多的頁面,導致進程頁表過長,佔用大量內存,反而降低頁面換進換出的效率。然而如果選擇的頁面較大,雖然可以減小頁表的長度,提供頁面換進換出的速度,但卻又會使頁內碎片增大。因此,頁面的大小應選擇適中,且頁面大小應該是2的冪,通常為512B~8KB

1.2、地址結構

分頁地址中的地址結構如下:

 



0~11位為頁內地址,即每頁的大小為2^12=4KB12~31位為頁號,地址空間最多允許有2^20=1M頁。

對於某特定機器,其地址結構是一定的。若給定一個邏輯地址空間中的地址為A,每頁的大小為L,則頁號P=A/L和頁內地址d=A%L

1.3、頁表

在分頁系統中,允許將進程的各個頁離散地存儲在內存不同的物理塊中,但系統應該保證進程的正確運行,即能在內存中找到每個頁面所對應的物理塊。系統又為每個進程建立了一張頁表,其記錄著相應頁在內存中對應的物理塊號。進程在執行時,通過查找頁表找到內存中對應的物理塊號。可見,頁表的作用的實現從頁號到物理塊號的地址映射。

 


2、地址變換機構

為了能將用戶地址空間中的邏輯地址 變換為內存空間的物理地址,在系統中必須設置地址變換機構。其基本任務是實現從邏輯地址到物理地址的轉換。即將邏輯地址中的頁號轉換為內存中的物理塊號,藉助頁表來實現。

2.1、基本的地址變換機構

頁表的功能可以由一組專門的寄存器來實現。一個頁表項用一個寄存器。由於寄存器成本高,數量少,因此頁表大多駐留在內存中。在系統中只設置一個頁表寄存器PTR(Page-Table Register),在其中存放頁表在內存的起始地址和頁表的長度。平時,進程未執行時,頁表起始地址和頁表長度是存放在本進程的PCB中,當調度程序調度該進程時,才將其放入頁表寄存器中。因此,在單處理機環境下,雖然系統中可以運行多個進程,但只需一個頁表寄存器。

當進程要訪問某個邏輯地址中的數據時,分頁地址變換機構會自動將有效地址(相對地址)分為頁號和頁內地址兩部分,再以頁號為索引去檢索頁表,查找操作由硬體執行。在執行檢索之前,先將頁號與頁表長度進行比較,如果頁號大於等於頁表長度,則表示本次所訪問的地址已超越進程的地址空間。系統將產生一地址越界中斷。如果沒有越界,則將頁表起始地址與頁號和頁表項長度的乘積相加,使從而到該表項在頁表中的位置,於是可從中得到該頁的物理塊號,將之裝入物理地址寄存器中。與此同時,再將有效地址寄存器中的頁內地址送入物理地址寄存器的塊內地址欄位中。這樣便完成了從邏輯地址到物理地址的變換。

 

 

 

2.2、具有快表的地址變換機構

由於頁表存放在內存中,這使CPU在存取一個數據時,都要兩次訪問內存:第一次是訪問內存的頁表,從中找到指定頁的物理塊號,再將塊號與頁內偏移量W拼接,形成物理地址;第二次訪問內存時,才是從第一次所得地址中獲得所需數據(或向此地址寫入數據)。因此,採用這種方式將使計算機的處理速度降低近一半。

為了提高地址變換速度,可在地址變換機構中增設一個具有并行查詢能力的特殊高速緩衝寄存器,又稱為「聯想寄存器」——「塊表」,用來存放當前訪問的那些頁表項。此時的地址變換過程是:在CPU給出有效地址后,由地址變換機構自動地將頁號P送入高速緩衝寄存器,並將此頁號與高速緩存中的所有頁號進行比較,若其中有與此相匹配的頁號,便表示所要訪問的頁表在快表中。直接從快表中讀出該頁所對應的物理塊號,並送到物理地址寄存器中。如果在快表中未找到對應的頁表項,則還需在訪問內存中的頁表,找到后把頁表項中讀出的物理塊號送地址寄存器;同時,再將此頁表項存入快表的一個寄存器單元中。從新修改快表。,如果聯想寄存器已滿,則 OS 必須找到一個老的且已被認為不再需要的頁表項,將它換出。

 

3、兩級和多級頁表

現代的大多數計算機系統,都支持非常大的邏輯地址空間(2^32~2^64)。在這樣的環境下,頁表就變得非常大,要佔用相當大的內存空間。採用的解決方法:

a)、採用離散分配方式來解決難以找到一塊連續的大內存空間的問題;

b)、只將當前需要的部分頁表項調入內存,其餘的頁表項仍然留在磁碟上,需要時在調入。

3.1、兩級頁表(Two_Level Page Table

對於要連續的內存空間來存放頁表的問題,可利用將頁表進行分頁,並離散地將各個頁面分別存放在不同的物理塊中的辦法加以解決,同樣也要為離散分配的頁表再建立一張頁表,稱為外層頁表,在每個頁表項中記錄了頁表頁面的物理塊號。

 

在外層頁表的每個頁表項中,所存放的是某頁表分頁的首地址。我們可以利用外層頁表和頁表這兩級頁表,來實現從進程的邏輯地址到內存中物理地址間的變換。為了地址變換實現上的方便起見,在地址變換機構中同樣需要增設一個外層頁表寄存器,用於存放外層頁表的始址,並利用邏輯地址中的外層頁號,作為外層頁表的索引,從中找到指定頁表分頁的始址,再利用 P2 作為指定頁表分頁的索引,找到指定的頁表項,其中即含有該頁在內存的物理塊號,用該塊號和頁內地址 即可構成訪問的內存物理地址。

 

3.2、多級頁表

多級頁表原理和二級頁表一樣,用來處理更大的頁表劃分問題。



以上內容參考湯小丹  梁紅兵等編著的《計算機操作系統》第4章 第4節

推薦閱讀文章

Bookmark the permalink ,來源:互聯網