無論是桌面PC操作系統(tǒng)還是嵌入式都是多任務的操作系統(tǒng),而很遺憾,處理器往往是單個的,即便在硬件成本逐漸下降,而硬件配置直線上升的今天,PC機的核心可能已經達到4核心,8核心,而手機移動設備更不可思議的達到16核心,32核心,處理器的數量依然不可能做到每個任務一個CPU,所以CPU必須作為一種全局的資源讓所有任務共享。說到共享,如何共享呢?什么時候給任務A用,什么時候給任務B用......這就是進程調度,具體的安排就由調度算法決定了。進程如何去調度?現(xiàn)代操作系統(tǒng)一般都是采用基于時間片的優(yōu)先級調度算法,把CPU的時間劃分為很細粒度的時間片,一個任務每次只能占用這么多的時間,時間到了就必須交出使用權,換由其他的任務使用。這種要看操作系統(tǒng)的定時器機制了。那么時間片到之后,系統(tǒng)做了什么呢?這就要用到我們的中斷了,時間片到了由定時器觸發(fā)一個軟中斷,然后進入相應的處理歷程。當然這一點不足以表明中斷的重要性,計算機操作系統(tǒng)自然離不開外部設備:鼠標、鍵盤、網卡、磁盤等等。就拿網卡來講,計算機并不知道什么時候數據包會來到,能保證的就是數據來了能正常接收就行了。但是我又不可能一直等著接收數據包,要是這樣其他任務就死完了。所以合理的辦法是,你數據包來到之后,通知我,然后我再對你處理,怎么通知呢?答:中斷!
定義:
(廣義的)指CPU對突發(fā)的外部事件的反應過程或機制。CPU收到外部信號(中斷信號)后,停止當前工作,轉去處理該外部事件,處理完畢后回到原來工作的中斷處(斷點)繼續(xù)原來的工作。中斷信號來自外圍硬件(相對于CPU和內存)的異步信號或來自軟件的同步信號。
引入中斷的目的
實現(xiàn)并發(fā)活動
1. CPU和外設并發(fā)工作:當外設工作完畢,產生信號通知CPU,讓CPU處理外部事件;
2. 兩個進程并發(fā)運行:通過時鐘的切換,進程并發(fā)使用CPU,時鐘產生一個中斷信號通知CPU將使用權切換到另一進程
實現(xiàn)實時處理
實時系統(tǒng)中處理機隨時響應并進行處理各種監(jiān)測和控制裝置隨機向處理機發(fā)出的中斷請求
故障自動處理
處理機中設有各種故障檢測和錯誤診斷的部件,一旦發(fā)現(xiàn)故障或錯誤,立即發(fā)出中斷請求,進行故障現(xiàn)場記錄和隔離,為進一步處理提供必要的依據
中斷的一些概念
中斷源:
引起中斷的事件或原因,或發(fā)出中斷申請的來源。
中斷類型:
外中斷(Interruption):指來自CPU執(zhí)行指令以外的事件的發(fā)生,如設備發(fā)出的I/O結束中斷,表示設備輸入/輸出處理已經完成,希望處理機能夠向設備發(fā)下一個輸入 / 輸出請求,同時讓完成輸入/輸出后的程序繼續(xù)運行。時鐘中斷,表示一個固定的時間片已到,讓處理機處理計時、啟動定時運行的任務等。這一類中斷通常是與當前程序運行無關的事件,即它們與當前處理機運行的程序無關。?外中斷又可分為不可屏蔽中斷、可屏蔽中斷。對于不可屏蔽中斷,CPU必須無條件響應,而對于可屏蔽中斷,CPU可以響應,也可以不響應,CPU一般設置兩根中斷請求線:可屏蔽中斷請求INTR(Interrupt Require)和不可屏蔽中斷請求NMI(NonMaskable Interrupt)。對于可屏蔽中斷,除了受本身的屏蔽位控制外,還都要受一個總的控制,即CPU標志寄存器中的中斷允許標志位IF(Interrupt Flag)的控制,IF位為1,可以得到CPU響應,否則,得不到響應。
內中斷:也稱為異常(exception),是由CPU內部事件所引起的中斷,例如進程在運算中發(fā)生了上溢或者下溢,有如程序出錯,如非法指令,地址越界等。通常把這類中斷稱為內中斷或者陷入。若系統(tǒng)發(fā)現(xiàn)有陷入事件,CPU也將暫停正在執(zhí)行的程序,轉去執(zhí)行該陷入事件的處理程序。
斷點:
程序中斷的地方,將要執(zhí)行的下一指令的地址。
現(xiàn)場(上下文)Context
用戶空間的應用程序,通過系統(tǒng)調用,進入內核空間。這個時候用戶空間的進程要傳遞很多變量、參數的值給內核,內核態(tài)運行的時候也要保存用戶進程的一些寄存器值、變量等。所謂的“進程上下文”,可以看作是用戶進程傳遞給內核的這些參數以及內核要保存的那一整套的變量和寄存器值和當時的環(huán)境等。
中斷信號由外部設備發(fā)起,準確來說是由外部設備的控制器發(fā)起,因為外部設備本身并不能發(fā)起信號。硬件通過觸發(fā)信號,導致內核調用中斷處理程序,進入內核空間。這個過程中,硬件的一些變量和參數也要傳遞給內核,內核通過這些參數進行中斷處理。所謂的“中斷上下文”,其實也可以看作就是硬件傳遞過來的這些參數和內核需要保存的一些其他環(huán)境(主要是當前被打斷執(zhí)行的進程環(huán)境)。
現(xiàn)場的保護:進入中斷服務程序之前,棧
現(xiàn)場的恢復:進入中斷服務程序之后,棧
中斷的響應過程

中斷響應的實質
中斷響應的實質是交換CPU的模式和交換指令執(zhí)行地址和處理器狀態(tài),以達到如下目的:
1、保留及恢復程序斷點及有關信息。
2、自動轉入相應的中斷處理程序執(zhí)行。
參考: 華中科技大學軟件學院蘇曙光老師的操作系統(tǒng)原理課程