1. 程式人生 > >段選擇符,段描述符,80x86的頁表定址機制

段選擇符,段描述符,80x86的頁表定址機制

段選擇符指示著段的描述符,在段描述符中包含有定義段所用的全部資訊,包括:
(1)索引欄位:是由13位組成.利用索引欄位可以從擁有8192個段描述符的段描述符表中選出任何一個段描述符來。處理機用8(8是段描述符的欄位數)乘以索引值再加上描述符的基地址(來自全域性描述符暫存器,或者區域性描述符暫存器)就是索引欄位值。
(2)段描述符指示段欄位Ti:這個欄位用來說明使用的是全域性描述表GDT,還是區域性描述用符表LDT。若這一位被清成0,說明選擇的是全域性描述符GDT,若這一位被置成1,說明當前選中了局部描述符表。
(3)請求特權級欄位RPL:這個欄位由兩位(位1和位0)組成,所以可以表示0-3共4個特權級。若這個欄位所含的表示特權級的值比程式的特權級值小(即該欄位所表示的特權級比程式的高),它就會在使用這個選擇符去訪問這個程式時覆蓋掉這個程式的特權級。

80x86的頁表定址機制

在保護方式下,80386不僅採用擴充的儲存器分段管理機制,而且提供可選的儲存器分頁管理機制。這些儲存管理機制由80386儲存管理部件MMU實現。 
    1.目標
    80386有32根地址線,在保護方式下,它們都能發揮作用,所以可定址的實體地址空間高達4G位元組。在以80386及其以上處理器為CPU的PC相容機系統中,把地址在1M以下的記憶體稱為常規記憶體,把地址在1M 以上的記憶體稱為擴充套件記憶體。 
    80386 還要對實現虛擬儲存器提供支援。雖然與8086可定址的1M位元組實體地址空間相比,80386可定址的實體地址空間可謂很大,但實際的微機系統不可能安裝 如此達的實體記憶體。所以,為了執行大型程式和真正實現多工,必須採用虛擬儲存器。虛擬儲存器是一種軟硬體結合的技術,用於提供比在計算機系統中實際可以 使用的物理主儲存器大得多的儲存空間。這樣,程式設計師在編寫程式時不用考慮計算機中物理儲存器的實際容量。 
    80386還要對存放在儲存器中的程式碼及資料的共享和保護提供支援。任務甲和任務乙並存,任務甲和任務乙必須隔離,以免相互影響。但它們又可能要共享部分程式碼和資料。所以,80386既要支援任務隔離,又要支援可共享程式碼和資料的共享,還要支援特權保護。 
    2.地址空間和地址轉換
    保 護方式下的虛擬儲存器由大小可變的儲存塊構成,這樣的儲存塊稱為段。80386採用稱為描述符的資料來描述段的位置、大小和使用情況。虛擬儲存器的地址 (邏輯地址)由指示描述符的選擇子和段內偏移兩部分構成,這樣的地址集合稱為虛擬地址空間。80386支援的虛擬地址空間可達64T位元組。程式設計師編寫程式 時使用的儲存地址空間是虛擬地址空間,所以,他們可認為有足夠大的儲存空間可供使用。 
顯然,只有在物理儲存器中的程式才能執行,只有在物理 儲存器中的資料才能訪問。因此,虛擬地址空間必須對映到實體地址空間,二維的虛擬地址必須轉化成一維的實體地址。由於實體地址空間遠小於虛擬地址空間,所 以只有虛擬地址空間中的部分可以對映到實體地址空間。由於物理儲存器的大小要遠小於實體地址空間,所以只有上述部分中的部分才能真正對映到物理儲存器。 
    每一個任務有一個虛擬地址空間。為了避免多個並行任務的多個虛擬地址空間直接對映到同一個實體地址空間,採用線性地址空間隔離虛擬地址空 間和實體地址空間。線性地址空間由一維的線性地址構成,線性地址空間和實體地址空間對等。線性地址32位長,線性地址空間容量為4G位元組。 
    80386分兩步實現虛擬地址空間到實體地址空間到實體地址空間的對映,也就是分兩步實現虛擬地址到實體地址的轉換,但第二步是可選的。

    通過描述符表和描述符,分段管理機制實現虛擬地址空間到線性地址空間的對映,實現把二維的虛擬地址轉換為一維的線性地址。這一步總是存在的。 
    分 頁管理機制把線性地址空間和實體地址空間分別劃分為大小相同的塊,這樣的塊稱為頁。通過線上性地址空間的頁與實體地址空間的頁建立之間建立的對映表,分頁 管理機制實現線性地址空間到實體地址空間的對映,實現線性地址到實體地址的轉換。分頁管理機制是可選的,在不採用分頁管理機制時,線性地址空間就等同於物 理地址空間,線性地址就等於實體地址。
    分段管理機制所使用的可變大小的塊,時分段管理機制比較適宜處理複雜系統的邏輯分 段。儲存塊的大小可以根據適當的邏輯含義進行定義,而不用考慮固定大小的頁所強加的人為限制。每個段可作為獨立的單位處理,以簡化段的保護及共享。分頁機 制使用的固定大小的塊最適合於管理物理儲存器,無論是管理記憶體還是外存都同樣有效。分頁管理機制能夠有效地支援實現虛擬儲存器。 
    段 及分頁這兩種機制是兩種不同的轉換機制,是整個地址轉換函式的不同的轉換級。雖然兩種機制都利用儲存在主儲存器中的轉換表,但這些表具有獨立的結構。事實 上,段表儲存線上性地址空間,而頁表儲存在實體地址空間。因此,段轉換表可由分頁機制重新進行定位而不需段機制的參與。段轉換機制把虛擬地址轉換為線性地 址,並在線性地址中訪問段轉換機制的表格,而不會覺察分頁機制已把線性地址轉換為實體地址。類似地,分頁機制對於程式產生的地址所使用的虛擬地址空間一無 所知。分頁機制只是直接地把線性地址轉換為實體地址,並且在實體地址中訪問轉換表格,並不知道虛擬地址空間的存在,甚至不知道段轉換機制的存在。 
    3.虛擬儲存器概念
    虛 擬儲存器是一種設計技術,用於提供比在計算機系統中實際可以使用的物理主儲存器大得多的儲存空間。使用者會產生一種錯覺,好象在程式中可以使用非常大的物 理儲存空間。使用虛擬儲存器的好處是:一個程式可以很容易地在物理儲存器容量大不一樣的、配置範圍很廣的計算機上執行;程式設計人員使用虛擬儲存器可以寫出比 任何實際配置的物理儲存器都大得多的程式。虛擬儲存器由儲存管理機制及一個大容量的快速硬碟儲存器支援。在程式執行的任何時刻,只把虛擬地址空間的一小部 分對映到主儲存器,其餘部分則儲存在磁碟上。因為只有儲存在主儲存器中的部分虛擬儲存器可由處理器使用,這種虛擬儲存技術將依賴程式內部訪問儲存器的區域性 化特性,在程式執行中只需整個虛擬儲存器中的少量儲存內容在主儲存器中駐留。而當訪問儲存器的範圍發生變化時,有必要把虛擬儲存器的某些部分從磁碟調入主 儲存器,虛擬儲存器的另外的部分,也能從主儲存器傳送回磁碟上。 

80x86定址方式: link: /

http://blog.csdn.net/Non_Recursive/archive/2008/11/23/3352694.aspx