在Linux中,什麼是虛擬記憶體?它是如何工作的?

黄嘉波發表於2024-03-30

虛擬記憶體是一種記憶體管理技術,它允許作業系統使用硬碟空間來模擬額外的記憶體資源

虛擬記憶體的工作原理涉及以下幾個關鍵概念:

  1. 地址空間:每個程序擁有自己的虛擬地址空間,這個空間對於程序來說是一致的和私有的。虛擬地址空間的大小通常遠大於實體記憶體的大小。
  2. 分頁機制:作業系統將實體記憶體和虛擬記憶體分割成固定大小的單元,稱為“頁”(Page)。在Linux中,一個常見的頁面大小是4KB。
  3. 頁表:為了對映虛擬地址到實體地址,作業系統維護了一個稱為頁表的資料結構。頁表中的每一個條目都包含了虛擬頁到物理頁的對映關係。
  4. 記憶體交換:當實體記憶體不足以容納所有的活躍程序時,作業系統可以將一些不活躍的程序或記憶體頁移動到硬碟上的交換空間(Swap Space),以便為其他程序騰出實體記憶體空間。這個過程稱為交換(Swapping)或換頁(Paging)。
  5. TLB(Translation Lookaside Buffer):由於頁表可能非常大,直接查詢頁表會非常慢,因此處理器通常使用一個稱為TLB的快取來儲存最近使用的頁表項,以加快地址轉換的速度。
  6. 多級頁表:在現代作業系統中,由於地址空間很大,單一的頁表也會非常大,因此通常會使用多級頁表來減少每個程序需要的頁表大小。

綜上所述,虛擬記憶體透過這些機制,實現了對記憶體的有效管理和最佳化,使得系統能夠執行更多的程序,同時提供了一定程度的保護,防止一個程序訪問另一個程序的記憶體空間。

相關文章