中斷號

中斷號

中斷是指在CPU運行期間,被CPU內部或外部事件所打斷、暫停當前程序的執行而轉去執行一段特定的處理內部或外部時間程序的過程。外部設備進行I/O操作時,會隨機產生中斷請求信號。這個信號中會有特定的標誌,使計算機能夠判斷是哪個設備提出中斷請求,這個信號就叫做中斷號。

中斷概念


中斷是指CPU在正常運行程序時,由於外部/內部隨機事件或由程序預先安排的事件,引起CPU暫時中斷正在運行的程序,而轉到為外部/內部事件或為預先安排的事件服務的程序中去,服務完畢,再返回去繼續執行被暫時中斷的程序。
例如,用戶使用鍵盤時,每擊一鍵都發出一個中斷信號,通知CPU有“鍵盤輸入”事件發生,要求CPU讀人該鍵的鍵值,CPU就暫時中止手頭的程序,轉去處理鍵值的讀取程序,在讀取操作完成後,CPU又返回原來的程序繼續運行。
可見,中斷的發生是事出有因,引起中斷的事件就是中斷源,中斷源各種各樣,因而出現多種中斷類型。CPU在處理中斷事件時必須針對不同中斷源的要求給以不同的解決方案,這就需要有一個中斷處理程序(中斷服務程序)加以解決。
從程序的邏輯關係來看,中斷的實質就是程序的轉移。中斷提供快速轉移程序運行環境的機制,獲得CPU為其服務的程序段稱為中斷處理(服務)程序,被暫時中斷的程序稱為主程序(或調用程序)。程序的轉移由微處理器內部事件或外部事件啟動,並且一個中斷過程包含兩次轉移,首先是主程序向中斷處理(服務)程序轉移,然後是中斷處理(服務)程序處理完畢之後向主程序轉移。由中斷源引起程序的轉移切換機制,用於快速改變程序運行路徑,這對實時處理一些突發事件很有效。

中斷號獲取


中斷號是系統分配給每個中斷源的代號,以便識別和處理。中斷號在中斷處理過程中起到很重要的作用,在採用向量中斷方式的中斷系統中,CPU必須通過它才可以找到中斷服務程序的入口地址,實現程序的轉移。為了在中斷向量表中查找中斷服務程序的入口地址,可由中斷號(n)×4得到一個指針,指向中斷向量(即中斷服務程序的入口地址)存放在中斷向量表的位置,從中取出這個地址(CS:IP),裝入代碼段寄存器CS和指令指針寄存器IP,即轉移到了中斷服務程序。
CPU對系統中不同類型的中斷源,獲取它們的中斷號的方法是不同的。可屏蔽中斷的中斷號是在中斷響應周期從中斷控制器獲取的。軟中斷INT nH的中斷號(nil)是由中斷指令直接給出的。不可屏蔽中斷NMI及CPU內部一些特殊中斷的中斷號是由系統預先設置好的,如NMI的中斷號為02H,非法除數的中斷號為0H,等等。

中斷號的使用


電腦上需要連接很多設備,如音效卡、印表機、Modem等,這些設備可以通過中斷請求的方式與CPU進行數據交換。當一個設備需要CPU來處理它的數據時,可以向CPU發出中斷請求信號,讓CPU暫停正在執行的工作,轉而處理該設備的操作請求,處理完畢后,再返回執行原來的工作。當一個設備向CPU發出中斷請求時,是通過IRQ值來告知CPU到底是哪一個外圍設備需要服務,因此每個設備都會佔用一個IRQ值。
在每台電腦的系統中,是由一個中斷控制器8259或是8259A的晶元(現在此晶元大都集成到其他的晶元內)來控制系統中每個硬體的中斷控制。目前共有16組IRQ,去掉其中用做橋接的一組IRQ,實際上只有15組IRQ可供硬體調用,而這些IRQ都有自己默認的配置。
在使用IRQ值時,需把握一條原則,即一個IRQ值只能給一個設備使用,例如:通常滑鼠使用IRQ4(COMl),此時IRQ4就不能再給其他硬體設備使用了。不同的操作系統版本對於IRQ的設置也不盡相同,所以在安裝新硬體的時候,系統往往並不能完全自動檢測正確的IRQ來分配給所調用的硬體,這就會造成此硬體設備或是原來的舊硬體出現不能正常工作的現象。其實這是系統自動將該硬體的IRQ分配給了其他與此IRQ相同的硬體,從而發生衝突使硬體不能正常工作。一般如果遇到這種情況,只要將新舊兩個硬體的IRQ配置手動調開就可以解決了。