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