x86异常处理与中断机制(3)中断处理过程
生活随笔
收集整理的這篇文章主要介紹了
x86异常处理与中断机制(3)中断处理过程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
上一節講完了根據中斷類型號找中斷服務程序的過程,現在著重說明一下更加完整的中斷處理過程吧。
本節以8086時代的中斷處理過程為例進行說明,主要分兩大部分
- 硬件處理
- 軟件處理
需要注意,這不是絕對的,得看實際情況,簡單來說就是,如果硬件本來就完成了相關必要動作,中斷服務程序就不用再執行了,如果沒有,就需要寫入程序中執行相關操作。
1 中斷處理過程
1.1 前提:產生&檢測 中斷
中斷處理的前提,是產生中斷,然后檢測到中斷,否則怎么處理呢?
對于中斷的產生,分為內部和外部,內部就是指令執行產生的,具體的就不說了,還有來自外部的,一般特別的外設比如電源斷電無法屏蔽,其他的外設比如鼠標鍵盤,通過中斷控制器如8259A產生外部中斷。
至于中斷的檢測,內部中斷一般是有相關的硬件能夠直接檢測到并且釋放某種信號,外部中斷則依賴于一些寄存器標志位之類的,具體看情況。
1.2 中斷處理
軟硬件的分工不是絕對的,我們需要根據實際情況進行分析,硬件干了的,軟件就不用干了,硬件沒干的軟件就得干。
硬件處理
軟件處理
中斷的處理過程都是類似的
- 產生中斷,檢測到中斷
- 保護現場
- 找到對應中斷服務程序
- 執行中斷處理程序
- 恢復現場
- 返回繼續執行
另外,中斷服務程序本身,也是一段程序,可能在其執行過程中產生中斷,也就是中斷嵌套,這取決于中斷開關,具體細節看實現,不一定。
總而言之,通過一系列的抽象,我們只能獲取中斷處理的大致過程,實際的過程與實際情況緊密關聯,情況多變,需要自己多加使用和練習。
總結
以上是生活随笔為你收集整理的x86异常处理与中断机制(3)中断处理过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lol猴子技能的加全额物理攻击1.2是指
- 下一篇: 【精华文】C语言结构体特殊情况分析:结构