實體地址、線性位址、虛擬位址
os充分挖掘硬體潛能。
os開發者需要知道物理記憶體的位址也需要提供一套機制為應用程式設計師提供另乙個記憶體空間,這個記憶體空間的大小可以和實際的物理記憶體大小之間沒有關係。
實體地址:物理記憶體條所提供的記憶體空間,每個記憶體單元的實際位址就是實體地址。
線性位址:一段連續的、不分段的範圍從0到4gb的位址空間,乙個線性位址就是線性位址空間的乙個絕對位址。
虛擬位址:應用程式設計師看到的記憶體空間,其中的位址就是虛擬位址,一般用段:偏移量的形式來描述。
mov ax,[1024];
實模式下,把某乙個暫存器左移四位然後與16位偏移量[1024]相加。相加後的結果就是實體地址而1024就是虛擬位址。
在保護模式下就不是了,保護模式下需要乙個mmu(記憶體管理單元)硬體,mmu的功能是將虛擬位址對映為實體地址。mmu是乙個硬體電路包含兩部分,分段部件和分頁部件。分段機制把乙個虛擬位址對映為線性位址,而分頁部件將線性位址對映為實體地址。
分段機制:
(1)在段暫存器中裝入段選擇符,同時把32位位址的偏移量裝入某個暫存器。
(2)根據段選擇符中的索引值,ti值rpl值,再根據相應描述符中的段位址和段界線,進行一系列合法性檢查如果該段無問題就取出相應的描述符放入段描述符高速緩衝暫存器中。
(3)將段描述符中的32位段位址和放在暫存器中32位有效位址相加就形成32位線性位址。
對段進行保護從兩個方面:
(1)如果偏移量大於段界線,虛擬位址將沒有意義,系統產生保護異常。
(2)如果要對乙個段進行訪問,系統會根據段的保護屬性檢查訪問者是否具有訪問許可權。如果沒有則產生異常。
段描述賦組成的表叫段表,其中的表項就是段描述符。段描述符就是描述段屬性的乙個8位元組的儲存單元。乙個段描述符中有32位段基地值和20位段界線等等一些其他的段的屬性。
在保護模式下,有三種型別的描述符表。全域性描述符表(gdt)/中斷描述符表(idt)/區域性描述符表(ldt)。為了加快對描述符表的訪問專門設計了專門的暫存器gdtr/ldtr/idtr以存放表的基地值及表的長度界線。
在保護模式下段暫存器中存放的是段描述符表的索引。索引表示的是段描述符在段描述符表中的位置,把段暫存器也叫選擇符。選擇符(即段暫存器)由三個域,第乙個是索引域,第二個是ti為選擇域,決定從全域性描述符表還是區域性描述符表中選擇相應的段描述符。第三個域是rpl域決定請求者的特權及,一般是使用者太和核心太兩種。
實體地址 虛擬位址 邏輯位址 線性位址
實際計算機的物理記憶體的位址,為32位或者64位。常見的記憶體條就是一類ram 隨機儲存儲存器,特點就是加電狀態下可任意讀寫,斷電後資訊消失 現代os都提供一技術 虛擬記憶體 virtual memory 它可以使給使用者錯覺好像自己在使用比實際物理記憶體大得多的記憶體,實際上通過對映把虛擬記憶體的...
實體地址 虛擬位址 線性位址以及邏輯位址
是記憶體中的記憶體單元實際位址,是記憶體中每個記憶體單元的編號,這個編號是順序排好的,實體地址的大小決定了記憶體中有多少個記憶體單元,實體地址的大小由位址匯流排的位寬決定。虛擬位址是cpu保護模式下的乙個概念,保護模式是80286系列和之後的x86相容cpu操作模式,在cpu引導完作業系統核心後,作...
關於虛擬位址,線性位址,邏輯位址還有實體地址的區分
本文主要是參考linux0.11核心的32位位址區分,不過於現階段的64位位址區分差別不太大,理解linux0.11,有助於理解現階段的64位體系下位址的概念。注意x86體系是小端存放資料 理位址上 如果開啟分頁機制,還需要經過分頁才能對應上實體地址 虛擬地 位址所剩下的位址就是邏輯位址。應用程式設...