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