湯小丹等,《作業系統》
將使用者程式的位址空間分為若干個固定大小的區域,即頁面。
將整個記憶體空間也劃分為若干個固定大小的區域,這裡的大小與頁面的大小一致,稱為物理塊。
通過上述的空間劃分結構,使用者程式的任一頁面都可通過離散分配的方式裝入記憶體空間中的某一物理塊。為了記錄這一對映關係,設定了乙個專門的資料結構——頁表,如圖1所示(因為頁表按頁號順序排列,所以頁號並沒有真正儲存在物理儲存上,這裡畫出來是為了方便理解)。
頁號有20位,最多可表示2^20=1mi個頁面;
位移量10位,最多可表示的偏移量為2^10=1ki;
通過頁號和位移量可找到記憶體空間中對應的位址,具體位址變換過程將在下文詳細解釋。
為了實現從邏輯位址到實體地址的轉換,在分頁管理系統中必須設定位址變換機構,如圖3所示。
紅線是在書上原圖的基礎上新增的,我認為這樣新增更易懂一些(頁號與頁表長度比較),接下來介紹位址變換的步驟。
頁號先與頁表暫存器中的頁表長度比較,若頁號大於頁表長度,則發生越界錯誤,產生中斷訊號;若未出現越界錯誤,則將頁表始址與頁號和頁表項長度的乘積相加,即可得到所求頁表項的位址。
1.1 剛讀到「將頁表始址與頁號和頁表項長度的乘積相加」這句話的時候我也有一些迷惑。先解釋一下頁表,頁表從上而下按頁號順序排列,這就決定了頁號不需要在實際物理結構中儲存。因此,頁表實際上僅由乙個個頁表項組成。假設頁表始址為00000000,頁表項的長度為8,那麼第乙個頁表項的位址即00000000,第二個頁表項的位址即00000008,第三個頁表項的位址即00000016,依此類推。
將得到的頁表項中的塊號與頁內位址組合,形成真正的實體地址。
學會了原理後,來看看一些提高效能的方法。
因為傳統頁表占用空間大且要求連續分配,很不方便,所以用離散分配的方式來代替傳統的連續分配,但實際上並未解決頁表占用空間大的問題,若要解決該問題,需採用虛擬儲存器。
傳統的位址變換機構需要訪問兩次記憶體(第一次從頁表取出物理塊號,第二次才真正獲取到資料),所以可以通過增加乙個快表(類似於cache),訪問速度快但成本較高。增加快表後的訪問速度與快表的命中率強相關。
傳統頁表的按頁號排序,頁表項內容是物理塊號;
反置頁表按物理塊號排序,頁表項內容是頁號和其所屬程序的識別符號。
這樣做能夠解決程序過多且位址空間較大時傳統頁表所占用的空間過多(很多個頁表,每個頁表又有很多頁表項)的問題。
若頁面太大,會導致頁內碎片過多;
若頁面太小,會導致頁面數量過多;
作業系統儲存管理 連續記憶體管理
1.記憶體層次 2.作業系統採取的記憶體管理方式 3.位址空間 4.邏輯位址生成時機 編譯時 假設起始位址已知 如果起始位址未知,必須重新編譯 類似於功能機 載入時 如果編譯時起始位置位置,編譯器需生成可重定位的位址 載入時,生成絕對位址 通過修改可執行檔案的可重定位表來生成絕對位址 執行時 虛擬儲...
作業系統的儲存器管理 記憶體
儲存器是計算機系統的重要資源之一,任何程式 資料和各控制資料結構都必須占用一定的儲存空間。因此,儲存器管理直接影響系統效能。儲存器有記憶體 主存 和外存 輔存 組成,記憶體由包含相應物理單元的 順序編址的 儲存塊 組成。cpu只有在 啟動相應 io裝置之後,才能使記憶體 與外存交換資訊。在誕生作業系...
作業系統中的儲存管理
儲存管理也就是對儲存器的管理,主要指對儲存器中記憶體 dram 的管理。計算機的工作方式依靠兩個能力 儲存程式,依靠儲存器來實現。自動地執行程式,依靠cpu來實現。計算機的工作原理就是不斷的從記憶體中取出一條條的指令,放在cpu上執行。早期的儲存管理方法 單道程式儲存管理,分割槽儲存管理,頁式和段式...