linux內存

目錄
1、物理內存的主要問題?
2、Linux段頁式存儲中的頁表
3、進程訪問內存基本流程
4、進程訪問虛擬地址時如何確認是否有頁?
5、缺頁異常是什么?如何處理?
6、page分頁的策略與page status
7、swaping和paging的區(qū)別與聯(lián)系
8、overcommit 和OOM killer

1、物理內存:

1)多個進程時,每個進程都給4G物理內存,分配完了只能等待;
2)進程直接訪問物理內存,可修改其他進程的數(shù)據(jù)/內核地址數(shù)據(jù);
3)內存隨機分配,容易出現(xiàn)錯誤。

2、頁表共三個部分組成:

此處討論兩級頁表:
線性地址
CR3 -- 頁目錄表(包含目錄項) -- 頁表 ( 包含頁表項)
物理地址
(頁表項)--頁面

3、內存訪問:

進程 -- 內存 -- 虛擬地址 -- 物理內存 -- 物理地址

4、根據(jù)線性地址中的偏移量決定

偏移量占低12位,第0位是存在位,P=1表示頁表項指向的該頁在內存中,如果P=0,表示該頁不在內存中。

5、缺頁異常:

頁表中對應的數(shù)據(jù)不在物理內存中。
處理:
把進程需要的數(shù)據(jù)從磁盤上緩存到物理內存中。內核調用頁面異常處理程序:
通過“頁面置換算法”,找一個目標覆蓋頁,將該頁內容寫到磁盤中,將進程所需數(shù)據(jù)緩存到物理頁上,有效位變?yōu)?。

6、page status共四種:

1)已分配內存,未mapping(minor page fault)

free中的shared buffer作為虛擬地址中的一部分,當虛擬地址沒有完全mapping到物理內存,虛擬地址不夠用的時候,會引發(fā)soft(minor) page fault,需要等一小會兒完全mapping 了才行。

2)未分配物理內存(major page fault)。

3)已分配物理內存并已經mapping。

這是正常類型的page

4)已經分配物理內存已經mapping,但被swap out了。

這種情況下是物理內存不夠用了,整個程序都被swap出去了。

進程的working set是指當前在物理內存中,屬于該進程的pages組成的集合。
shrink working set指的是進程運行過程中縮小working set
page分為free page和dirty page,swap指的是將dirty page寫到交換分區(qū)去。
OOM是指系統(tǒng)已經沒有足夠的內存給進程使用,即能free的都已經free了,能swap out的也已經swap out了,再也不能擠出物理內存的情況。

page的四種交換策略:

需要時才交換;

系統(tǒng)空閑時交換;

換出但不立即釋放;

把頁面換出推遲到不能再推遲為止。

7、swapping針對程序,paging針對頁面

swapping指的整個進程,在物理內存和磁盤間swap in/swap out
tips:swap的數(shù)據(jù)kernel還是知道,因為metadata還在內核內存中。
進程中的線程結構,堆,棧必須被swap。
paging指的物理內存不夠用時程序中的頁面移入/移出磁盤

8、overcommit和OOM killer

linux虛擬內存的分配一般是“請求多少分配多少”,然而分配后不會完全映射到物理內存上,比如請求4M內存,內存僅有1M也答應;因為通常不一定會用到4M;
但也會有真的不夠用的情況,類似銀行的“擠兌危機”。這時候就需要有相應機制來處理,這就是OOM。當物理內存不夠用,磁盤該swap out的也swap out了,這時候就會出現(xiàn)OOM(out-of-memory),于是內核調用OOM killer將一些進程kill以釋放內存。

overcommit setting文件:

/proc/sys/vm/overcommit_memory

OOM配置文件:

/proc/1/oom_score_adj

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 在linux下,使用top,free等命令查看系統(tǒng)或者進程的內存使用情況時,經??吹絙uff/cache meme...
    analanxingde閱讀 766評論 0 2
  • 在linux下我們經常會使用到top,vmstat,free等命令查看系統(tǒng)或者進程的內存使用情況,經常會看到buf...
    tracy_668閱讀 3,415評論 1 1
  • 1 內存尋址 1.1 物理地址、虛擬地址以及線性地址 物理地址: 物理內存的內存單元地址 虛擬地址: 程序員看到的...
    瘋狂小王子閱讀 3,132評論 3 21
  • >計算機系統(tǒng)中有幾類存儲設備:cache、內存、外存。cache的存取速度最高,可以和CPU匹配,因此其代價最高,...
    一生信仰閱讀 1,284評論 0 0
  • 一、目標果實 我近期的目標6月12號前累計達成3萬的收入。今年年底擁有自己的車子,價值15萬。財富收入每月不斷倍增...
    徐建君閱讀 136評論 0 0

友情鏈接更多精彩內容