邏輯位址(logical address)intel為了相容,將遠古時代的段式記憶體管理方式保留了下來。邏輯位址指的是機器語言指令中,用來指定乙個運算元或者是一條指令的位址。以上例,我們說的聯結器為a分配的0x08111111這個位址就是邏輯位址。 ——不過不好意思,這樣說,好像又違背了intel中段式管理中,對邏輯位址要求,「乙個邏輯位址,是由乙個段識別符號加上乙個指定段內相對位址的偏移量,表示為 [段識別符號:段內偏移量],也就是說,上例中那個0x08111111,應該表示為[a的**段識別符號: 0x08111111],這樣,才完整一些」線性位址(linear address)或也叫虛擬位址(virtual address)跟邏輯位址類似,它也是乙個不真實的位址,如果邏輯位址是對應的硬體平台段式管理轉換前位址的話,那麼線性位址則對應了硬體頁式記憶體的轉換前位址。
cpu將乙個虛擬記憶體空間中的位址(邏輯位址)轉換為實體地址,需要進行兩步:首先將給定乙個邏輯位址,cpu要利用其段式記憶體管理單元,先將為個邏輯位址轉換成乙個執行緒位址,再利用其頁式記憶體管理單元,轉換為最終實體地址。 這樣做兩次轉換,的確是非常麻煩而且沒有必要的,因為直接可以把線性位址抽像給程序。之所以這樣冗餘,intel完全是為了相容而已。
上面看懂就不用看下面了。。。。。。。。。。
邏輯位址(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
邏輯位址,線性位址,實體地址
邏輯位址轉線性位址 機器語言指令中出現的記憶體位址,都是邏輯位址,需要轉換成線性位址,再經過 mmu cpu中的記憶體管理單元 轉換成實體地址才能夠被訪問到。我們寫個最簡單的 hello world 程式,用 gcc 編譯,再反彙編後會看到以下指令 mov 0x80495b0 eax 這裡的記憶體位...
線性位址和實體地址
在保護模式下32位 還是採用段機制訪問記憶體 初始化臨時的要進入到ia 32e模式的gdt資料結構 label gdt64 dq 0x0000000000000000 label desc code64 dq 0x0020980000000000 label desc data64 dq 0x000...
實體地址 虛擬位址 邏輯位址 線性位址
實際計算機的物理記憶體的位址,為32位或者64位。常見的記憶體條就是一類ram 隨機儲存儲存器,特點就是加電狀態下可任意讀寫,斷電後資訊消失 現代os都提供一技術 虛擬記憶體 virtual memory 它可以使給使用者錯覺好像自己在使用比實際物理記憶體大得多的記憶體,實際上通過對映把虛擬記憶體的...