關于位址空間
一個比較抽象的概念,我們可以把它想象成一個長數組,每個數組元素占一個位元組;而這個數組長度将由位址空間長度決定,如32位的位址空間的大小将為2^32個位元組(4GB),而64位的位址空間大小為2^64個位元組(理論上可看作是無限大)。
這也就解析了,在32的作業系統中,為什麼最大隻能支援4GB的有效記憶體。也就是,超出了4GB後的記憶體都不會在尋址範圍内,是以變成了剩餘的記憶體資源。
實體位址(Physical Address Space)
實體位址空間是實在的存在于計算機中的一個實體,在每一台計算機中保持唯一獨立性。我們可以稱它為實體記憶體;如在32位的機器上,實體空間的大小理論上可以達到2^32位元組(4GB),但如果實際裝在的記憶體不夠4GB,那麼有效的實體位址将會更少。例如,安裝了1GB的記憶體的機器上,真正有用的實體位址空間應該是0x00000000~0x3FFFFFFF,餘下部分在實際尋址中無效。
虛拟位址(Virtual Address Space)
虛拟位址并不真實存在于計算機中。每個程序都配置設定有自己的虛拟空間,而且隻能通路自己被配置設定使用的空間。理論上,虛拟空間受實體記憶體大小的限制,如給有4GB記憶體,那麼虛拟位址空間的位址範圍就應該是0x00000000~0xFFFFFFFF(4GB)。
為什麼每個程序的虛拟位址空間範圍都可以這麼大呢,這涉及到位址的映射機制;程式實際運作時,系統會先将虛拟位址映射到實體位址中的範圍。
另外一個概念:虛拟記憶體。虛拟記憶體是記憶體中的一片連續位址空間。在實體存儲位置上的意義,不一定就是指實體記憶體,可能也是在硬碟上開辟的一篇位址空間。
(xiaomo的讀書筆記,參考自"程式員的自我修養",轉載請保留原作出處,謝謝)。