這裡看這篇文章讀懂什麼時分頁記憶體管理:
摘抄一部分:
4.1 分頁記憶體管理
將虛擬記憶體空間和物理記憶體空間皆劃分成大小相同的頁面,例如4kb、8kb和16kb等。並將頁作為記憶體空間的最小分配單位,乙個程式的乙個頁面(虛擬頁面)可以存放在任何乙個物理頁面中。
乙個程式發出的虛擬位址由虛擬頁面號和頁內偏移值兩部分組成,組成見下:
4.2 分頁記憶體管理是如何解決交換記憶體管理中的兩個問題的?
1.空間浪費:通過將記憶體空間劃分成大小一樣的頁面,並且將其作為記憶體分配的基本單位,這樣就避免了大量外部碎片的積累,讓記憶體空間得到有效利用。
2.程式受限:分頁記憶體管理下,允許乙個程序的部分虛擬頁面存放在物理壓麵(物理記憶體)中,另一部分存放在磁碟上,等到需要使用時再將其從磁碟中載入到物理記憶體中。也就是說,當程式需要額外的空間時,只需要對其分配新的頁即可,這樣做使得程式的增長效率較高。
4.3 虛擬位址->實體地址的轉化(位址翻譯)
翻譯工作則是交給mmu(記憶體管理單元),它只對虛擬位址的頁面號進行翻譯,而不處理頁內偏移值。
mmu為每乙個程式都配備了乙個頁表,裡面存放的是虛擬頁面到物理頁面的對映,如果mmu接收到了程式發出的虛擬位址,在查詢相對應的物理頁面號時,沒有找到,那麼將會通過缺頁中斷來將需要的虛擬頁面從磁碟中載入到物理記憶體的頁面中。
並且隨著虛擬頁面的進出記憶體,頁表的內容也是不斷地變化的。
4.4 頁表中的具體資訊
mmu為每乙個程式配備的頁表除了有虛擬位址到實體地址的對映(虛擬頁面號到物理頁面號),還有其他的與頁面的管理活動有關的資訊,因為mmu要依賴頁表來進行與頁面相關的管理活動。
例如,頁表如何知道需要的虛擬頁面是否在物理頁面中?那麼頁表中就有一項資訊記錄的是該虛擬頁面是否在當前的物理頁面中——在記憶體否。
再說,有一些虛擬頁面是受到保護的,對它的讀、寫和執行操作是有限制的,記錄該頁面的保護資訊的則是——保護標識區。
等等。可以參考下圖中,頁表中儲存的具體內容:
具體的對映和查詢規則是怎樣的呢?
還有一篇文章有介紹
分頁記憶體管理 虛擬位址到實體地址的轉換
引子 這是邏輯位址 虛擬位址 包括程式中列印的變數位址顯示的都是邏輯位址,並不是記憶體空間上的實體地址。每條指令在被執行時,讀取運算元時需要給出運算元所在的記憶體位址,這個位址不能是物理主存位址,因為該程式在哪種硬體設定的機器上執行並不能事前確定,那作業系統就不能在此給出對應於某台機器的實體地址。一...
分頁記憶體管理 虛擬位址到實體地址的轉換
此篇部落格內容在於著重幫助讀者明白在分頁記憶體管理下,虛擬位址和實體地址轉換計算是怎麼進行的。有關分頁記憶體管理的其他知識請事先參閱有關資料。1.對每個程式而言,就好像自己獨佔了記憶體空間從0到極限的計算機。虛擬位址都是以0開始到某個上限結束。這是因為某個程式在何種硬體裝置的機器上執行並不能事先確定...
虛擬位址和實體地址,共享記憶體
32位作業系統,定址空間為2 32次方個byte,注意儲存單位是位元組byte 即物理記憶體為4gb 記憶體分布圖 邏輯位址 段表,段偏移量 線性位址 頁表 實體地址 1.每個程序的4g記憶體空間只是虛擬記憶體空間,每次訪問記憶體空間的某個位址,都需要把位址翻譯為實際物理記憶體位址 2.所有程序共享...