空描述符

如果一個任務沒有LDT,就會把LDTR清空,此時指向GDT中的第0項描述符,即為空描述符。

基本介紹

  • 中文名:空描述符
  • 外文名:empty descriptor
  • 本質:描述符
  • 類型:計算機科學
  • 學科:跨學科
  • 作用:標誌
介紹,作用,

介紹

描述符是與 “被描述物” 相關聯的一組數據或數據結構, 多是用來記錄被描述物的 “屬性”的。
1、比如,段描述符, 來說明這個段的位置 (基地址),以及段長度(段界限),段的類型,段的許可權(DPL)。
2、再比如,管理記憶體中的物理頁框,對於每個頁框, 核心會定義一個 “頁框描述符” 的結構 來 標明 這個物理 頁的 一些屬性,比如,頁是否被用於 檔案的cache ,或是否用於作buffer ,頁面屬於記憶體的哪個區(DMA,NORMAL)……等等。
3、再通俗一點,比如你在 面向對象編程中 定義一個(沒有定義方法)類:class person , 在這個類裡面,有name,age, heigth, weight,等等屬性, 這個類就可以看作一個對 person 的描述符,而具體的實例則是具體的“被描述物”。
每個程式都有自己的LDT,但是同一台計算機上的所有程式共享一個GDT。LDT描述局部於每個程式的段,包括其代碼、數據、堆疊等。GDT描述系統段,包括作業系統本身。1個段描述表記錄記錄一個段的特徵信息,中斷描述符表記錄中斷的連線埠和其對應的函式入口地址或門的入口函式地址。全局描述表GDT記錄所有表的地址.其中的項稱之為描述符。就是這裡記錄CPL、DPL的信息。
用於當一個任務使用的所有段都是系統全局段時。
GDTR(48位)用於描述GDT的基址和界限。
LDTR(16位)用於描述當前任務的LDT在GDT中的選擇子。
如果一個任務沒有LDT,就會把LDTR清空,此時指向GDT中的第0項描述符,即為空描述符。

作用

GDT和IDT是整個系統一張,而LDT可以每個任務獨占一長,用於存儲每個任務私有的段的信息,所以當任務發生切換時,LDT也要隨之切換,CPU中專門用一個16位的暫存器DTR來存儲當前任務的LDT在GDT中的描述符的選擇子,以此來定位當前任務的LDT。同時也存在這么一種情況,那就是一個任務使用的所有段都是系統全局的,它不需要用LDT來存儲私有段信息,因此,當系統切換到這種任務時,會將LDTR暫存器賦值成一個空(全局描述符)選擇子,選擇子的描述符索引值為0,TI指示位為0,RPL可以為任意值,用這種方式表明當前任務沒有LDT。這裡的空選擇子因為TI為0,所以它實際上指向了GDT的第0項描述符,第0項的作用類似於C語言中NULL的用法,它雖然是一個描述符,但卻只起到到了標誌的作用,規定GDT的第0項描述符為空描述符,其8個位元組全為0,就是這個原因。如果把前面的空描述符選擇子的TI位改為1,使之指向LDT中的0號描述符,這樣的選擇子就不是空選擇子,它指向的LDT中的0號描述符是可以正常使用的,也就是LDT中沒有空描述符。

相關詞條

熱門詞條

聯絡我們