虛擬記憶體技術背景下的分頁技術

2021-08-20 12:10:54 字數 1768 閱讀 2173

**

隨著軟體的膨脹,需要執行的程式往往大到記憶體無法容納,而且需要系統能夠支援多個程式同時執行,為了解決這個問題,曾經出現過交換技術和覆蓋技術,但都不是特別有吸引力的解決方案。交換技術換出效率太慢,而且程式一但程式大小超過記憶體,交換技術也無能為力;覆蓋技術需要程式設計師把程式分割成片段,這對程式設計師的要求很嚴格,很少程式設計師擅長使用覆蓋技術。

虛擬記憶體技術就是在這種情況下發展起來的,虛擬記憶體的基本思想是:每個程式都有自己的位址空間,這個空間能被作業系統分成多塊,每一塊稱作乙個頁面,分頁技術應運而生。

1、概述

程式虛擬位址空間產生的位址叫做虛擬位址。這個虛擬位址經過頁表的對映後得到程式在記憶體的真實實體地址。頁表作為虛擬位址到頁框的對映表,頁框是記憶體的一段位址,是剛好容納程式乙個頁面的位址段。當訪問頁表項的有效位(即在/不在位)為0時,即記憶體中不存在需要的頁面時,就會發生缺頁中斷,就需要進行頁面置換。

2、分頁技術下的程式執行過程

如今大多數計算機都支援虛擬記憶體技術,但是不支援虛擬記憶體的輸入位址直接被當成真實物理記憶體位址,而支援虛擬記憶體的輸入位址會經過mmu的轉換後才形成真實實體地址。

現在來討論mmu中執行機制(右半部分),先解釋tlb,tlb是分頁技術中的快取記憶體技術,快取部分頁表項,命中率高可以大大提高效率。虛擬位址一開始會被分成兩部分,高位為虛擬頁號,低位為偏移量。虛擬頁號作為關鍵字在tlb中搜尋是否有命中頁號,如果存在此頁號,則可以取出頁框號和低位偏移量形成真實實體地址;否則,發生tlb訪問失效,此時需要訪問記憶體中的頁表,如果頁表中存在該頁號,則取出頁框號;若沒有,則發生缺頁中斷,陷入核心,需要執行磁碟io,在磁碟中尋找所需頁面調入記憶體。新調入的頁面會置換頁表和tlb中的乙個頁面。

3、頁面置換演算法

當發生缺頁中斷時,就會新調入乙個頁面到記憶體,若頁表已經滿項,則需要選擇淘汰一項,為新調入頁面讓出位置。這裡介紹幾種頁面置換演算法。

2.最近未使用置換演算法

定時執行r清零執行緒,當發生缺頁中斷時,在頁表中尋找rm值最小的頁面淘汰

3.先進先出置換演算法

尋找最早進入的頁面淘汰

4.第二機會頁面置換演算法

選擇駐留時間最長,且r=0的頁面淘汰,當r=1,r清零,修改裝入時間,當作新裝入的頁面

5.時鐘頁面置換演算法

6.最近最少使用頁面置換演算法

利用程式的區域性訪問性原理

在最近時間內訪問頻率最低的頁面,選擇淘汰。

實現最近訪問記錄

1、老化演算法

2、計數器。但是,如果前面使用頻數較高的頁面,後面即使使用頻數較低,但計數器值依然高。

這些演算法我做了demo執行測試過,github:

虛擬記憶體技術的實現

虛擬記憶體技術的實現需要建立在離散分配的記憶體管理方式的基礎上。虛擬記憶體的實現有以下三種方式 1.請求分頁儲存管理 建立在分頁管理之上,為了支援虛擬儲存器功能而增加了請求調頁功能和頁面置換功能。請求分頁是目前最常用的一種實現虛擬儲存器的方法。請求分頁儲存管理系統中,在作業開始執行之前,僅裝入當前要...

作業系統 虛擬記憶體技術

本文介紹作業系統裡的虛擬記憶體技術,它是目前最常用的記憶體擴充技術。本文先介紹了虛擬記憶體的概念,再介紹如何實現虛擬記憶體,只以請求分頁管理方式為例來表示如何實現 再比較各種頁面置換演算法,用以確定將哪個頁面換出到外存 最後是作業系統如何給程序頁面分配 置換的策略 從以上幾個方面來理解虛擬記憶體技術...

虛擬記憶體 分頁機制

1.2 分頁 1.3 頁表 1.4 加速分頁過程 1.5 針對大記憶體的頁表 虛擬記憶體的基本思想 每個程式都有自己的位址空間,這個空間被分割成多個塊,每乙個塊被稱作一頁或頁面。每一頁有連續的位址範圍。這些頁被對映到物理記憶體,但並不是所有的頁都必須在記憶體中才能執行程式。當程式引用到一部分在物理記...