1. 程式人生 > >門描述符(gate descriptors)總結

門描述符(gate descriptors)總結



在保護模式下,中斷描述符表(IDT)中的每個表項由8個位元組組成,其中的每個表項叫做一個門描述符(Gate Descriptor), “門”的含義是指當中斷髮生時必須先訪問這些“門”,能夠“開門”(即將要進行的處理需通過特權檢查,符合設定的許可權等約束)後,然後才能進入相應的處理程式。而門描述符則描述了“門”的屬性(如特權級、段內偏移量等)。在IDT中,可以包含如下3種類型的系統段描述符:

  • 中斷門描述符(Interrupt-gate descriptor): 用於中斷處理,其型別碼為110,中斷門包含了一個外設中斷或故障中斷的處理程式所在段的選擇子和段內偏移量。當控制權通過中斷門進入中斷處理程式時,處理器清IF標誌,即關中斷,以避免巢狀中斷的發生。中斷門中的DPL(Descriptor Privilege Level)為0,因此使用者態的程序不能訪問中斷門。所有的中斷處理程式都由中斷門啟用,並全部限制在核心態。
  • 陷阱門描述符(Trap-gate descriptor):用於系統呼叫,其型別碼為111,與中斷門類似,其唯一的區別是,控制權通過陷阱門進入處理程式時維持IF標誌位不變,也就是說,不關中斷。
  • 任務門描述符(Task-gate descriptor)和呼叫門描述符(Call-gate descriptor): 這兩種主要是Intel設定的“任務”切換的手段。

80386的中斷門描述符、陷阱門描述符的格式:

這裡寫圖片描述