1. 程式人生 > >《Windows核心程式設計》筆記-虛擬記憶體、記憶體

《Windows核心程式設計》筆記-虛擬記憶體、記憶體

1、 32位系統支援的最大地址空間4GB(2^32),為何是4GB而不是4Gb呢?因為最小儲存單元是Byte(這個是由系統決定,有些系統可能不一樣)。

由上可知:記憶體條容量大於4GB時,32位系統可能會浪費記憶體。記憶體條小於4GB時,32位系統支援的最大定址空間由記憶體條容量決定。

2、 虛擬記憶體是為了擴充程式大於記憶體條容量時虛擬出來的邏輯地址空間,虛擬記憶體一般存在硬碟上。

由上可知:程式佔用的記憶體一般等於虛擬記憶體+記憶體

3、 程式執行時,一般都會分配4GB(32位系統)的虛擬記憶體。若程式大約4GB,基本上在32位系統上無法執行。

4、雖然32位系統的最大定址空間是4GB,但是4GB並不是程式都能使用,只有不到2GB的地址空間分給程式用,2GB的地址空間分給核心程式使用(雖然實際使用都不到2GB)。但是可以通過配置,使得程式使用的定址空間大於2GB,但一般小於等於3GB。

5、 32位系統中的32指的是地址匯流排個數,表示地址匯流排有32根,每根可以表示0或1兩種狀態。

6、 虛擬記憶體與實體記憶體的對映是通過系統的頁表實現的,一般當查詢失效時(系統的頁面失效排程機制),會將虛擬記憶體對應的內容存入到記憶體中。

虛擬記憶體地址=頁號+偏移量