計算機(jī)操作系統(tǒng)內(nèi)核的中斷和中斷處理
在計算機(jī)中,中斷是處理器與異步事件進(jìn)行信息交換(通信)的唯一手段。
所謂異步事件,就是與當(dāng)前正在做的事情在邏輯上無關(guān)的事件。例如,正當(dāng)老師上課的過程中突然發(fā)生了地震,那么地震這個事件就是一個異步事件。因為地震這個事件與上課這個事件沒有邏輯關(guān)系,也不是老師意料中的事件。當(dāng)然,作為一個完善的教學(xué)管理系統(tǒng),對這種突發(fā)事件的應(yīng)對應(yīng)該有緊急預(yù)案。
計算機(jī)技術(shù)中,由于某種異步事件的發(fā)生而迫使程序執(zhí)行流程發(fā)生轉(zhuǎn)移的現(xiàn)象叫做中斷。
產(chǎn)生異步事件的原因叫做中斷源。凡是中斷源在發(fā)生異步事件時,都會向處理器發(fā)出一個通知信號,由于這個信號具有請?zhí)幚砥髦兄巩?dāng)前工作的含義,因此該信號叫做中斷請求信號。處理器對這個中斷請求信號可以響應(yīng),也可以不響應(yīng)。如果響應(yīng)了該信號,則處理器的執(zhí)行流程將會在保護(hù)了當(dāng)前程序斷點之后發(fā)生轉(zhuǎn)移,即會跳轉(zhuǎn)到由中斷向量指向的另外一個叫做中斷服務(wù)程序ISR的程序上去執(zhí)行。當(dāng)中斷服務(wù)程序執(zhí)行中遇到特權(quán)指令RTE或IRET時9將會使執(zhí)行流程再次發(fā)生轉(zhuǎn)移。也就是說,在一個完整的中斷過程里,處理器的執(zhí)行流程 會發(fā)生兩次轉(zhuǎn)移:一次在處理器響應(yīng)中斷之后;一次是在遇到指令RTE或IRET時。前者是由計算機(jī)硬仵完成的;后者則是由指令來完成的。中斷處理流程如圖所示。
圖 中斷處理流程
至于第二次轉(zhuǎn)移會轉(zhuǎn)移到何處,則與轉(zhuǎn)移前處理器PC寄存器的值有關(guān)。如果在中斷服務(wù)程序的運(yùn)行中沒有對當(dāng)初保護(hù)的斷點進(jìn)行修改,則流程會轉(zhuǎn)移到被中斷程序的斷點處繼續(xù)執(zhí)行;否則,會跳轉(zhuǎn)到寄存器PC指示的地址開始執(zhí)行另外一個程序。
從圖和上面的敘述中,讀者應(yīng)該建立這樣一個概念:處理器的執(zhí)行流程在整個中斷過程中會發(fā)生兩次跳轉(zhuǎn),一次是發(fā)生在響應(yīng)中斷并保護(hù)斷點之后,另外一次是發(fā)生在中斷服務(wù)程序運(yùn)行遇到返回指令RTE或IRET時。尤其需要注意的是第二次跳轉(zhuǎn),根據(jù)在返回指令RTE或IRET之前當(dāng)初保護(hù)的斷點是否進(jìn)行過修改。這次跳轉(zhuǎn)的目的地是截然不同的:如果沒有進(jìn)行修改,則返回原來被中斷了的程序;如果進(jìn)行了修改,則會跳轉(zhuǎn)到另外一個程序中。
以后會看到,操作系統(tǒng)正是利用了處理器中斷過程的這兩次跳轉(zhuǎn)中的特點,實現(xiàn)了操作系統(tǒng)所需要的系統(tǒng)調(diào)用和進(jìn)程切換這兩個功能。
總之,中斷可以迫使處理器中止現(xiàn)行工作,轉(zhuǎn)向處理另外一個事仵。在該事件處理完后又可以轉(zhuǎn)回原程序繼續(xù)運(yùn)行,或者是再轉(zhuǎn)向處理其他事件。
歡迎轉(zhuǎn)載,信息來源維庫電子市場網(wǎng)()
ks99