天天看點

實體記憶體、虛拟記憶體、buffers、cached、共享記憶體、swap

實體記憶體:

實際使用的記憶體;

虛拟記憶體:

虛拟記憶體是作業系統核心為了對程序位址空間進行管理(process address space management)而精心設計的一個邏輯意義上的記憶體空間概念。我們程式中的指針其實都是這個虛拟記憶體空間中的位址。比如我們在寫完一段c++程式之後都需要采用g++進行編譯,這時候編譯器采用的位址其實就是虛拟記憶體空間的位址。因為這時候程式還沒有運作,何談實體記憶體空間位址?凡是程式運作過程中可能需要用到的指令或者資料都必須在虛拟記憶體空間中。既然說虛拟記憶體是一個邏輯意義上(假象的)的記憶體空間,為了能夠讓程式在實體機器上運作,那麼必須有一套機制可以讓這些假象的虛拟記憶體空間映射到實體記憶體空間(實實在在的ram記憶體條上的空間)。這其實就是作業系統中頁映射表(page table)所做的事情了。核心會為系統中每一個程序維護一份互相獨立的頁映射表。頁映射表的基本原理是将程式運作過程中需要通路的一段虛拟記憶體空間通過頁映射表映射到一段實體記憶體空間上,這樣cpu通路對應虛拟記憶體位址的時候就可以通過這種查找頁映射表的機制通路實體記憶體上的某個對應的位址。“頁(page)”是虛拟記憶體空間向實體記憶體空間映射的基本單元。

共享記憶體:

多個程序之間共享的記憶體部分,比如公共庫libc.so等

交換分區、互動記憶體:

互動分區屬于硬碟空間,做為記憶體不足時的臨時記憶體使用

swap 主要的功能是當實體記憶體不夠時,則某些在記憶體當中所占的程式會暫時被移動到 swap 當中,讓實體記憶體可以被需要的程式來使用。另外,如果你的主機支援電源管理模式, 也就是說,你的 linux 主機系統可以進入“休眠”模式的話,那麼, 運作當中的程式狀态則會被紀錄到 swap 去,以作為“喚醒”主機的狀态依據! 另外,有某些程式在運作時,本來就會利用 swap 的特性來存放一些資料段, 是以, swap 來是需要建立的!隻是不需要太大!

​​

​​buffer是緩存将要放到硬碟裡的資料

cache是緩存從硬碟讀出來的資料