頁表檢視原始碼討論檢視歷史
頁表是一種特殊的數據結構,放在系統空間的頁表區,存放邏輯頁與物理頁幀的對應關係。 每一個進程都擁有一個自己的頁表,PCB表中有指針指向頁表。 [1]
- 中文名:頁表
- 存儲方式:基本分頁存儲管理方式
- 所屬領域:操作系統
簡介
分頁系統中,允許將進程的每一頁離散地存儲在內存的任一物理塊中,為了能在內存中找到每個頁面對應的物理塊,系統為每個進程建立一張頁面映射表,簡稱頁表。頁表的作用是實現從頁號到物理塊號的地址映射。
頁表長度就是頁表項的個數。頁表長度=虛存容量/頁面大小。
比如虛存容量為1GB,則虛擬地址是30位,2^30,如頁面大小為4KB(z^12),則頁表長度是 2^30/2^12=2^18=256K
地址結構
邏輯地址:CPU所生成的地址。CPU產生的邏輯地址被分為 :p (頁號) 它包含每個頁在物理內存中的基址,用來作為頁表的索引;d (頁偏移),同基址相結合,用來確定送入內存設備的物理內存地址。
物理地址:內存單元所看到的地址。邏輯地址空間為2^m,且頁大小為2^n,那麼邏輯地址的高m-n位表示頁號,低n位表示頁偏移。
邏輯地址空間:由程序所生成的所有邏輯地址的集合。
物理地址空間:與邏輯地址相對應的內存中所有物理地址的集合,用戶程序看不見真正的物理地址。
註:用戶只生成邏輯地址,且認為進程的地址空間為0到max。物理地址範圍從R+0到R+max,R為基地址,地址映射-將程序地址空間中使用的邏輯地址變換成內存中的物理地址的過程。由內存管理單元(MMU)來完成。
分頁邏輯地址 =P(頁號).d(頁內位移)
分頁物理地址=f(頁幀號).d(同上)
P = 線性邏輯地址/頁面大小
d= 線性邏輯地址-P*頁面大小
作用
實現從頁號到物理塊號的地址映射。
邏輯地址轉換成物理地址的過程是:用頁號p去檢索頁表,從頁表中得到該頁的物理塊號,把它裝入物理地址寄存器中。同時,將頁內地址d直接送入物理地址寄存器的塊內地址字段中。這樣,物理地址寄存器中的內容就是由二者拼接成的實際訪問內存的地址,從而完成了從邏輯地址到物理地址的轉換。
基本分頁存儲管理方式
用固定大小的頁(Page)來描述邏輯地址空間,用相同大小的頁框(Frame)來描述物理內存空間,由操作系統實現從邏輯頁到物理頁框的頁面映射,同時負責對所有頁的管理和進程運行的控制。
分級頁表
一個32位邏輯地址空間的計算機系統,頁大小為4KB,那麼頁表有一百萬條目。假設每個條目占4B,則需要4MB物理地址空間來存儲頁表本身。利用多級頁表,可以減少頁表所占用的空間。
一個邏輯地址(32位系統,頁大小 4K) 可以被分為 :一個20位的頁號 +一個12位的偏移。如果對頁表進行再分頁,那麼頁號分解為:一個10位的頁號 +一個10位的偏移。因此,一個邏輯地址表示如下 :p1 是用來訪問外部頁表的索引, p2 是外部頁表的頁偏移。
此時,兩級32位分頁結構的地址轉換機制如下:
具有TLB(轉換後備緩衝器)的頁表結構
轉換後備緩衝器TLB(translation lookaside buffer)是小、專用、快速的硬件緩衝,只包括頁表中的一小部分條目。如果頁號在TLB中,得到幀號,訪問內存;否則從內存中的頁表中得到幀號,將其存入TLB,訪問內存。
視頻
頁表及頁表項的設計