1. 程式人生 > >儲存管理3-虛擬儲存技術

儲存管理3-虛擬儲存技術

覆蓋技術(程序內部)
通常與分割槽儲存一起
程式劃分為功能上相對獨立的塊,共享一塊記憶體區域,只把當前所需指令資料放入記憶體,其他的儲存在外存
缺點:手工分塊,程式設計複雜度高,時間換空間;
交換技術(程序之間)
通常與分割槽儲存一起
程序(以程序為單位)由記憶體換至外存(換出),或者換入


虛擬儲存技術

優化覆蓋技術,系統自動完成,綜合交換技術,程序的部分內容交換
利用程式區域性性原理:程式在執行過程的一個較短時間內,所執行的指令地址,與指令的運算元地址,分別侷限在一定的區域內。包含時間,空間侷限性。


虛擬頁式儲存管理(當前主流,windows與linux使用)
以頁式儲存為基礎,加入請求調頁與頁面置換,
程式調入記憶體執行時,只裝入部分頁面,執行時,發現所需不在記憶體,發出缺頁中斷請求(MMU),外存相應頁面調入記憶體。
管理:頁表,包含頁號,訪問位,修改位,保護位,駐留位,記憶體塊號;
駐留位:是否位於記憶體
保護位:頁面的訪問型別
修改位:頁面在記憶體是否修改過

訪問位:在記憶體中是否被訪問過

頁面置換演算法(不滿足保留最會被使用的頁面的需求)
1.先進先出:有時會導致Belady奇異,不滿足駐留集增大,缺頁中斷次數減少的規律。
2.最優頁面置換法:
缺頁中斷髮生時,對於程序在記憶體的頁面,計算下一次訪問還需要等待多長時間。適合用於評估,
3.最近最久未使用演算法:
選擇最近一段時間最久未被使用的頁面,置換,對上一個的近似,以過去預測未來
基於計數器實現:每個頁面設定計數器,使用時,計數器清零,其餘計數器加一,淘太時選取計數器值做大的頁面;
基於連結串列實現:最近使用的介面為首,最久未使用的頁面為尾,訪問時,相應的邏輯頁面移動到連結串列開頭,缺頁時,淘汰末尾
基於棧實現:最近訪問的置於棧頂,最久的置於棧底(和連結串列差不多)
基於時間戳實現:訪問記憶體時,頁面打上時間戳,
特點:效能好,系統開銷大。
4.時鐘頁面置換演算法:
對1的優化,考慮了頁面的訪問情況,
從進入記憶體最久遠的介面內,開始查詢訪問位為零的頁面,置換之。訪問位為0,說明在一段時間內,該頁面沒有被訪問。
效能時間的折中


缺頁中斷率
:缺頁中斷次數/作業總訪問次數
影響因素
1.分配給作業的主存塊數,要較少缺頁,工作集應在記憶體;windows動態程序物理塊分配
工作集:某段時間內,程序實際要訪問的頁面集合
2.頁面大小對虛擬管理的有不小影響,一般是4kb(windows與linux)
3.程式的編制(訪問記憶體的方式)

4.頁面排程演算法

頁表的優化
多級頁表

頁表太大,有時程式很小,虛擬地址很多用不到,故需優化
32位邏輯地址中,邏輯地址分邏輯頁面號(20位),頁內偏移(12位);
邏輯頁面分為兩部分,對應一級頁表(10位),二級頁表(10位)
每一個二級頁表,不必連續存放,
反置頁表

物理塊號對應邏輯塊號

虛擬段式儲存管理

和虛擬頁式差不多,把頁面換成段

虛擬段頁式儲存管理