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

2021-06-21 21:27:19 字數 3544 閱讀 6072

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

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

1、頁面與頁表

1.1、頁面

a)、頁面和物理塊

分頁儲存管理是將乙個程序的邏輯位址空間分成若干個大小相等的片,稱為頁面或者頁,並為各頁加以編號0、1

、2...

。相應地,把記憶體空間分成與頁面相同大小的若干個儲存塊,稱為(物理)塊或頁框,也加以編號0、

1、2...

。在為程序分配記憶體時,以塊為單位將程序中的若干個頁面分別裝入到多個可以不相鄰接的物理塊中。由於程序的最後一頁經常裝不滿一塊而形成了不可利用的碎片——「頁內碎片」。

b)、頁面大小

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

的冪,通常為

512b~8kb

。1.2、位址結構

0~11位為頁內位址,即每頁的大小為

2^12=4kb

;12~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 

作為指定頁表分頁的索引,找到指定的頁表項,其中即含有該頁在記憶體的物理塊號,用該塊號和頁內位址 

d 即可構成訪問的記憶體實體地址。

3.2、多級頁表

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

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

基本分頁儲存管理方式

1 離散分配方式 連續分配方式 分割槽儲存管理 要求把作業放在乙個連續的儲存區中,因而會形成許多 碎片 固定分割槽會產生內部碎片,動態分割槽會產生外部碎片。雖然可通過 緊湊 方法將許多碎片拼接成可用的大塊空間,但需為之付出很大開銷。如果允許將乙個程序直接分散的裝入到許多不相鄰接的分割槽中,則無需再進...

基本分頁 請求分頁儲存管理方式

基本分頁儲存管理方式具有如下特徵 1 一次性。要求將作業全部裝入記憶體後方能執行。許多作業在每次執行時,並非其全部程式和資料都要用到。如果一次性地裝入其全部程式,造成記憶體空間的浪費。2 駐留性。作業裝入記憶體後,便一直駐留在記憶體中,直至作業執行結束。儘管執行中的程序會因i o而長期等待,或有的程...

基本分頁 請求分頁儲存管理方式

基本分頁儲存管理方式具有如下特徵 1 一次性 要求將作業全部裝入記憶體後方能執行。許多作業在每次執行時,並非其全部程式和資料都要用到。如果一次性地裝入其全部程式,造成記憶體空間的浪費。2 駐留性 作業裝入記憶體後,便一直駐留在記憶體中,直至作業執行結束。儘管執行中的程序會因i o而長期等待,或有的程...