頁表起始地址存放在頁表基址寄存器(PTBR:Page Table Base Register)中
頁表項的組成:
1.幀號
2.頁表項標志:
存在位(resident bit):對於一個頁面是否有物理頁與其對應,如果有就為1
修改位(dirty bit):判斷頁面 是否被修改過
引用位(clock/reference bit):頁面是否有過對它的引用
性能問題:
訪問一個內存單元需要兩次內存訪問(一次獲取頁表項,一次訪問數據)
頁表可能會非常大
處理方法:使用緩存(快表)
間接訪問(多級頁表)
快表:
把近期訪問的頁表項緩存到CPU中
多級頁表:
將頁表(頁表號)分成多級,每一級作為每一級頁表的偏移找到下一級頁表的起始地址。第一級頁表的起始地址寫在固定的寄存器CR3中,加上第一級頁號作為索引找到第二級頁表起始地址。再加上第二級頁表偏移得到實際頁幀號,再加上偏移offest得到實際頁幀。
反置頁表:
讓頁表與物理地址大小相對應而不是與邏輯地址空間大小相對應
頁寄存器:
讓每一個幀與頁寄存器關聯,寄存器內包括:
1.使用位(Residence bit):此幀是否被進程占用
2.占用頁號(Occupier):對應頁號
3.保護位(Protection bits):訪問方式
CPU產生的是邏輯地址,轉換時對邏輯地址做hash映射減少搜索范圍,