進程是運行在虛擬空間,全部的內存請求返回的都是虛擬地址。實際上在我本身的理解來看,尋址的過程就是在尋找頁表。在linux中,對於32位系統,不管是開啓仍是未開啓PAE都是把前896M的頁框映射到內核空間,也就是在創建分頁階段,根據頁框號(從0號頁框開始)和權限合成了頁表,而後逐一寫進頁表項中,所以,此時創建了一一映射的關係,所以此部分線性地址變化就能夠直接訪問頁表得到物理地址。那麼剩餘的128M留作動態重映射,映射更多的地址。今天就來說講這128M內的永久內核映射部分。linux
文章開始已經說了,進程須要的是虛擬地址,而對於高端內存頁框在分頁初期並未創建映射,也就是說,並未對高端內存頁框創建頁表,因此也沒有寫進頁表項。因此此時返回線性地址沒有什麼意義,也不可能返回線性地址。所以最重要的矛盾付出水面了——就是爲高端內存頁框到線性地址創建映射。進程
在主內核頁全局目錄中有一個專門的目錄項,它指向的1024個頁表項只能被寫進永久內核映射而創建的頁表。內存