Virtual-Memory

關於虛擬地址空間的核心地址空間映射 - 基於 Robert Love 的文本的問題

  • January 26, 2019

Linux Kernel Development (LKD) 3rd edition,Zones 下的第 12 章中,Robert Love 說:

特別是,Linux 必須處理硬體在記憶體定址方面的兩個缺點:

  1. 某些硬體設備只能對某些記憶體地址執行 DMA(直接記憶體訪問)。
  2. 一些架構可以物理定址比虛擬定址更多的記憶體。因此,一些記憶體不會永久映射到核心地址空間。

我的問題:

  1. 首先是好的,他說的2是什麼意思?
  2. 他的意思是說:某些架構可以處理比虛擬地址更多的物理記憶體嗎?
  3. 這怎麼可能?我認為虛擬地址空間大於物理記憶體或至少(如果有)等於物理記憶體。
  4. 還有,是不是因為VAS(虛擬地址空間)大於物理記憶體,有些記憶體沒有永久映射到KAS(核心地址空間)。

但我猜只有物理記憶體被映射到 KAS 中。讓我知道他上面第 2 點的意思以及我在這裡做出的錯誤假設。

物理地址擴展 (PAE)聽起來與他所指的完全一樣。

一個 32 位 CPU 只能映射 ~4gb 的記憶體,即使系統有更多。但是使用 PAE,您可以使用 >4gb,儘管任何時候只有 4gb 被映射(單個程序永遠無法使用 >4gb)。

因此,基本上當核心更改正在執行的程序時,它會將虛擬記憶體重新映射到該程序目前正在使用的物理記憶體。

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