記憶體對映的原理

2021-09-09 04:19:03 字數 1402 閱讀 2711

由於所有使用者程序總的虛擬位址空間比可用的物理記憶體大很多,因此只有最常用的部分才與物理頁幀關聯。這不是問題,因為大多數程式只占用實際可用記憶體的一小部分。

在將磁碟上的資料對映到程序的虛擬位址空間的時,核心必須提供資料結構,以建立虛擬位址空間的區域和相關資料所在位置之間的關聯。例如,在對映文字檔案時,對映的虛擬記憶體區必須關聯到檔案系統的硬碟上儲存檔案內容的區域。如圖所示:

當然,給出的是簡化的圖,因為檔案資料在硬碟上的儲存通常並不是連續的,而是分布到若干小的區域。核心利用address_space資料結構,提供一組方法從後備儲存器讀取資料。例如,從檔案系統讀取。因此address_space形成了乙個輔助層,將對映的資料表示為連續的線性區域,提供給記憶體管理子系統。

按需分配和填充頁稱為按需調頁法。它基於處理器和核心之間的互動,使用的各種資料結構如圖所示:

過程如下:

首先,將給定乙個邏輯位址(其實是段內偏移量,這個一定要理解!!!),cpu要利用其段式記憶體管理單元,先將為個邏輯位址轉換成乙個執行緒位址,

其次,再利用其頁式記憶體管理單元,轉換為最終實體地址。

這樣做兩次轉換,的確是非常麻煩而且沒有必要的,因為直接可以把線性位址抽像給程序。之所以這樣冗餘,intel完全是為了相容而已。

這些操作對使用者程序是透明的。換句話說,程序不會注意到頁是實際在物理記憶體中,還是需要通過按需調頁載入。

在整個過程中可能需要解決以下幾個問題:

1)系統如何感知程序當前所需頁面不在主存(頁表機制);

2)當發現缺頁時,如何把所缺頁面調入主存(缺頁中斷機構);

3)在置換頁面時,根據什麼策略選擇欲淘汰的頁面(置換演算法)。

頁表機制

缺頁中斷機制

程式在執行時,首先檢查頁表,當狀態位指示該頁不在主存時,則引起乙個缺頁中斷發生,其中斷執行過程與一般中斷相同:

保護現場(cpu環境);

中斷處理(中斷處理程式裝入頁面);

恢復現場,返回斷點繼續執行。

置換演算法

fifo

lrulfu

記憶體對映檔案原理

首先,對映 這個詞,就和數學課上說的 一一對映 是乙個意思,就是建立一種一一對應關係,在這裡主要是只 硬碟上檔案 的位置與程序 邏輯位址空間 中一塊大小相同的區域之間的一一對應,如圖1中過程1所示。這種對應關係純屬是邏輯上的概念,物理上是不存在的,原因是程序的邏輯位址空間本身就是不存在的。在記憶體對...

記憶體對映檔案原理

目錄 一直都對記憶體對映檔案這個概念很模糊,不知道它和虛擬記憶體有什麼區別,而且對映這個詞也很讓人迷茫,今天終於搞清楚了。下面,我先解釋一下我對對映這個詞的理解,再區分一下幾個容易混淆的概念,之後,什麼是記憶體對映就很明朗了。首先,對映 這個詞,就和數學課上說的 一一對映 是乙個意思,就是建立一種一...

記憶體對映檔案原理

一直都對記憶體對映檔案這個概念很模糊,不知道它和虛擬記憶體有什麼區別,而且對映這個詞也很讓人迷茫,今天終於搞清楚了。下面,我先解釋一下我對對映這個詞的理解,再區分一下幾個容易混淆的概念,之後,什麼是記憶體對映就很明朗了。原理 首先,對映 這個詞,就和數學課上說的 一一對映 是乙個意思,就是建立一種一...