作業系統之虛擬記憶體

2021-10-17 11:41:31 字數 1711 閱讀 7719

文章開頭,我們先來介紹一下幾種常見的記憶體管理機制

簡單分為連續分配管理方式和非連續分配管理方式這兩種。

塊式管理 : 遠古時代的計算機操系統的記憶體管理方式。將記憶體分為幾個固定大小的塊,每個塊中只包含乙個程序。如果程式執行需要記憶體的話,作業系統就分配給它一塊,如果程式執行只需要很小的空間的話,分配的這塊記憶體很大一部分幾乎被浪費了。這些在每個塊中未被利用的空間,我們稱之為碎片。

段式管理 : 頁式管理雖然提高了記憶體利用率,但是頁式管理其中的頁實際並無任何實際意義。 段式管理把主存分為一段段的,每一段的空間又要比一頁的空間小很多 。但是,最重要的是段是有實際意義的,每個段定義了一組邏輯資訊,例如,有主程式段 main、子程式段 x、資料段 d 及棧段 s 等。 段式管理通過段表對應邏輯位址和實體地址。

虛擬記憶體為每個程序提供了乙個一致的、私有的位址空間,它讓每個程序產生了一種自己在獨享主存的錯覺(每個程序擁有一片連續完整的記憶體空間)

而實際上,它用了多少空間,作業系統就在磁碟上劃出多少空間給它,等到進**正執行的時候,需要某些資料並且資料不在物理記憶體中,才會觸發缺頁異常,進行資料拷貝,也就是頁面置換。

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

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

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

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

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

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

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

請求段頁式儲存管理:

不管是上面哪種實現方式,我們一般都需要:

一定容量的記憶體和外存:在引導程式的時候,只需要將程式的一部分裝入記憶體,而將其他部分留在外存,然後程式就可以執行了;

缺頁中斷:如果需執行的指令或訪問的資料尚未在記憶體(稱為缺頁或缺段),則由處理器通知作業系統將相應的頁面或段調入到記憶體,然後繼續執行程式;

當發生缺頁中斷時,如果當前記憶體中並沒有空閒的頁面,作業系統就必須在記憶體選擇乙個頁面將其移出記憶體,以便為即將調入的頁面讓出空間。用來選擇淘汰哪一頁的規則叫做頁面置換演算法,我們可以把頁面置換演算法看成是淘汰頁面的規則。

作業系統 虛擬記憶體

1.虛擬記憶體術語 虛擬記憶體 程式引用記憶體使用位址與記憶體系統用於識別物理儲存站點的位址是不同的,程式生成的位址會自動轉換成機器指令。虛擬記憶體的大小收到定址機制和可用的備用記憶體量的限制,而不受記憶體儲存位置實際數量的限制。虛擬位址 在虛擬記憶體中分配給某一位置的位址使該位置可以被訪問,彷彿它...

作業系統虛擬記憶體

虛擬記憶體是計算機作業系統提供的一種記憶體管理技術,它使得應用程式認為它擁有連續可用的記憶體 乙個連續完整的位址空間 而實際上,它通常是被分隔成多個物理記憶體碎片,還有部分暫時儲存在外部磁碟儲存器上,在需要時進行資料交換。與沒有使用虛擬記憶體技術的系統相比,使用這種技術的系統使得大型程式的編寫變得更...

作業系統 虛擬記憶體

虛擬記憶體介紹 虛擬記憶體是計算機系統記憶體管理的一種技術。虛擬記憶體的重要意義是定義了乙個連續的虛擬位址空間,並且把記憶體擴充套件到硬碟空間。虛擬記憶體使得應用程式認為它擁有連續的可用記憶體,但實際上它通常被分隔成多個物理記憶體碎片,還有部分暫時儲存在外存上,在有需要時進行資料交換。虛擬記憶體技術...