門描述符
門,顧名思義,是通往某處的入口。在計算機中,用門來表示一段程式的入口。拿它和段描述符對比
一下就容易理解了,段描述符中描述的是一片記憶體區域,而門描述符中描述的是一段程式碼。
門描述符中的各屬性位與段描述符中的屬性意義相同,大夥可以參考全域性描述符表部分的介紹。下面
簡要說下這幾種門描述符,這裡我們們只討論 32 位保護模式。
任務門
任務門和任務狀態段TSS是 Intel 處理器在硬體一級提供的任務切換機制,所以任務門需要和 TSS 配合在一起使用,在任務門中記錄的是 TSS 選擇子,偏移量未使用。任務門可以存在於全域性描述符表 GDT、區域性描述符表 LDT、中斷描述符表 IDT 中。描述符中任務門的 type 值為二進位制 0101 ,順便說一句大多數作業系統包括 Linux 都未用 TSS 實現任務切換,我們們這裡也不討論啦。
中斷門
中斷門包含了中斷處理程式所在段的段選擇子和段內偏移地址. 當通過此方式進入中斷後, 標誌暫存器eflags 中的IF位自動置0, 也就是在進入中斷後, 自動把中斷關閉,避免中斷巢狀. Linux 就是利用中斷門實現的系統呼叫, 就是那個著名的 int 0x80 . 中斷門只允許存在於 IDT 中。描述符中中斷門的 type為二進位制 1110 .
陷阱門
陷阱門和中斷門非常相似,區別是由陷阱門進入中斷後,標誌暫存器 eflags 中的 位不會自動置0. 陷阱門只允許存在於 IDT 中。描述符中陸阱門的 type 值為二進位制 1111 .
呼叫門
呼叫門是提供給使用者程式進入特權級的方式,其 DPL = 3 。呼叫門中記錄例程的地址,它不能用int 指令呼叫,只能用 call jmp 指令。呼叫門可以安裝在 GDT LDT 中。描述符中呼叫門的 type 值為二進位制 1100 。
除呼叫門外,另外的任務門、中斷門、陷阱門都可以存在於中斷描述符表中
現代作業系統為了簡化開發、提升效能和移植性等原因,很少用到呼叫門和任務門
注: 本節摘自作業系統真象還原7.4節
相關文章
- 檔案描述符
- python中的描述符Python
- Linux檔案描述符Linux
- 讀懂屬性描述符
- Python 描述符(Descriptor) 附例項Python
- linux中的檔案描述符Linux
- 譯:深入淺出Python 描述符Python
- 論python描述符的意義Python
- windows 檔案描述符 _open_osfhandleWindows
- 【USB筆記】配置描述符Configuration Descriptor筆記
- 檔案描述符和檔案系統
- HiveServer2 檔案描述符洩漏HiveServer
- python的描述符(器)是如何工作的?Python
- 0179-載入全域性描述符表
- python 關於描述符/property偽裝/協程Python
- 作業系統中的描述符和GDT作業系統
- 課時46:魔法方法:描述符(property的原理)
- 描述符:例項屬性遮蓋方法的原因
- 【案例講解】Python為什麼要使用描述符?Python
- nginx的檔案描述符的學習之二Nginx
- 檔案包含之包含了Linux檔案描述符Linux
- 一文幫你搞懂 Android 檔案描述符Android
- Bottle 中的裝飾器類和描述符應用
- python教程:屬性查詢順序,資料描述符Python
- RDKit | BCUT:基於分子圖結構的二維描述符
- USB協議詳解第11講(USB描述符-總結)協議
- Linux--檔案描述符、檔案指標、索引節點Linux指標索引
- linux一切皆檔案之Unix domain socket描述符(二)LinuxAI
- RPC伺服器之【多程式描述符傳遞】高階模型RPC伺服器模型
- RPC 伺服器之【多程式描述符傳遞】高階模型RPC伺服器模型
- 【程式設計師腦洞故事】宇宙盡頭的描述符(上)程式設計師
- Linux下利用檔案描述符恢復的成功失敗實驗Linux
- 淺談對屬性描述符__get__、__set__、__delete__的理解delete
- 如何在 Linux 伺服器上設定 ulimit 和檔案描述符數限制Linux伺服器MIT
- (五)透過Python的select監控多個描述符實現併發連線Python
- Windows原理深入學習系列-訪問控制列表-關於安全描述符的補充Windows
- 密集物件網路:通過機器人操作學習密集的視覺物件描述符物件機器人視覺
- 密集物件網路:透過機器人操作學習密集的視覺物件描述符物件機器人視覺