如何理解虛擬地址空間?常說的32位系統中,為每個進程分配4g虛擬地址空間,這4g空間到底是保存在哪里?(個人理解,這4g空間和物理地址做了一個映射,那么問題來了,多個進程就需要多個這樣的4g空間,內存夠用嗎?)
答:
所謂地址空間,是地址訪問可以達到的所有地址的集合,而不是支持這個地址空間的全部硬件。就好比郵政編碼是6位,它的地址空間就是10^6個地址,從0到999999。但不表示你需要有這么多個建築區支持它。
32位進程可以發出2^32個地址,比如*ptr=0xNNNNNNN,這個被訪問的地址不一定有內存存在,只是說它可以發出這個地址而已。而這個地址對應什么物理內存,這是操作系統給的,給了就有,沒給就沒有。
一、什么是虛擬存儲器
;
物理尋址和虛擬尋址
存放在存儲器中每一個字節都有一個地址,這個地址稱為物理地址(PA, physical address)。處理器通過物理地址訪問數據的方式稱為物理尋址。處理器也可以通過虛擬地址(VA, visual address)尋址,稱為虛擬尋址。處理器生成一個虛擬地址來訪問處理器,在地址到達存儲器之前需要先轉換為物理地址。存儲器管理單元負責將虛擬地址轉換為物理地址。
