Linux內核學習第7天
分頁機制
*它是80X86內存管理機制的第二部分,它在分段的基礎上完成虛擬(邏輯)地址到物理地址轉換的過程
*通過設置控制寄存器CR0的PG位啟用分頁機制
(PG=0,禁用;PG=1,啟用)
固定頁面大小:4K(4GB線性地址空間劃分為2^20個頁面)
頁表結構
頁表: 用于描述分頁轉換功能的表,存放于物理地址空間
*可以看為簡單的2^20物理地址數組
每個頁表項位32位(20位存放頁面的物理基地址,12位可用于存放注入頁面是否存在等的屬性信息)
兩級頁表結構:
頁表含有2^20個表項,每項4字節
*第一級頁表稱為頁目錄(Page direction):存放在1頁4K頁面中,表項指向相應的二級表
線性地址的最高10位(位31-22)用作一級表中的索引值來選擇2^10個二級表之一
*第二級表稱為頁表(page table):長度也是一個頁面(4K),每個表項含有相關頁面的20位物理基地址
使用線性地址中間10位(21-12)作為索引值項,低12位是偏移量,兩個部分組合在一起可以得到分頁轉換過程的輸出值
*CR3寄存器指定頁目錄表的基地址
不存在的頁表:
*頁目錄中每個表項有一個存在屬性(present),指定對應的二級頁表是否存在
*存在屬性還可以用于虛擬內存中存放二級頁表
頁表項格式:
*P-位0(Present):用于指明表項對地址轉換是否有效
P=1有效,P=0無效(會產生異常,除P位外,31-1位操作系統可以用來存放儲存在硬盤上的頁面的序號)
*R/W-位1(Read/Write):如果為1,表示頁面可以讀寫或執行,如果為0,頁面只讀或可執行(對其映射的所有頁面起作用)
如果為0處理器運行在超級用戶特權級(0,1,2)
*U/S-位2(User/Supervisor):是用戶/超級用戶標志
如果為1,則運行現在任何特權級的程序都可以訪問該頁面
如果為0,則頁面只能在 超級用戶特權級(0,1,2)的程序上訪問
*A-位5(Accessed):已訪問標志
當處理器訪問頁表映射的頁面時,置為1;當處理器訪問頁目錄表項映射的任何頁面,置為1
*D-位6(Dirty):頁面已被修改標志
當處理器對一個頁面執行寫操作時,則會設置對應頁表項的D標志(處理器不會修改頁目錄項中的D標志)
*AVL:該字段保留專供程序使用,處理器不會修改這幾位
$虛擬內存:A和D標志可以用于實現虛擬存儲技術
Linux 單片機
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。