保護模式下三個重要的系統表——GDT、LDT和IDT
這里主要是解釋中斷描述符表
中斷描述符表IDT將每個例外或中斷向量分別與它們的處理程序聯系起來,與GDT和LDT表類似,IDT也是由8位元組長描述符組成的一個陣列,與GDT不同的是,表中第一項可以包含描述符,為了構成IDT表中的一個索引值,處理器把例外或中斷的向量號*8,因為最多只有256個中斷或例外向量,所以IDT無需包含多于256個描述符,IDT中可以含有少于256個描述符,因為只有可能發生的例外或中斷才需要描述符,不過IDT中所有空描述符項應該設定其存在位標志為0,
IDT表可以駐留在線性地址空間的任何地方,處理器使用IDTR暫存器來定位IDT表的位置,這個暫存器中含有IDT表32位的基地址和16位的長度(限長)值,IDT表基地址應該對其在8位元組邊界上以提高處理器的訪問效率,限長值是以位元組為單位的IDT表的長度,
IDTR暫存器是6個位元組, [一個簡單的多任務內核實體]里, boot.s中, 有
lidt idt_48 ; 加載IDTR,6位元組運算元:2位元組表長度,4位元組線性基地址 idt_48: .word 0 ; idt 從零開始, 限長也是0,跟沒有一樣,不用在意 .word 0,0 ; idt基地址 , 0開始
IDT 表中可以存放三種型別的門描述符:
- 中斷門描述符
- 陷阱門描述符
- 任務門描述符
中斷門和陷阱門含有一個長指標(即段選擇符和偏移值),處理器使用這個長指標把程式執行權轉移到代碼段中的例外或中斷的處理程式中,這兩個段的主要區別在于處理器操作EFLAGS暫存器IF標志上,IDT中任務門描述符的格式與GDT和LDT中任務門的格式相同,
任務門描述符中含有一個任務TSS段的選擇符,該任務用于處理例外和/或中斷,
中斷門、陷阱門和任務門描述符格式如下圖所示:

以上的圖例和描述,都是參考網上的,非原創,只是為了方便看書和讀代碼時候查看各個描述符的結構
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/145056.html
標籤:Linux
上一篇:Linux 特殊權限
