Concept 9 虛擬記憶體

2021-10-07 23:48:15 字數 1739 閱讀 3400

這些策略都需在程序執行前將整個程序放在記憶體

虛擬記憶體的實現並不容易,

本章通過按需分頁來討論虛擬記憶體,並研究其複雜性與開銷

動態載入能幫助減輕這一限制,

實際程式許多情況下不需將整個程式放到記憶體

每個使用者程式使用更少的物理記憶體

載入或交換每個使用者程式到記憶體內所需的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...