本篇來介紹中斷,這是計算機系統(tǒng)以及嵌入式系統(tǒng)的重要概念。
1 中斷基本概念
中斷是CPU對系統(tǒng)發(fā)生的某個事件作出的一種反應(yīng)。
中斷的一些基本概念:
中斷源:引起中斷的事件稱為中斷源
中斷請求:中斷源向CPU提出處理的請求稱為中斷請求
中斷向量:中斷源的識別標志,中斷服務(wù)程序的入口地址
中斷向量表:按照中斷類型號從小到大的順序存儲對應(yīng)的中斷向量,總共存儲256個中斷向量
斷點:發(fā)生中斷時被打斷程序的暫停點稱為斷點
中斷響應(yīng):CPU暫停現(xiàn)行程序轉(zhuǎn)而為響應(yīng)中斷請求的過程稱為中斷響應(yīng)
關(guān)中斷:在保護現(xiàn)場和恢復(fù)現(xiàn)場過程中都要先關(guān)閉中斷,避免堆棧錯誤
保存現(xiàn)場:保存程序當(dāng)前斷點執(zhí)行所需的寄存器和相關(guān)數(shù)據(jù)
中斷服務(wù)程序:處理中斷源的程序稱為中斷處理程序
中斷處理:CPU執(zhí)行有關(guān)的中斷服務(wù)函數(shù)稱為中斷處理
中斷返回:返回斷點的過程稱為中斷返回
2 中斷的分類
2.1 硬/軟中斷
按中斷源的不同,可分為:
硬件中斷:由CPU外部的硬件,引入的中斷,是隨機的
軟件中斷:軟件中斷其實并不是真正的中斷,它們只是可被調(diào)用執(zhí)行的一般程序,是預(yù)先設(shè)計的
2.2 外/內(nèi)中斷
根據(jù)中斷源所在的位置,可以分:
外部中斷:一般指由計算機外設(shè)發(fā)出的中斷請求,如:鍵盤中斷、打印機中斷、定時器中斷等
內(nèi)部中斷:是指如運算出錯(除數(shù)為零、運算溢出、單步中斷等)所引起的中斷
2.3 可/非屏蔽中斷
按是否可屏蔽,可分為:
可屏蔽中斷:通過INTR(Interrupt Require)線向CPU請求的中斷,此類中斷并不會影響系統(tǒng)運行,可隨時處理,或不處理。此外,除受本身的屏蔽位控制外,還受一個總的中斷允許標志位IF(Interrupt ?Flag)的控制
非屏蔽中斷(不可屏蔽中斷):非屏蔽中斷是出現(xiàn)在NMI(Non Maskable Interrupt)線上的請求 ,不受中斷標志位IF的影響,內(nèi)部中斷是不可屏蔽的中斷
3 中斷處理具體細節(jié)
中斷的整個處理過程,由硬件和軟件共同完成,具體處理細節(jié)如下圖:
根據(jù)此圖,再來分析下各個過程:
關(guān)中斷:進入不可響應(yīng)中斷請求的中斷,由硬件自動完成
保存斷點:把當(dāng)前的程序計數(shù)器PC中的內(nèi)容保存起來,用于中斷處理結(jié)束后能繼續(xù)執(zhí)行主程序
識別中斷源:有多個中斷源同時請求時,只能響應(yīng)最高優(yōu)先級的,因此需進一步判斷中斷源
保存現(xiàn)場和屏蔽字:進入中斷服務(wù)程序后,要先保存現(xiàn)場
設(shè)置新的屏蔽字:用于改變中斷優(yōu)先級和控制中斷的產(chǎn)生
開中斷:執(zhí)行中斷程序時,打開中斷可實現(xiàn)更高優(yōu)先級的中斷響應(yīng),實現(xiàn)中斷嵌套
執(zhí)行中斷服務(wù)程序:執(zhí)行中斷服務(wù)程序中的內(nèi)容
再次關(guān)中斷:使得恢復(fù)現(xiàn)場和屏蔽字時不會被中斷打斷
恢復(fù)現(xiàn)場和屏蔽字:使現(xiàn)場和屏蔽字恢復(fù)到中斷之前的狀態(tài)
再次開中斷:中斷執(zhí)行完,現(xiàn)場恢復(fù)完后,可以打開中斷
中斷返回:返回原程序繼續(xù)執(zhí)行
處理過程,會經(jīng)歷兩次的開/關(guān)中斷,也可用下圖描述
4 總結(jié)
本編介紹了中斷基本概念,中斷的分類,以及 中斷處理的具體細節(jié)