Linux

虛擬記憶體和交換空間是一樣的嗎?

  • November 29, 2019

我使用 Linux 已經有一段時間了,當我們說虛擬記憶體時,我們指的是交換空間嗎?比如說在上面的命令中我們有一個單獨的VIRT(虛擬記憶體)列,它是指linux機器的交換空間。我想知道虛擬記憶體和交換空間是否是一回事?有人可以幫我解決這個困惑嗎?

top手冊頁將它們區分如下:

對於我們的目的,記憶體分為三種類型,一種是可選的。首先是物理記憶體,這是一種有限的資源,程式碼和數據在執行或引用時必須駐留在其中。接下來是可選的交換文件,如果對物理記憶體的需求過多,可以保存修改過的(臟)記憶體並在以後檢索。最後,我們有虛擬記憶體,這是一種幾乎無限的資源,服務於以下目標:

  1. 抽象,不受物理記憶體地址/限制
  2. 隔離,每個程序在一個單獨的地址空間
  3. 共享,一個映射可以滿足多種需求
  4. 靈活性,為文件分配虛擬地址

中的VIRTtop顯示程序分配了多少地址空間。其中大部分通常是未使用的。使用它時*,*核心必須為程序提供物理記憶體。理想情況下,可以從空閒記憶體池中獲取此物理記憶體,而不會影響其他任何內容。但是,如果沒有足夠的可用物理記憶體,核心必須刪除記憶體中的一些其他數據,就是交換空間的用武之地:核心使記憶體可用的方法之一是將其內容寫入交換空間.

虛擬記憶體是一個有點抽象的概念:如 中的VIRT列所表示的top,它是程序所說的它可能使用的所有記憶體。交換空間是幫助核心在程序需要使用記憶體時使記憶體可用的一種方式。

引用自:https://unix.stackexchange.com/questions/554716