前面已經說了,利用計算機的區域性性原理,將記憶體細粒化,分成乙個個4kb大小的頁,然後與虛擬位址進行對映,這樣可以每次先對映需要用到的和載入經常用到的內容。
我們可以看到程序1和程序2的虛擬位址空間都被對映到了不連續的實體地址空間內(這個意義很大,如果有一天我們的連續實體地址空間不夠,但是不連續的位址空間很多,如果沒有這種技術,我們的程式就沒有辦法執行),甚至他們共用了一部分實體地址空間,這就是共享記憶體
。程序1的虛擬頁vp2和vp3被交換到了磁碟中,在程式需要這兩頁的時候,linux核心會產生乙個缺頁異常,然後異常管理程式會將其讀到記憶體中。其中,缺頁異常也是乙個很重要的機制。
這就是分頁機制的原理,當然linux中的分頁機制的實現還是比較複雜的,通過了頁全域性目錄,頁上級目錄,頁中級目錄,頁表等幾級的分頁機制來實現的,但是基本的工作原理是不會變的。
分頁機制的實現需要硬體的實現,這個硬體名字叫做mmu(memory management unit),他就是專門負責從虛擬位址到實體地址轉換的,也就是從虛擬頁找到物理頁。
oracle(三) 分頁排序
目錄 排序分頁sql 不排序只分頁sql 總結 oracle的分頁不像mysql有limit可以分頁,oracle的分頁需要用到oracle自帶的rownum偽列進行分頁。在沒有排序沒分頁的情況下 select user id,user name,rownumfrom sec users 結果如下 ...
Linux核心原始碼分析 記憶體管理(一 分頁機制)
linux系統中分為幾大模組 程序排程 記憶體管理 程序通訊 檔案系統 網路模組 各個模組之間都有一定的聯絡,就像蜘蛛網一樣,所以這也是為什麼linux核心那麼難理解,因為不知道從 開始著手去學習。很多人會跟著系統上電啟動 bios bootsect setup head main 來學習,但是最後...
4 3分頁儲存管理
1.頁面的概念 記憶體劃分成多個小單元,每個單元k大小,稱 物理 塊。作業也按k單位大小劃分成片,稱為頁面。2.頁表的概念 為了找到被離散分配到記憶體中的作業,記錄每個作業各頁對映到哪個物理塊,形成的頁面對映表,簡稱頁表。頁表的作用 頁號到物理塊號的位址對映 3.位址的處理 作業相對位址在分頁下不同...