Linux的虛擬內(nèi)存和物理內(nèi)存是緊密聯(lián)系的,并呈現(xiàn)出一種非常復(fù)雜的交互關(guān)系,其中虛擬內(nèi)存層是由操作系統(tǒng)實(shí)現(xiàn)的一種內(nèi)存管理機(jī)制。
虛擬內(nèi)存是一種計算機(jī)內(nèi)存管理技術(shù),它使得應(yīng)用程序認(rèn)為自己具有連續(xù)的可用內(nèi)存(一個連續(xù)完整的內(nèi)存空間),而實(shí)際上通常是被分割成多個物理內(nèi)存的塊。操作系統(tǒng)會為每個進(jìn)程分配一個虛擬地址空間,該地址空間可以映射到物理內(nèi)存的任何位置。當(dāng)進(jìn)程需要訪問虛擬地址空間中的某個地址時,操作系統(tǒng)會檢查該地址是否已經(jīng)被映射到物理內(nèi)存,如果沒有映射,則會產(chǎn)生一個缺頁中斷,操作系統(tǒng)會從磁盤中讀取相應(yīng)的頁面到物理內(nèi)存中并建立映射關(guān)系。
而物理內(nèi)存,是指計算機(jī)實(shí)際可用的內(nèi)存。它是由 RAM 和其他可直接訪問的硬件組件構(gòu)成的。物理內(nèi)存存儲正在運(yùn)行的程序和操作系統(tǒng)所需要的數(shù)據(jù)。當(dāng)硬件需要訪問內(nèi)存時,它會通過物理地址訪問 RAM。
總體來說,虛擬內(nèi)存是一種高級的內(nèi)存管理技術(shù),它可以大大增加每個程序可以消耗的內(nèi)存,因?yàn)槊總€程序都可以使用自己獨(dú)立的內(nèi)存空間。而物理內(nèi)存則是實(shí)際存在的硬件內(nèi)存,通常不會超出硬件內(nèi)存的限制。