一、物理地址:就是物理內存真正的地址,至關於內存中的每一個存儲單元的門牌號,具備惟一性。CPU最終都要以物理地址去訪問內存,只有物理地址纔是內存訪問的終點站。程序員
在實模式下,{段基址+段內偏移地址}通過段部件的處理,直接輸出的就是物理地址,CPU能夠直接用此地址訪問內存。數組
二、線性地址:spa
在保護模式下:{段基址+段內偏移地址} 稱爲線性地址,不過此時段基址已經不是真正的地址,而是一個稱爲選擇子。它本質是個索引,相似於數組下標,經過這個索引便能在GDT中找到相應的段描述符,在該描述符中記錄了該段的起始、大小等信息,這樣便獲得了段基址。當沒有開啓地址分頁功能時,此線性地址就被看成物理地址來用,可直接訪問內存;若開啓了分頁功能,此線性地址就是虛擬地址(虛擬地址、線性地址在分頁機制下是一個概念)。blog
三、虛擬地址:它要通過CPU 頁部件轉換成具體的物理地址,這樣CPU才能去地址總線上訪問內存。索引
四、邏輯地址:不管在實模式仍是保護模式下,段內偏移地址都稱爲有效地址,也稱爲邏輯地址,這是程序員能夠見到的地址。內存
這是由於最終的地址是由段基址+段內便宜地址組合而成的,因爲段基址已經有默認值了,要麼在實模式下的默認段寄存器中,要麼就是在保護模式下的默認段選擇子寄存器指向的段描述符中,因此只要給出段內偏移地址就好了。class
總結:分頁
線性地址、虛擬地址都不是真實的內存地址,他們都是用來描述程序或任務的地址空間。因爲分頁功能是須要在保護模式下開啓的,32位系統保護模式下的尋址空間是4GB,因此虛擬地址或者線性地址就是0~4GB的範圍。程序
轉換過程以下:im