檔案頁和匿名頁

2022-06-15 17:42:10 字數 539 閱讀 3007

記憶體**,也就是系統釋放掉可以**的記憶體,比如快取和緩衝區,就屬於可**記憶體。它們在記憶體管理中,通常被叫做檔案頁(file-backed page)。大部分檔案頁,都可以直接**,以後有需要時,再從磁碟重新讀取就可以了。

那些被應用程式修改過,並且暫時還沒寫入磁碟的資料(也就是髒頁),就得先寫入磁碟,然後才能進行記憶體釋放。

這些髒頁,一般可以通過兩種方式寫入磁碟。可以在應用程式中,通過系統呼叫 fsync ,把髒頁同步到磁碟中;也可以交給系統,由核心執行緒 pdflush 負責這些髒頁的重新整理。

除了快取和緩衝區,通過記憶體對映獲取的檔案對映頁,也是一種常見的檔案頁。它也可以被釋放掉,下次再訪問的時候,從檔案重新讀取。

應用程式動態分配的堆記憶體,也就是在記憶體管理中說到的匿名頁(anonymous page),它們很可能還要再次被訪問啊,不能直接**,這些記憶體自然不能直接釋放。但是,如果這些內存在分配後很少被訪問,似乎也是一種資源浪費。

linux的 swap 機制把這些不常訪問的記憶體先寫到磁碟中,然後釋放這些記憶體,給其他更需要的程序使用。再次訪問這些記憶體時,重新從磁碟讀入記憶體就可以了。

程序頁表兩級結構 頁目錄和頁表頁

程序頁表的基本結構僅適合於小程序位址空間,在大位址空間下,該結構發生了變化。大虛址空間下的記憶體程序頁表結構採用頁表頁和頁目錄。32位意味著虛址空間可達4gb 虛址空間計算方法 32位的編址為232,232 210 210 210 22 4gb 1k 1024b 1m 1024k 1g 1024m ...

核心頁表和程序頁表

初學核心時,經常被 核心頁表 和 程序頁表 搞暈,不知道這到底是個啥東東,跟我們平時理解的頁表有和關係 核心頁表 程序頁表 每個程序自己的頁表,放在程序自身的頁目錄task struct.pgd中。在保護模式下,從硬體角度看,其執行的基本物件為 程序 或執行緒 而定址則依賴於 程序頁表 在程序排程而...

單頁應用和多頁應用

每一次頁面跳轉的時候,後台伺服器都會給返回乙個新的html文件,這種型別的 也就是多頁 也叫做多頁應用。為什麼多頁應用的首屏時間快?首屏時間叫做頁面首個螢幕的內容展現的時間,當我們訪問頁面的時候,伺服器返回乙個html,頁面就會展示出來,這個過程只經歷了乙個http請求,所以頁面展示的速度非常快。為...