回覆列表
  • 1 # 使用者3608937403320

    邏輯地址(Logical Address) 是指由程式產生的與段相關的偏移地址部分。例如,你在進行C語言指標程式設計中,可以讀取指標變數本身值(&操作),實際上這個值就是邏輯地址,它是相對於你當前程序資料段的地址,不和絕對物理地址相干。只有在Intel真實模式下,邏輯地址才和物理地址相等(因為真實模式沒有分段或分頁機制,Cpu不進行自動地址轉換);邏輯也就是在Intel 保護模式下程式執行程式碼段限長內的偏移地址(假定程式碼段、資料段如果完全一樣)。應用程式設計師僅需與邏輯地址打交道,而分段和分頁機制對您來說是完全透明的,僅由系統程式設計人員涉及。應用程式設計師雖然自己可以直接操作記憶體,那也只能在作業系統給你分配的記憶體段操作。線性地址(Linear Address) 是邏輯地址到物理地址變換之間的中間層。程式程式碼會產生邏輯地址,或者說是段中的偏移地址,加上相應段的基地址就生成了一個線性地址。如果啟用了分頁機制,那麼線性地址可以再經變換以產生一個物理地址。若沒有啟用分頁機制,那麼線性地址直接就是物理地址。Intel 80386的線性地址空間容量為4G(2的32次方即32根地址匯流排定址)。物理地址(Physical Address) 是指出現在CPU外部地址總線上的定址物理記憶體的地址訊號,是地址變換的最終結果地址。如果啟用了分頁機制,那麼線性地址會使用頁目錄和頁表中的項變換成物理地址。如果沒有啟用分頁機制,那麼線性地址就直接成為物理地址了。虛擬記憶體(Virtual Memory) 是指計算機呈現出要比實際擁有的記憶體大得多的記憶體量。因此它允許程式設計師編制並執行比實際系統擁有的記憶體大得多的程式。這使得許多大型專案也能夠在具有有限記憶體資源的系統上實現。一個很恰當的比喻是:你不需要很長的軌道就可以讓一列火車從上海開到北京。你只需要足夠長的鐵軌(比如說3公里)就可以完成這個任務。採取的方法是把後面的鐵軌立刻鋪到火車的前面,只要你的操作足夠快並能滿足要求,列車就能象在一條完整的軌道上執行。這也就是虛擬記憶體管理需要完成的任務。在Linux 0.11核心中,給每個程式(程序)都劃分了總容量為64MB的虛擬記憶體空間。因此程式的邏輯地址範圍是0x0000000到0x4000000。有時我們也把邏輯地址稱為虛擬地址。因為與虛擬記憶體空間的概念類似,邏輯地址也是與實際物理記憶體容量無關的。 邏輯地址與物理地址的“差距”是0xC0000000,是由於虛擬地址->線性地址->物理地址對映正好差這個值。這個值是由作業系統指定的。

  • 中秋節和大豐收的關聯?
  • 你覺得聲音最好聽的笛子是什麼笛子?