這些策略都需在程序執行前將整個程序放在記憶體
虛擬記憶體的實現並不容易,
本章通過按需分頁來討論虛擬記憶體,並研究其複雜性與開銷
動態載入能幫助減輕這一限制,
實際程式許多情況下不需將整個程式放到記憶體
每個使用者程式使用更少的物理記憶體
載入或交換每個使用者程式到記憶體內所需的i/0會更少,使用者程式會執行得更快
通常該檢視為程序從某一邏輯位址(如0)開始,連續存放,如圖9.2
根據第八章,實體地址可按頁幀組織,且分配給程序的物理頁幀也可能不連續
這就要mmu將邏輯頁對映到記憶體的物理頁幀。
包括空白的虛擬位址空間稱稀位址空間
用稀位址空間的優點:
虛擬記憶體允許在用fork建立程序期間共享頁,
如果40幀,那麼可執行8程序
上面的東西到底想說啥呢?
有可能每個程序,對於特定資料集合,會突然用其所有的10頁,從而產生共需要60幀,而只有40幀可用
6個程序,每個程序實際用5幀,一共就用了30幀,是不是還有10幀做備用啊?如果你們都突然要用10幀,那總共就要60幀了哦!
有的系統為io快取分配了一定比例的記憶體
記憶體並不僅是用來儲存程式的頁面哦!i/o快取也需要大量記憶體哦,對哦,
記憶體的過度分配:你**的記憶體的頁框都被分配了,造成沒有空閒幀了哦!
因此,這種選項並不是最佳選擇
終止你這個程序,這太不好了吧,你可以頁置換啊,也可以交換出乙個程序(這個不太好吧,你麻痺你把我的程序關閉了??)
9.6節:系統顛簸
現在可使用空閒幀來儲存程序出錯的頁。
修改頁錯誤處理程式以包括頁置換
③將所需頁讀入(新)空閒幀,改變頁表和幀表。
④重啟使用者程序
改變頁表我當然知道啦,因為你這個實體地址要被別人占用了哦。
個梵蒂岡
頁內任何位元組被寫入
如果修改位已設
如果該頁被選擇為替換頁,就必須要把該頁寫到磁碟
如果沒設
這種技術也適用於唯讀頁(例如,二進位制**的頁)。
這種方案可顯著地降低用於處理頁錯誤所需要的時間
頁置換是按需調頁的基礎哦!
對於按需調頁,邏輯位址空間的大小不再受物理記憶體限制
乙個有20頁的使用者程序
如果已修改的頁需要被置換,
這時,該頁可以再調回記憶體,有可能會置換程序的其他頁
之後,當io請求移到裝置佇列的頭部時,就針對指定位址io。
然而,這時該幀已被屬於另乙個程序的不同頁所用
也就是io裝置只能對記憶體的實體地址io,沒法對虛擬位址
虛擬記憶體應用
虛擬記憶體的重要性體現在下面幾個方面 1 虛擬記憶體可以對映到硬碟,以達到擴充套件記憶體的作用,這樣系統在物理記憶體已經用滿的情況下,就不會因為沒有記憶體可用,而導致系統崩潰。2 虛擬記憶體是以程序空間為定址空間的,一般情況,程序使用者模式下的定址空間 是2g,為了避免記憶體的碎片,可以把2g程序空...
虛擬記憶體(Virtual Memory)
虛擬記憶體 virtual memory 是windows管理所有可用記憶體的方式。對於32位windows系 統,每個程序所用到的虛擬記憶體位址從0到2 32 1,總容量4gb,其中2gb是與作業系統以 及其他所有程序所共享,另外2gb分派給程序獨佔 這就是常說的32位windows中乙個進 程最...
虛擬記憶體使用
虛擬記憶體使用一 簡介windows 提供了3 中進行記憶體管理的方法,包括 虛擬記憶體 一般用來管理大型資料結構,受到硬碟調頁檔案的支援 記憶體對映檔案 常用來管理大型資料流和多程序共享。記憶體堆 最適合用來管理大量的小物件。二 虛擬記憶體的使用 1 我們可以在程序的位址空間中保留乙個區域 pvo...