通俗理解物理地址、邏輯地址、線性地址、虛擬地址、有效地址的區別

物理地址:物理地址就是內存單元的絕對地址,比如你有一個4G的內存條插在電腦上,物理地址0x0000就表示內存條的第一個存儲單元,0x0010就表示內存條的第17個存儲單元,不管CPU內部怎麼處理地址,最終訪問的都是物理地址。在CPU實模式下“段基址+段內偏移地址”就是物理地址,CPU可以使用此地址直接訪問內存。

線性地址、虛擬地址:CPU在保護模式下,“段基址+段內偏移地址”叫做線性地址,注意,保護模式下段基址寄存器中存儲的不是真正的段基值(和實模式的含義不一樣),而是被稱爲“段選擇子”的東西,通過段選擇子在GDT(全局描述表)中找到真正的段基值。另外,如果CPU在保護模式下沒有開啓分頁功能,則線性地址就被當做最終的物理地址來用,若開啓了分頁功能,則線性地址就叫虛擬地址(在沒開啓分頁功能的情況下線性地址和虛擬地址就是一回事)。但是,如果開啓分頁功能,虛擬地址(或線性地址)還要通過頁部件電路轉換成最終的物理地址。

邏輯地址、有效地址:無論CPU在什麼模式下,段內偏移地址又稱爲有效地址或者邏輯地址(只是叫法不一樣罷了),例如實模式下 “mov ax, [0x7c00]”,0x7c00就是邏輯地址(或有效地址),但這條指令最終操作的物理地址是DS*16+0x7c00


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章