線性地址實體地址

  器語言指令中出現的記憶體地址,都是邏輯地址,需要轉換成線性地址,再經過MMUCPU中的記憶體管理單元轉換成實體地址才能夠被訪問到。那麼是什麼呢?今天小編整理了的相關資料,希望對大家有幫助。

  

  邏輯地址Logical Address 是指由程式產生的和段相關的偏移地址部分。例如,你在進行C語言指標程式設計中,能讀取指標變數本身值&操作,實際上這個值就是邏輯地址,他是相對於你當前程序資料段的地址,不和絕對實體地址相干。只有在Intel真實模式下,邏輯地址才和實體地址相等因為真實模式沒有分段或分頁機制,Cpu不進行自動地址轉換;邏輯也就是在Intel保護模式下程式執行程式碼段限長內的偏移地址假定程式碼段、資料段如果完全相同。應用程式員僅需和邏輯地址打交道,而分段和分頁機制對你來說是完全透明的,僅由系統程式設計人員涉及。應用程式員雖然自己能直接操作記憶體,那也只能在作業系統給你分配的記憶體段操作。

  線性地址Linear Address 是邏輯地址到實體地址變換之間的中間層。程式程式碼會產生邏輯地址,或說是段中的偏移地址,加上相應段的基地址就生成了一個線性地址。如果啟用了分頁機制,那麼線性地址能再經變換以產生一個實體地址。若沒有啟用分頁機制,那麼線性地址直接就是實體地址。Intel 80386的線性地址空間容量為4G2的32次方即32根地址匯流排定址。

  實體地址Physical Address 是指出目前CPU外部地址總線上的定址實體記憶體的地址訊號,是地址變換的最終結果地址。如果啟用了分頁機制,那麼線性地址會使用頁目錄和頁表中的項變換成實體地址。如果沒有啟用分頁機制,那麼線性地址就直接成為實體地址了。

  虛擬記憶體Virtual Memory是指計算機呈現出要比實際擁有的記憶體大得多的記憶體量。因此他允許程式員編制並執行比實際系統擁有的記憶體大得多的程式。這使得許多大型專案也能夠在具有有限記憶體資源的系統上實現。一個非常恰當的比喻是:你不必非常長的軌道就能讓一列火車從上海開到北京。你只需要足夠長的鐵軌比如說3公里就能完成這個任務。採取的方法是把後面的鐵軌即時鋪到火車的前面,只要你的操作足夠快並能滿足需求,列車就能象在一條完整的軌道上執行。這也就是虛擬記憶體管理需要完成的任務。在Linux0.11核心中,給每個程式程序都劃分了總容量為64MB的虛擬記憶體空間。因此程式的邏輯地址範圍是0x0000000到0x4000000。有時我們也把邏輯地址稱為虛擬地址。因為和虛擬記憶體空間的概念類似,邏輯地址也是和實際實體記憶體容量無關的。邏輯地址和實體地址的“差距”是0xC0000000,是由於虛擬地址->線性地址->實體地址對映正好差這個值。這個值是由作業系統指定的。機理 邏輯地址或稱為虛擬地址到線性地址是由CPU的段機制自動轉換的。如果沒有開啟分頁管理,則線性地址就是實體地址。如果開啟了分頁管理,那麼系統程式需要參和線性地址到實體地址的轉換過程。具體是通過設定頁目錄表和頁表項進行的。

  線性地址邏輯地址和實體地址的區別:

  線性地址是邏輯地址到實體地址變換之間的中間層,是處理器可定址的記憶體空間稱為線性地址空間中的地址。程式程式碼會產生邏輯地址,或者說是段中的偏移地址,加上相應段的基地址就生成了一個線性地址。

  如果啟用了分頁機制,那麼線性地址可以再經變換以產生一個實體地址。若沒有啟用分頁機制,那麼線性地址直接就是實體地址。不過,在開啟分頁功能之後,一個線性地址可能沒有相對映的實體地址,因為它所對應的記憶體可能被交換到硬碟中。32位線性地址可用於定位4GB儲存單元。

  所謂實體地址,就是指系統記憶體的真正地址。對於32 位的作業系統,它的範圍為0x00000000~0xFFFFFFFF,共有4GB。只有當CPU工作於分頁模式時,此種類型的地址才會變得非常“有趣”。本質上,一個實體地址是CPU插腳上可測量的電壓。作業系統通過設立頁表將線性地址對映為實體地址。Windows 2K/XP所用頁表佈局的某些屬性對於除錯軟體開發人員非常有用。

  分頁機制把線性地址空間和實體地址空間分別劃分為大小相同的塊。這樣的塊稱為頁。通過線上性地址空間的頁與實體地址空間的頁之間建立對映,分頁機制可以實現線性地址到實體地址的轉換。線性地址空間的頁與實體地址空間的頁之間的對映可根據需要來確定。

  線性地址空間的任何一頁,可以對映為實體地址空間中的任何一頁。

  邏輯地址Logical Address 是指由程式產生的和段相關的偏移地址部分。例如,你在進行C語言指標程式設計中,能讀取指標變數本身值&操作,實際上這個值就是邏輯地址,他是相對於你當前程序資料段的地址,不和絕對實體地址相干。只有在Intel真實模式下,邏輯地址才和實體地址相等因為真實模式沒有分段或分頁機制,Cpu不進行自動地址轉換;邏輯也就是在Intel保護模式下程式執行程式碼段限長內的偏移地址假定程式碼段、資料段如果完全相同。應用程式員僅需和邏輯地址打交道,而分段和分頁機制對你來說是完全透明的,僅由系統程式設計人員涉及。應用程式員雖然自己能直接操作記憶體,那也只能在作業系統給你分配的記憶體段操作。

  線性地址Linear Address 是邏輯地址到實體地址變換之間的中間層。程式程式碼會產生邏輯地址,或說是段中的偏移地址,加上相應段的基地址就生成了一個線性地址。如果啟用了分頁機制,那麼線性地址能再經變換以產生一個實體地址。若沒有啟用分頁機制,那麼線性地址直接就是實體地址。Intel 80x86的線性地址空間容量為4G2的32次方即32根地址匯流排定址。