總結 虛擬記憶體

2021-10-07 19:54:28 字數 2020 閱讀 4359

本文件為面試精華版,如果是初學者,建議從專欄學習:作業系統專欄

這個在我們平時使用電腦特別是windows 系統的時候太常見了。很多時候我們使用點開了很多佔記憶體的軟體,這些軟體占用的記憶體可能已經遠遠超出了我們電腦本身具有的物理記憶體。為什麼可以這樣呢?正是因為虛擬記憶體的存在,通過虛擬記憶體可以讓程式可以擁有超過系統物理記憶體大小的可用記憶體空間。

另外,虛擬記憶體為每個程序提供了乙個一致的、私有的位址空間,它讓每個程序產生了一種自己在獨享主存的錯覺(每個程序擁有一片連續完整的記憶體空間)。 這樣會更加有效地管理記憶體並減少出錯。

總結而言就是

區域性性原理是虛擬記憶體技術的基礎,正是因為程式運⾏具有區域性性原理,才可以只裝⼊部分程式到記憶體就開始執行。

區域性性原理表現在以下兩個方面

時間區域性性:如果程式中的某條指令⼀旦執⾏,不久以後該指令可能再次執⾏;如果某資料被訪問過,不久以後該資料可能再次被訪問。產⽣時間區域性性的典型原因,是由於在程式中存在著⼤量的迴圈操作。

空間區域性性:⼀旦程式訪問了某個儲存單元,在不久之後,其附近的儲存單元也將被訪問,即程式在⼀段時間內所訪問的位址,可能集中在⼀定的範圍之內,這是因為指令通常是順序存放、順序執⾏的,資料也⼀般是以向量、陣列、表等形式簇聚儲存的。

時間區域性性是通過將近來使⽤的指令和資料儲存到⾼速快取儲存器中,並使⽤⾼速快取的層次結構實現。空間區域性性通常是使⽤較⼤的⾼速快取,並將預取機制整合到⾼速快取控制邏輯中實現。虛擬記憶體技術實際上就是建⽴了 「記憶體⼀外存」的兩級儲存器的結構,

基於區域性性原理,在程式裝入時,可以將程式的一部分裝入記憶體,而將其他部分留在外存,就可以啟動程式執行。由於外存往往比記憶體大很多,所以我們執行的軟體的記憶體大小實際上是可以比計算機系統實際的記憶體大小大的。在程式執行過程中,當所訪問的資訊不在記憶體時,由作業系統將所需要的部分調入記憶體,然後繼續執行程式。另一方面,作業系統將記憶體中暫時不使用的內容換到外存上,從而騰出空間存放將要調入記憶體的資訊。這樣,計算機好像為使用者提供了乙個比實際記憶體大的多的儲存器一虛擬儲存器。

實際上,我覺得虛擬記憶體同樣是一種時間換空間的策略,你用cpu 的計算時間,頁的調入調出花費的時間,換來了乙個虛擬的更大的空間來支援程式的執行。

虛擬記憶體的實現需要建立在離散分配的記憶體管理方式的基礎上,虛擬記憶體的實現有以下三種方式:

請求分頁儲存管理:建立在分頁管理之上,為了支援虛擬儲存器功能而增加了請求調頁功能和頁面置換功能。請求分頁是目前最常用的一種實現虛擬儲存器的方法。請求分頁儲存管理系統中,在作業開始執行之前,僅裝入當前要執行的部分段即可執行。假如在作業執行的過程中發現要訪問的頁面不在記憶體,則由處理器通知作業系統按照對應的頁面置換演算法將相應的頁面調入到主存,同時作業系統也可以將暫時不用的頁面置換到外存中。

請求分段儲存管理:建立在分段儲存管理之.上,增加了請求調段功能、分段置換功能。請求分段儲存管理方式就如同請求分頁儲存管理方式一樣,在作業開始執行之前,僅裝入當前要執行的部分段即可執行;在執行過程中,可使用請求調入中斷動態裝入要訪問但又不在記憶體的程式段;當記憶體空間已滿,而又需要裝入新的段時,根據置換功能適當調出某個段,以便騰出空間而裝入新的段。

請求段頁式儲存管理根本區別在於,是否要求將程式所需全部的位址空間都裝入記憶體,分頁儲存是這樣要求的,所以無法提供虛擬記憶體

在程式執行過程中,如果要訪問的頁面不在記憶體中,就發生缺頁中斷從而將該頁調入記憶體中。此時如果記憶體已無空閒空間,系統必須從記憶體中調出乙個頁面到磁碟對換區中來騰出空間。

頁面置換演算法和快取淘汰策略類似,可以將記憶體看成磁碟的快取。在快取系統中,快取的大小有限,當有新的快取到達時,需要淘汰一部分已經存在的快取,這樣才有空間存放新的快取資料。

頁面置換演算法的主要目標是使頁面置換頻率最低(也可以說缺頁率最低)。

虛擬記憶體管理總結

虛擬記憶體管理總結 作業系統為每乙個程序維護著乙個虛擬的位址空間,這個位址空間的大小通常取決於系統的位址線數目,比如在32位系統中,虛擬位址空間的返回就是0 00000000 0xffffffff,大小共4g。通常作業系統會劃分出一部分來專門供核心使用,而不允許使用者程序直接訪問。linux核心占用...

虛擬記憶體應用

虛擬記憶體的重要性體現在下面幾個方面 1 虛擬記憶體可以對映到硬碟,以達到擴充套件記憶體的作用,這樣系統在物理記憶體已經用滿的情況下,就不會因為沒有記憶體可用,而導致系統崩潰。2 虛擬記憶體是以程序空間為定址空間的,一般情況,程序使用者模式下的定址空間 是2g,為了避免記憶體的碎片,可以把2g程序空...

虛擬記憶體(Virtual Memory)

虛擬記憶體 virtual memory 是windows管理所有可用記憶體的方式。對於32位windows系 統,每個程序所用到的虛擬記憶體位址從0到2 32 1,總容量4gb,其中2gb是與作業系統以 及其他所有程序所共享,另外2gb分派給程序獨佔 這就是常說的32位windows中乙個進 程最...