Virtual-Memory
關於虛擬地址空間的核心地址空間映射 - 基於 Robert Love 的文本的問題
在Linux Kernel Development (LKD) 3rd edition,Zones 下的第 12 章中,Robert Love 說:
特別是,Linux 必須處理硬體在記憶體定址方面的兩個缺點:
- 某些硬體設備只能對某些記憶體地址執行 DMA(直接記憶體訪問)。
- 一些架構可以物理定址比虛擬定址更多的記憶體。因此,一些記憶體不會永久映射到核心地址空間。
我的問題:
- 首先是好的,他說的2是什麼意思?
- 他的意思是說:某些架構可以處理比虛擬地址更多的物理記憶體嗎?
- 這怎麼可能?我認為虛擬地址空間大於物理記憶體或至少(如果有)等於物理記憶體。
- 還有,是不是因為VAS(虛擬地址空間)大於物理記憶體,有些記憶體沒有永久映射到KAS(核心地址空間)。
但我猜只有物理記憶體被映射到 KAS 中。讓我知道他上面第 2 點的意思以及我在這裡做出的錯誤假設。
物理地址擴展 (PAE)聽起來與他所指的完全一樣。
一個 32 位 CPU 只能映射 ~4gb 的記憶體,即使系統有更多。但是使用 PAE,您可以使用 >4gb,儘管任何時候只有 4gb 被映射(單個程序永遠無法使用 >4gb)。
因此,基本上當核心更改正在執行的程序時,它會將虛擬記憶體重新映射到該程序目前正在使用的物理記憶體。