linux頁表建立與更新

2021-06-07 02:30:03 字數 393 閱讀 5509

**頁表結構示意圖[zz]

圖3.3 linux的**頁表結構

linux總是假定處理器有**頁表。每個頁表通過所包含的下級頁表的頁面框號來訪問。圖3.3給出了虛擬位址是如何分割成多個域的,每個域提供了 某個指定頁表的偏移。為了將虛擬位址轉換成實體地址,處理器必須得到每個域的值。這個過程將持續三次直到對應於虛擬位址的物理頁面框號被找到。最後再使用 虛擬位址中的最後乙個域,得到了頁面中資料的位址。

為了實現跨平台執行,linux提供了一系列轉換巨集使得核心可以訪問特定程序的頁表。這樣核心無需知道 頁表入口的結構以及它們的排列方式。

這種策略相當成功,無論在具有**頁表結構的alpha axp還是兩級頁表的intel x86處理器中,linux總是使 用相同的頁表操縱**。

ARM MMU 建立頁表

二 記憶體的訪問許可權檢查 記憶體的訪問許可權檢查決定一塊記憶體是否允許讀 寫。這由cp15暫存器c3 域訪問控制 描述符的域 domain cp15暫存器c1的r s a位和描述符的ap位共同決定。域 決定是否對某塊記憶體進行許可權檢查,ap 決定如何對某塊內容進行許可權檢查。s3c2440有16...

Linux核心頁表

一 linux位址空間 arm的32位系統共支援4g的記憶體空間,其中0 3g為使用者空間,3g 4g是核心空間,arm採用2級頁表,32位位址空間address分別為 pgd pte 12bits,在核心 中分別為pgd 11位,pte 9 位,頁內位址12位 但是在mmu系統中對於arm的二級分...

linux頁表問題

1.核心頁表問題 kmalloc與kmem cache alloc之後的頁表 就比如說誰也沒有規定你不能在中斷處理裡面呼叫schedule,而且 你完全可以在沒有呼叫spin lock的情況下調spin unlock,會出問題嗎?出問題的是你自己,這個世界不會因為刀可以殺人就不用刀切菜了。啟動之後,...