程序中斷是指計算機執行現行程序的過程中,出現某些繼續處理的異常情況和特殊請求,CPU暫時中止現行程序,而轉去執行對隨機發生的更緊迫的事件進行處理,在處理完畢后,CPU講自動返回原來的程序繼續執行。
程序中斷分為內中斷和外中斷,向量中斷和非向量中斷,單重中斷和多重中斷等多種類型。
中斷全過程是指從中斷源發出請求開始,cpu相應這個請求,現行程序被中斷,轉至中斷服務程序,直至中斷服務程序執行完畢,cpu在返回原來的程序繼續執行的整個過程。可以分為五個階段:中斷請求,中斷判優,中斷相應,中斷處理,中斷返回。
Cpu響應中斷,要滿足3個條件:1,中斷源有中斷請求;2,cpu允許接收中斷;3,一條指令執行完畢;第一個條件是顯而易見的,無需多說,而第2,3個條件需要仔細討論。Cpu內部有一個中斷允許觸發器,以此來確定現行程序是否允許被中斷;當中斷允許觸發器=1時,cpu處于開放狀態,允許中斷;當中斷允許觸發器=0時,cpu處于關閉狀態,禁止中斷。中斷允許觸發器由開中斷指令來置位,有關中斷指令或者硬件使其復位。Cpu響應中斷的時間是在一條指令執行完畢后,且沒有優先權更高的請求(如電源失效或者DMA請求),隨后cpu進入中斷周期。之所以必須要等到一條指令指令執行完畢,是因為相應中斷,意味著出理解講從一個程序切換到另外一個程序,而程序是一條條的指令組成的,如果不在指令執行執行完畢時切換,中斷返回時將無法保證原來的程序能夠繼續執行。
為使切換前后的程序都能夠正確執行,在運行響應階段需要將cpu的關鍵性硬件狀態保存起來。這些狀態有兩類,一類是程序的程序狀態字,他們保存著程序的執行的現形值,稱為中斷現場。Psw和pc的內容必須在程序被終止時,不久加以很好的保存,以便恢復時程序能夠正確第沿著斷點繼續執行,否則pc和psw的內容在中斷相應時,將被中斷服務程序的入口地址和中斷服務的程序的狀態字沖掉,所以往往在中斷周期中由硬件來完成他們的保存。而工作寄存器在中斷相應時不會被破壞,因此可以在中斷服務程序里有軟件把他轉移到安全的地方。
在中斷周期,cpu執行一條中斷隱指令,中斷隱指令指有硬件在中斷響應時產生,并不是指令系統的一條真正的指令,本身沒有操作碼,也不會在程序中出現,中斷隱指令主要完成三個操作:1,保存斷點;2,關閉中斷允許觸發器;3,找出中斷服務程序的入口地址。
在中斷周期中必須關閉中斷允許觸發器大的原因是,保證用軟件來保護現行的程序的中斷現場期間不允許被新的、更高級的中斷請求所打斷。并不是所有的計算機都一定在中斷隱指令中由硬件關閉中斷允許觸發器,也有些計算機的這一操作是在中斷服務程序的保護現場之前由關中斷因指令來實現的。
中斷處理就是執行中斷服務程序,這是中斷系統的核心。
中斷服務程序的流程基本由三個部分組成,第一部分是準備部分;基本功能是保護現場,對與非向量中斷方式,則需要確定中斷源,最后開中斷,允許更高級的中斷請求打斷低級的中斷服務程序;對于第二部分,中斷處理,即真正執行具體的為某個中斷源服務的中斷服務程序,第三部分是,結尾部分,首先要關中斷,以防止在恢復現場過程中,被新的中斷請求中打斷,接著恢復現場,然后開放中斷,以便返回原來的程序后可以響應其他的中斷請求。中斷服務程序的最后一條指令一定是中斷返回指令。