作業系統中的page cache機制

2021-07-06 06:33:29 字數 1553 閱讀 8485

在現代計算機系統中,cpu,ram,disk的速度不相同,按速度高低排列

為:cpu>ram>disk。cpu與ram之間、ram與disk之間的速度差異常常是指數級。同時,它們之間的處理容量也不相同,其差異也是指數級。為了在速度和容量上折中,在cpu與ram之間使用cpu cache以提高訪存速度,在ram與磁碟之間,作業系統使用page cache提高系統對檔案的訪問速度。

作業系統在處理檔案時,需要考慮兩個問題:

1. 存放在磁碟上的檔案讀寫速度比記憶體差了乙個數量級。

2. 檔案載入到記憶體一次,供多個程式共享。

例如,在windows系統中,乙個程序中常常包含各種系統dll模組,其大約占用15mb空間,如果這些dll不被共享,將會占用大量的系統記憶體。

作業系統使用page cache機制解決上面的兩個問題。

以下是乙個應用程式事例,在linux下, render程序對sence.dat檔案的操作步驟如下:

當render程式從sence.dat中讀取了12kb資料之後,系統的頁面記憶體可能如下:

對於系統的所有檔案i/o請求,作業系統都是通過page cache機制實現的,對於作業系統而言,磁碟檔案都是由一系列的資料塊順序組成,資料塊的大小隨系統不同而不同,x86 linux系統下是4kb(乙個標準頁面大小)。核心在處理檔案i/o請求時,首先到page cache中查詢(page cache中的每乙個資料塊都設定了檔案以及偏移資訊),如果未命中,則啟動磁碟i/o,將磁碟檔案中的資料塊載入到page cache中的乙個空閒塊。之後再copy到使用者緩衝區中。

在使用mmap呼叫時,系統並不是馬上為其分配記憶體空間,而僅僅是新增乙個vma到該程序中,當程式訪問到目標空間時,產生缺頁中斷。在缺頁中斷中,從pagecaches中查詢要訪問的檔案塊,若未命中,則啟動磁碟i/o從磁碟中載入到pagecaches。然後將檔案塊在pagecaches中的物理頁對映到程序mmap位址空間。

當程式退出或關閉檔案時,系統是否會馬上清除page caches中的相應頁面呢?答案是否定的。由於該檔案可能被其他程序訪問,或該程序一段時間後會重新訪問,因此,在物理記憶體足夠的情況下,系統總是將其保持在page caches中,這樣可以提高系統的整體效能(提高page caches的命中率,盡量少的訪問磁碟)。只有當系統物理記憶體不足時,核心才會主動清理page caches。

當程序呼叫write修改檔案時,由於page cache的存在,修改並不是馬上更新到磁碟,而只是暫時更新到page caches中,同時mark 目標page為dirty,當核心主動釋放pagecaches時,才將更新寫入磁碟(主動呼叫sync時,也會更新到磁碟)。

作業系統 中

1.什麼是虛擬記憶體?2.作業系統是如何管理虛擬位址與實體地址之間的關係?記憶體分頁 固定大小的頁 頁號 頁內偏移量。將虛擬記憶體和物理記憶體切成乙個個固定尺寸的大小,通過乙個中間值 頁表 來對應,每乙個頁表有固定數量的 頁表項 每乙個程序對應乙個頁表,所以每乙個頁表都是 固定的 大小,linux佔...

作業系統中的PV操作

pv操作由p操作原語和v操作原語組成 原語是不可中斷的過程 對訊號量進行操作,具體定義如下 p s 將訊號量s的值減1,即s s 1 如果s 0,則該程序繼續執行 否則該程序置為等待狀態,排入等待佇列。v s 將訊號量s的值加1,即s s 1 如果s 0,則該程序繼續執行 否則釋放佇列中第乙個等待訊...

作業系統 作業系統的概念

3 作業系統的目標和功能 作業系統用做擴充機器 計算機系統自上而下可區分為 從作業系統的角度 計算機系統的概述 在計算機中的cpu 記憶體 輸入 輸出裝置等硬體,提供了基本的計算機資源 應用程式等規定了按何種方式來使用這些資源來為使用者服務 作業系統控制和協調各使用者程式對硬體的分配和呼叫。所以作業...