實際計算機的物理記憶體的位址,為32位或者64位。(常見的記憶體條就是一類ram——>隨機儲存儲存器,特點就是加電狀態下可任意讀寫,斷電後資訊消失)
現代os都提供一技術——虛擬記憶體(virtual memory),它可以使給使用者錯覺好像自己在使用比實際物理記憶體大得多的記憶體,實際上通過對映把虛擬記憶體的虛擬位址轉化為物理記憶體的實體地址。
多個程序可以使用相同的虛擬位址,是因為轉化的時候把各自的虛擬位址對映到了不同的實體地址。
包含在機器語言指令中用來指定乙個運算元或一條指令的位址。這種定址方式在
80x86
著名的分段結構中表現的尤為具體,它促使
ms-dos
或windows
程式設計師把程式分成若干段,程式設計師直接打交道的位址也是邏輯位址(因為程式設計師一般都是使用高階語言編寫程式,這些 程式都是執行在os上的,程式設計師一般都只管寫高階語言的**和資料,根本就不用操心這些**和資料執行在記憶體的什麼地方,是否會覆蓋,因為os和高階語言編輯器替我們作了大量的看護工作,以確保不會出錯)。每乙個邏輯位址都由乙個段(
segment
)和偏移量(
offset
或displacement
)組成,偏移量指明了從段開始的地方到實際位址的距離。
線性位址(linear address)也叫虛擬位址(virtual address)是邏輯位址到實體地址
變換之間的中間層。
線性位址是乙個32位無符號整數,可以用來表示高達4gb的位址,也就是,高達4294967296個記憶體單元。線性位址通常用十六進製制數字表示,值的範圍從0x00000000到0xfffffff)。
在分段部件中邏輯位址是段中的偏移位址,然後加上基位址就是線性位址。(需要用到全域性描述符表,先查詢全域性描述符表找到相應的基位址再+偏移位址便得到物理記憶體位址)
如果沒有啟用分頁機制,那麼線性位址直接就是實體地址
1. 當採用4kb分頁大小的時候,線性位址的高10位為頁目錄項在頁目錄表中的編號,中間十位為頁表中的頁號,其低12位則為偏移位址;
2. 如果是使用4mb分頁機制,則高10位頁號,低22位為偏移位址;
實體地址 虛擬位址 線性位址以及邏輯位址
是記憶體中的記憶體單元實際位址,是記憶體中每個記憶體單元的編號,這個編號是順序排好的,實體地址的大小決定了記憶體中有多少個記憶體單元,實體地址的大小由位址匯流排的位寬決定。虛擬位址是cpu保護模式下的乙個概念,保護模式是80286系列和之後的x86相容cpu操作模式,在cpu引導完作業系統核心後,作...
關於虛擬位址,線性位址,邏輯位址還有實體地址的區分
本文主要是參考linux0.11核心的32位位址區分,不過於現階段的64位位址區分差別不太大,理解linux0.11,有助於理解現階段的64位體系下位址的概念。注意x86體系是小端存放資料 理位址上 如果開啟分頁機制,還需要經過分頁才能對應上實體地址 虛擬地 位址所剩下的位址就是邏輯位址。應用程式設...
實體地址 線性位址 虛擬位址(1)
實體地址 線性位址 虛擬位址 os充分挖掘硬體潛能。os開發者需要知道物理記憶體的位址也需要提供一套機制為應用程式設計師提供另乙個記憶體空間,這個記憶體空間的大小可以和實際的物理記憶體大小之間沒有關係。實體地址 物理記憶體條所提供的記憶體空間,每個記憶體單元的實際位址就是實體地址。線性位址 一段連續...