5.1 中斷的概念
5.1-1 中斷的產生
在現代電子計算機係統中,實現主機和外部設備之間的數據交換有三種方式,這就是程序傳送方式,程序中斷方式和直接存儲存取方式。
早期的計算機沒有中斷係統因此主機和外部設備交換數據隻能采用程序傳送方式。
采用程序傳送方式交換數據,當然也要通過接口。這種接口包括數據寄存器、控製寄存器、狀態寄存器(或稱數據口)、控製及狀態口。狀態口用來反映外部設備與1/0口交換信息過程中的狀態。如輸入信息時,用來反映信息是否準備好。輸出時用來反映輸出裝置是否有空。通過不斷查詢狀態口,而傳知外部後備允許進行字節傳送的時間。因此可以把多個字節數據與外部設備正確地進行交換,控製寄存器用來寄存啟停1/0裝置的命令。
數據寄存器用來作為1/0裝置交換數據的緩衝寄存器。下麵以紙帶輸入機為例來說明程序傳送工作方式。首先啟動紙帶輸入機,即執行指令,將啟動命令送入控製口。然後測試一排孔的信息是否送完,即指令,讀入狀態信息。一排孔沒有送完,則繼續測試;若完成則轉入數據輸入狀態。接著判斷輸入的字數是否送完,若完成則結束這台外設的工作;若傳送的字數還沒有完成,則重複上述過程直到規定的傳送字數傳送完。
目前工作速度為每秒幾萬次到上億次。啟動外設和輸入一個字節數據,多數隻需要執行一兩條指令,對每秒速度為幾十萬次的主機來說隻需用微秒級的時間。而外部設備的工作速度一般都在毫秒級以上,兩者在速度上相差是很大的。所以,的大部分時間都浪費在反複查詢狀態字上了。這就是程序傳送的主要缺點。其原因就在於和外部設備是串行工作的,外設工作時處於踏步等待狀態,不能去處理其他工作。
為了解決上述矛盾,提高工作效率,設置了中斷係統。外部設備采用中斷方式交換數據。即當口需要輸入或輸出數據時,先執行一條指令,發出啟動外部設備的命令。然後就繼續執行主程序的指令,而外部設備按目己的規律工作,此時外設和口並行工作。當外部設備工作告一段落需要口來為它服務時,由外部設備向發出中斷請求,通知來為它服務。(在完成正在執行的指令後,就暫停主程序的執行,保護斷點和現場後轉去為外設服務(執行中斷服務程序)。服務完畢就返回斷點,繼續執行主程序。所以,有了中斷係統,就可以使口和外設並行工作。
隻需暫停執行主程序一段時間去為外設服務。由此可見,的工作效率大大提高了。例如:紙帶輸入機啟動後完成一排孔的運行時間。在這時間內照簾執行主程序指令,如運算指令等,隻有當輸入機將數據準備好之後,才暫停主程序運算任務,而開始數據接收工作。而接收一個數據隻要微秒數量級的時間就可以了。
5.1-2 中斷的重要性
隨著計算機的發展,入們發現中斷係統不僅能解決上述快速主機和慢速外部設備的矛盾,還能實現如下一些操作:
1.分時操作。有了中斷係統,可以命令多個外部設備同時工作,這樣就大大提高了吞吐率。
2.實現實時處理。當計算機用於實時控製,要求計算機為它服務是隨機的,若沒有中斷係統是很難實現的。
3.故障處理。計算機在運行過程中,往往會出現一些敵障,如電源掉電、存儲出錯、運算溢出等。有了中斷係統,當出現上述情況時,可以轉去執行故障處理程序,自行處理故障而不必停機。
4.中斷係統還可以實現多道程序運行,多機連接,入機聯係等等。因此,中斷係統是近代計算機不可缺少的組成部分,中斷技術是衡量計算機的主要指標之一。
5.1-3 中斷源的種類
引起中斷的原因,或發出中斷申請的來源,稱為中斷源。中斷源有以下幾類,
1.外部設備請求中斷,一般的外部設備如紙帶輸入機、打印機等,工作告一段茖發出中斷請求,要求為它服務,
2.實時時鍾請求中斷。例如:電路,先由口發出指令,讓時鍾電路開始計時工作,待規定的時間到,時鍾電路發出中斷申請,轉入中斷服務程序進行中斷處理。
3.故障請求中斷。當出現電源掉電、存儲出錯或溢出等故障時,發出中斷請求,轉去執行故障處理程序,如起動備用電源、報道等。
4.調試程序而設置的中斷源。調試程序時,為了檢查中間結果,或為了尋找錯誤所在,往往采用設置斷點或單步運行方式,這也可以由中斷係統來實現。它是由事先在程序中安排好的自陷指令或硬件電路引起的中斷,一般稱這種中斷為自願中斷,而上述三種中斷是隨機申請引起的中斷,稱為強迫中斷。
5.1-4 中斷處理過程
本節重點介紹由外部設備請求中斷的處理過程。一個完整的程序中斷處理過程應包括:中斷請求——中斷排隊——中斷響應——中斷處理和中斷返回等環節。下麵分別進行討論。
1.中斷請求
中斷請求是由中斷源向發出中斷的要求。壞部設備發出中斷請求信號要具備以下兩個條件:
(1)外部設備工作已經告一段落。例如,紙帶輸入機隻有走完一排孔的距離,將這一排孔碼的信息讀到接口的數據寄存器(即準備好要輸入的數據)之後,才可以向發出中斷請求。
(2)係統允許該外部設備發出中斷請求。如果係統不允許該外部設備發出中斷請求,可以將這個外部設備屏蔽。當這個外部設備被屏蔽,雖然這個外部設備準備工作已經完成,也不能發出中斷請求。所以外部設備能發出中斷請求的第二個條件是它不被屏蔽。
2.中斷排隊
中斷申請是隨機的,有時會出現多個中斷源同時提出中斷申請。但每次隻能響應一個中斷源的請求,那麼究竟響應哪一個中斷源的請求呢?這就必須根據各中斷源工作性質的輕重緩急,安排一個優先順序,這就稱為中斷排隊。一般是把最緊迫和速度最高的設備排在最優先的位置上。首先響應優先級別最高的中斷源。當中斷處理完畢,再響應級別低的中斷申請。