中斷描述符表 IDT

保護模式下三個重要的系統表——GDT、LDT和IDT

這裏主要是解釋中斷描述符表數組

中斷描述符表IDT將每一個異常或中斷向量分別與它們的處理過程聯繫起來。與GDT和LDT表相似,IDT也是由8字節長描述符組成的一個數組。與GDT不一樣的是,表中第一項能夠包含描述符。爲了構成IDT表中的一個索引值,處理器把異常或中斷的向量號*8。由於最多隻有256箇中斷或異常向量,因此IDT無需包含多於256個描述符。IDT中能夠含有少於256個描述符,由於只有可能發生的異常或中斷才須要描述符。不過IDT中全部空描述符項應該設置其存在位標誌爲0。spa

IDT表能夠駐留在線性地址空間的任何地方,處理器使用IDTR寄存器來定位IDT表的位置。這個寄存器中含有IDT表32位的基地址和16位的長度(限長)值。IDT表基地址應該對其在8字節邊界上以提升處理器的訪問效率。限長值是以字節爲單位的IDT表的長度。
指針

 

 

 IDTR寄存器是6個字節,   [一個簡單的多任務內核實例]裏, boot.s中, 有code

lidt idt_48     ; 加載IDTR。6字節操做數:2字節表長度,4字節線性基地址  

idt_48: .word   0               ; idt 從零開始, 限長也是0,跟沒有同樣,不用在乎
        .word   0,0         ; idt基地址 , 0開始

 

IDT 表中能夠存放三種類型的門描述符:blog

  • 中斷門描述符
  • 陷阱門描述符
  • 任務門描述符

中斷門和陷阱門含有一個長指針(即段選擇符和偏移值),處理器使用這個長指針把程序執行權轉移到代碼段中的異常或中斷的處理程序中。這兩個段的主要區別在於處理器操做EFLAGS寄存器IF標誌上。IDT中任務門描述符的格式與GDT和LDT中任務門的格式相同。索引

任務門描述符中含有一個任務TSS段的選擇符,該任務用於處理異常和/或中斷。class

中斷門、陷阱門和任務門描述符格式以下圖所示:效率

 

 

以上的圖例和描述,都是參考網上的,非原創,只是爲了方便看書和讀代碼時候查看各個描述符的結構程序

相關文章
相關標籤/搜索