【OS学习笔记】三十五 保护模式十:中断描述符表、中断门和陷阱门
生活随笔
收集整理的這篇文章主要介紹了
【OS学习笔记】三十五 保护模式十:中断描述符表、中断门和陷阱门
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
上一篇文章學習了中斷與異常的概念:【OS學習筆記】三十四 保護模式十:中斷和異常區別
本片文章接著學習以下內容:
- 中斷描述符表
- 中斷門
- 陷阱門
1 中斷描述符表
我們前面講了無數次,在實模式下,是由位于低地址的1M內存中的中斷向量表存放中斷過程的地址。但是在保護模式下,有一點不一樣,存放中斷過程地址的是中斷描述符表(IDT),且中斷描述符不一定位于低地址處。
顧名思義,在中斷描述符表(IDT)中,存放是和中斷相關的描述符,包括:中斷門,陷阱門和任務門。
任務門在這篇文章中已經學習過了:【OS學習筆記】二十六 保護模式八:任務門—任務切換
中斷門和陷阱門的描述符格式如下圖所示:
由以上圖,我們總結以下幾點內容:
- 調用門,任務門,中斷門和陷阱門的描述符都非常類似,從大的方面來說,因為都用于實施控制轉移,故都包括16位的目標代碼段選擇子,以及32位的段內偏移量
- 中斷門和陷阱門的描述符只允許存放在IDT中,任務門可以位于GDT,LDT,IDT中
- 保戶模式下的IDT可以位于任何位置。因為處理器內部有一個48位的中斷描述符表寄存器IDTR,保存著中斷描述符表在內存中的線性基地址和界限。如下圖,和GDT一樣,因為整個系統中只需要一個IDT就夠了,所以,GDTR與IDTR不像LDTR和TR,沒有也不需要選擇器部分。
- 這就意味著中斷描述符表IDT可以位于內存中的任何位置,只要IDTR指向它即可。不過為了利用高速緩存使處理器的工作效率最大化,建議IDT的基地址是8字節對齊的。
2 保護模式下的中斷處理過程示意圖
最后我們給出在保護模式下,中斷處理過程的示意圖:
- 當中斷和異常發生時,處理器用中斷向量乘以8的結果去訪問IDT,從中取得對應的中斷或者陷阱描述符。因為IDT是由IDTR指向的,所以這很容易做到。
- 找到相應的描述符后,中斷門和陷阱門中有目標代碼段的選擇子,以及段內偏移量。從而找到GDT或者LDT中的代碼段描述符
- 找到代碼段描述符后,就可以從代碼段描述符中取出對應的代碼段的基地址與段內偏移量,從而取得具體的中斷處理過程的代碼,就可以執行代碼了。
注意,以上沒有考慮分頁。
3、總結
本文主要學習中斷描述符表,中斷門和陷阱門三者之間的協調使用關系。
詳細的內容還是要參考原書籍,這里只是做一個簡單的總結。
學習探討加個人:
qq:1126137994
微信:liu1126137994
總結
以上是生活随笔為你收集整理的【OS学习笔记】三十五 保护模式十:中断描述符表、中断门和陷阱门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二维数组的指针复习
- 下一篇: EXCEL-VLOOKUP函数使用