linux api筆記(9) 保證記憶體頁不被淘汰

2021-05-22 12:02:46 字數 351 閱讀 9503

linux由於使用了虛擬記憶體技術,那麼在一般的情況每個記憶體頁都有可能被刷出物理記憶體,出於某種目的比如效能和安全性方面

考慮,有時候需要保證記憶體頁不會被淘汰,我們可以使用下面函式:

當我們需要保證從位址a開始的l個位元組永遠不被淘汰,可以執行mlock(a, l),當要解除這個限定,可以執行munlock(a, l)。

需要注意的是有時候可能會鎖不成功,因為系統限制了每個程序可以擁有的上鎖記憶體頁個數,通過ulimit -a可以檢視:

max locked memory       (kbytes, -l) 32

上面表示最大的鎖記憶體頁的數量是32,我們可以通過ulimit -l  修改,詳細請man ulimit。

9 記憶體模型

標頭檔案 標頭檔案通常包含以下內容 函式原型 使用 define 或const定義的符號常量 結構宣告 類宣告模板宣告 內聯函式 c 有三種 c 11有四種 方案儲存資料 自動儲存持續性 有兩種變數是自動儲存連續性 自動變數 暫存器變數 在函式定義中宣告的變數 包括形參 的儲存連續性為自動的。預設情...

物件記憶體布局 9

前篇 假定多層繼承的各類之間的關係如下圖。假定派生類不override基類的虛函式,即base2不override base1中宣告的虛函式vfbase1 base3不override base2中宣告的虛函式vfbase2 derived不override base3中宣告的虛函式vfbase3 ...

9 動態記憶體分配

記憶體管理 軟體執行時對計算機記憶體資源的分配和使用的技術,其最主要的目的是高效 快速的分配 並在適當的時候釋放和 資源 bss段 block started by symbol 用來存放程式中未初始化的全域性變數和靜態變數,它不包含任何資料,只是簡單地維護開始和結束的位址,即總大小,以便記憶體區能...