1、邏輯頁面與物理頁框
- 頁(頁面):是作業邏輯地址空間(虛擬內存空間)的划分,是邏輯地址空間順序等分而成的一段邏輯空間,並依次連續編號。頁的大小一般為 512B~8kb
- 物理塊則是相對於虛擬內存對物理內存按順序等大小的划分。物理塊的大小需要與頁的大小一致
- 操作系統以物理塊為單位為各個進程分配內存空間。進程的每個頁面分別放入一個物理塊中,即進程的頁面和內存的物理塊有一一對應的關系。
- 顯然這種方式各個頁面不必連續存放,也不必按先后順序,可以放在不相鄰的各個頁框中,這樣就實現了離散的存儲模式
- 邏輯頁面
- 進程的邏輯地址空間按固定大小分為若干頁面
- 不足一頁的補齊為一頁,依序從0、1......編號
- 一般來說已知邏輯空間地址為2^m個字節(也就是說邏輯地址的長度是m位),已知頁大小是2^n字節。那么頁內地址就為n位;頁號m-n位,意味着該進程一共可以有2^(m-n)個頁面。
-
- 例子中是一個 32 位的邏輯地址,高 20 位則是頁號,低 12 位則是頁內地址。一般來說已知邏輯空間地址為2^m個字節(也就是說邏輯地址的長度是m位),已知頁大小是2^n字節。那么頁內地址就為n位;頁號m-n位,意味着該進程一共可以有2^(m-n)個頁面或者如果給的邏輯地址是十進制,邏輯地址為 A,頁面大小為 L,則頁號 P 和頁內地址 d 計算公式如下:
-
- 也就是說如果邏輯地址給的是二進制可以通過頁面大小或者頁數來划分頁號和頁內位移。而如果給的邏輯地址是十進制就可以通過上面的公式計算分割出頁號和頁內地址
- 物理頁框
- 內存空間划分成大小相等的若干存儲區
- 每個存儲區稱為頁框,從o開始連續編號
2、分頁存儲的管理表格
- 頁表
-
- 頁表是記錄邏輯空間(虛擬內存)中每一頁在內存中對應的物理塊號。但並非每一頁邏輯空間都會實際對應着一個物理塊,只有實際駐留在物理內存空間中的頁才會對應着物理塊。
- 一個進程對應一張頁表。
- 進程的每一頁對應一個頁表項。
- 每個頁表項由頁號和塊號組成。
- 頁表記錄進程頁面和實際存放的內存塊之間的對應關系。
- 每個頁表項的長度都是相同的,頁號是隱含的
- 通常頁表是需要一直駐留在物理內存中的(多級頁表除外),進程在未執行時,頁表的起址和頁表長度放在進程控制塊(PCB)中,當進程被調度時,操作系統內核會把它們放在頁表寄存器中。
- 請求表
- 管理每個進程的頁表的起始地址和長度
- 請求表整個系統一張
- 存儲頁面表
- 整個系統一張,指出內存各頁框是否已被分配出去,以及空閑頁面的總數
- 存儲頁面表構成方法:位示圖和空閑頁面鏈表
- 位示圖:在內存中划分一塊固定存儲區域,每個比特代表一個頁框。如果已被分配,則對應比特位置1,否則置0。
3、分頁存儲的地址轉換
-
- 進程訪問某個邏輯地址時,分頁地址機構自動將邏輯地址分為頁號和頁內地址。頁號大於頁表長度,越界錯誤;若不越界,則頁表項的地址 p = 頁表起始地址 F + 頁號 P * 表項大小 S,從而找到頁表項里頁號對應的物理塊號 B
- 頁和物理塊的大小是一致的,所以頁內地址=塊內地址
- 最后,如果是二進制,物理地址 = 物理塊號B + 頁內地址(+為組合的意思,不是做加法)。如果是十進制,物理地址 = 物理塊號 B * 頁大小 L + 頁內地址(+為做加法)。
- 根據物理地址讀取數據
-
- 例:某系統采用分頁式存儲管理,頁大小為 2KB。已知進程 A 的邏輯地址空間為 4 個頁,內存分配如下頁表所示,求邏輯地址 4832 對應的物理地址。(所有數據都是十進制)
-
-
- 首先頁面大小2KB=2048B,所以:頁號 P=邏輯地址/頁大小=4832/2048=2,頁內地址 F=邏輯地址%頁大小=4832%2048=736。根據頁表查得 2 號頁對應着 25 號物理塊,
物理地址 A=物理塊號*頁大小 + 頁內地址=25*2048+736=51936。
- 首先頁面大小2KB=2048B,所以:頁號 P=邏輯地址/頁大小=4832/2048=2,頁內地址 F=邏輯地址%頁大小=4832%2048=736。根據頁表查得 2 號頁對應着 25 號物理塊,
-
4、相聯存儲與塊表技術
- 相聯存儲與塊表
- 相聯存儲是在MMU中設置的專用的高速緩沖存儲器
- 快表是相聯存儲器中存放的最近訪問的部分頁表
- 地址轉換
- 地址變換機構自動將頁號與快表中的頁號比較
- 快表存在所要訪問的頁表項,直接讀出對應的頁框號
- 快表中未找到對應的頁表項,則訪問內存中的頁表;同時將此頁表項存入快表中,修改快表
- 若快表已滿,則系統需換出某些頁表項
5、物理頁框的分配流程
- 計算所需要的頁框數n
- 查位示圖,是否有n個空閑頁框
- 如果有足夠的空閑頁框,則頁表長度設為n,填入PCB中
- 申請頁表區,把頁表始址填入請求表
- 分配n個空閑頁框,將頁框號和頁號填入頁表
- 修改位示圖
6、例題
1、考慮一個由8個頁面,每頁有1024個字節組成的邏輯空間,把它裝入到有32個物理塊的存儲器中,問:(1)邏輯地址需要多少二進制位表示?(2)物理地址需要多少二進制位表示?
因為頁面數為8=2^3,故需要3位二進制數表示頁號。每頁有1024個字節,1024=2^10,於是頁內地址需要10位二進制數表示頁內地址;32個物理塊,需要5位二進制數表示塊號(32=2^5)。
(1)頁的邏輯地址由頁號和頁內地址組成,所以需要3+10=13位二進制數表示。
(2)頁的物理地址由塊號和頁內地址的拼接,所以需要5+10=15位二進制數表示。
2、若在一分頁存儲管理系統中,某作業的頁表如下所示。已知頁面大小為1024字節,試將邏輯地址1011,2148,4000,5012轉化為相應的物理地址。
(1)對於邏輯地址1011,p=int(1011/1024)=0,d=1011 mod 1024=1011。查頁表第0頁在第2塊,所以物理地址為1024′2+1011=3059。
(2)對於邏輯地址2148,p=int(2148/1024)=2,d=2148 mod 1024=100。查頁表第2頁在第1塊,所以物理地址為1024+100=1124。
(3)對於邏輯地址4000,p=int(4000/1024)=3,d=4000 mod 1024=928。查頁表第3頁在第6塊,所以物理地址為1024′6+928=7072。
(4)對於邏輯地址5012,p=int(5012/1024)=4,d=5012 mod 1024=916。因頁號超過頁表長度,該邏輯地址非法。
3、某虛擬存儲器的用戶編程空間共32個頁面,每頁為1KB,內存為16KB。假定某時刻一用戶頁表中已調入內存的頁面的頁號和物理塊號的對照表如下:
由已知條件“用戶編程空間共32個頁面”,可知頁號部分占5位;由“每頁為1KB”,1K=2^10,可知內頁地址占10位。由“內存為16KB”,可知有16塊,塊號為4位。
邏輯地址0A5C(H)所對應的二進制表示形式是:000 1010 0101 1100,根據上面的分析,10位頁內地址,則編碼“000 10”為頁號,表示該邏輯地址對應的頁號為2。查頁表,得到物理塊號是4(十進制),即物理塊地址為:01 00 ,拼接塊內地址10 0101 1100,得01 0010 0101 1100,即125C(H)。
解邏輯地址0A5C(H)所對應的物理地址是125C(H)。