計算機的物理內存是字節的線型數組,每一個字節具備一個惟一地物理地址。html
地址總線32位,共2^32個不一樣的物理地址。即內存物理地址空間有4G,總共能夠尋址4G字節的物理內存。數組
爲了進行內存尋址,80X86使用了段尋址技術。尋址經過段地址+段內偏移地址。spa
段地址:16位,由端選擇符指定操作系統
段內偏移地址:32位,故一個段最大長度可達4G。htm
程序中由16位的段和32位的段偏移構成48位地址,稱爲一個邏輯地址(虛擬地址)。它惟一肯定了一個數據對象的段地址和段內偏移地址。對象
CS、DS、ES、SS、FS、GSblog
CS:代碼段,在任何指定時刻由CS尋址的段稱爲當前代碼段。此時EIP寄存器中包含當前代碼段內下一條要執行指令的段內偏移地址。所以要執行指令的地址可表示爲CS:[EIP]。內存
段間控制轉移指令能夠被用來爲CS、EIP賦新值,將執行爲之改到其餘代碼段,實現不一樣段中程序的控制傳遞。get
SS:堆棧段,棧頂由ESP寄存器指定,所以堆棧頂地址SS:[ESP]。it
另外4個段寄存器是通用段寄存器,當指令中沒有指定所操做數據的段時,DS做爲默認的數據段寄存器。
通俗講就是指令中尋找操做數地址的方式。
指令的偏移量由三部分相加組成:基地址寄存器、變址寄存器和一個偏移常量。即:
偏移地址 = 基地址 + (變址 * 比例因子)+偏移常量
8086指令尋址方式的介紹:http://www.javashuo.com/article/p-wvaxbakd-gx.html
防止一個任務訪問另外一個任務或操做系統的內存區域。地址變換能夠讓某些地址不被任何邏輯地址映射,因此地址變換過程也提供內存保護功能。
程序中的地址是由兩部分構成的邏輯地址,不能直接用於訪問物理內存。
須要將邏輯地址轉爲物理地址。
分段機制和分頁機制是兩種普遍使用的地址變換技術。
都使用駐留在內存中的表來指定變換信息,這些表只能由操做系統訪問,以防應用程序篡改。
映射過程:
第一階段:分段機制。邏輯地址→處理器可尋址內存空間(稱爲線性地址空間)中的地址
第二階段:分頁機制。線性地址→物理地址
物理地址空間:地址總線能產生的地址範圍