任何人都可以請解釋段 描述符和門描述符之間的精確區別嗎?我正在嘗試通過英特爾 手冊,但無法弄清楚爲什麼我們需要Gate 描述符?除段描述符外,它提供了什麼設施或支持機制?當我們嘗試 訪問段描述符時,我們可以執行特權級別檢查嗎?此外,我猜Linux和Windows不使用調用門描述符。或者,在我們訪問段描述符之前,它還有多少種保護層?我想知道門描述符的精確區別和需要。段描述符與門描述符
1
A
回答
2
段描述符指定要用於尋址的段。段由預定義的指令(movsb
,scasb
,scasb
)按指令格式預定義(在實模式下使用,例如bp
尋址基於ss
)或被段覆蓋前綴覆蓋。段描述符存儲在(G|L)DT
中。
門描述符通常是IDT的問題。我們知道中斷門(用於硬件),陷阱門(這些用於處理器異常和軟件中斷)和任務門(用於硬件任務切換)。它們之間的差異非常小(中斷門在實際完成之前禁止另一箇中斷),但在IDT中它們具有不同的比特表示。
調用門是另一章。他們居住在LDT
/GDT
而不是IDT
。它們的類型位字段必須設置爲1100b
,它們沒有base
和limit
,但是應該用於代碼的另一個段選擇器以及該段中的offset
。 調用門的基本功能:是指定...
- 對象代碼段
- 的入口點可以由代碼一些最小特權可以使用任何程序(存儲在描述符表另一個段描述符的索引) (使用
offset
場)水平到堆棧之間被複制 - 可選參數的數量時發生任務切換(5個比特被保留用於此目的,所以最大值是31)在棧上的值的
- 尺寸(16/32位)
函數列表從here。
現代操作系統通常不使用調用門,而是存儲在IDT
中的陷阱門,因爲它們更快。使用int
或sysenter
調用這些「陷阱」(並使用iret/iretd
或sysexit
執行退貨)。如果您想使用呼叫門,則需要GDT
/LDT
,jump far
中的門描述符進入呼叫門,ret far
返回。請注意,sysenter
和sysexit
指令僅在內核環(0)和用戶環(3)之間傳輸控制,而調用門不具有這些限制。
相關問題
- 1. GET描述符
- 2. 套接字描述符與文件描述符
- 3. MPEG-7描述符
- 4. 描述SVN符號
- 5. Ext2:組描述符
- 6. KeyPoint描述符OpenCV
- 7. 描述Git符號
- 8. 使用Ferns描述符保存opencv描述符匹配器
- 9. 文件描述符飢餓和阻斷文件描述符
- 10. 全局描述符表和局部描述符表
- 11. 段偏移對bs段描述符
- 12. Rails:Formtastic字段與描述
- 13. Object [] []的Java字段描述符
- 14. c strcpy文件描述符
- 15. 瞭解Python描述符
- 16. MOXy XMLCompositeCollectionMapping描述符丟失
- 17. SIFT描述符的大小
- 18. Java端口描述符
- 19. 描述符轉換問題
- 20. webservice描述符文件
- 21. ORB特徵描述符
- 22. FREAK描述符參數
- 23. 關閉文件描述符
- 24. Linux描述符類型
- 25. Linux套接字描述符
- 26. 什麼是包描述符?
- 27. DX12描述符堆管理
- 28. DirectX 12 - 描述符堆
- 29. 創建文件描述符
- 30. Toplink xml描述符參考