趙琳娜
(內蒙古民族大學 計算機科學與技術學院,內蒙古 通遼 028000)
在現代的計算機系統中,為了提高整個系統的資源利用率及吞吐量,均引入了中斷機制,采用中斷技術對計算機內部、外部的隨機或突發事件要求進行實時及時的處理。在引入中斷機制的計算機系統中,一旦I/O設備完成傳輸數據的準備工作(輸入設備完成新數據的輸入/輸出設備完成舊數據的輸出),設備控制器便通過控制線向CPU發送中斷信號,CPU在條件允許的情況下,暫停當前程序的運行,為外設進行輸入輸出。一方面,由于在CPU工作時,允許多進程模式,通過不同進程啟動不同I/O設備,從而達到CPU和多個外設同時并行工作的要求,大大提高CPU的利用率及數據輸入、輸出的速度。另一方面,中斷技術以I/O設備的控制器向CPU發出請求作為啟動中斷服務的前提,因此計算機在運行過程中,出現的各種軟硬件故障,計算機可以利用中斷系統自行處理,而不必停機或報告工作人員。
一方面,由于中斷技術在計算機系統中涉及的軟硬件中斷事件很多,在中斷處理的過程中為了增加處理的靈活性及與不同事件處理需求的適應性,需要在中斷過程中采用中斷屏蔽技術。另一方面,在中斷過程中,緊急事件對非緊急事件的嵌套執行的實現也需要采用中斷屏蔽技術做技術支撐。中斷系統實現中斷嵌套的功能,應具備以下條件。
(1)CPU內部中斷允許標志位設置為允許,即為開中斷,反之為關中斷,關中斷相當于將I/O設備的控制器向CPU發出請求的中斷請求全部屏蔽,即屏蔽了比CPU主程序優先級別低的I/O設備程序。
(2)優先級別高的中斷源有權中斷優先級別低的中斷源。在滿足(1)的前提下,只有優先級別更高的中斷源請求才可以中斷比其級別低的中斷服務程序,反之則不然。
上述兩個條件都具備關閉一些程序或事件執行而開放另一些程序/事件執行的作用,這一作用被稱為屏蔽。同時由上述條件可知,屏蔽作用具有兩個層次,一個層次直接在CPU內部進行描述,另一層次在中斷源側描述,在此將前一層次稱為一級中斷屏蔽,后一層次稱為二級中斷屏蔽,兩個級別的中斷屏蔽層次關系如圖1所示。

圖1 兩級中斷屏蔽層次示意
用于進行CPU當前主程序與I/O控制器請求執行的中斷程序的嵌套關系設置,用于進行不同優先級別中斷源的嵌套關系設置。
由圖可知,二級屏蔽的主要作用在于靈活處理多個中斷源的服務競爭問題,這級屏蔽主要通過在中斷管理接口部件中設置完成,在微機系統中二級中斷屏蔽設置由中斷控制器實現,例X86系統的intel8259A芯片。一級屏蔽的作用在于靈活處理CPU當前執行的程序與新提出服務請求外設程序的競爭問題,因涉及對程序進行轉移切換,所以這級屏蔽要通過在CPU內部的設置實現[1]。
二級屏蔽技術實現的硬件支撐主要是中斷屏蔽觸發器。在近中斷源的中斷控制接口電路中為了實現二級中斷技術需要設置中斷屏蔽觸發器,每個中斷源對應設置一個中斷屏蔽觸發器,當該觸發器的值設置為1時,對該中斷源起屏蔽作用,反之允許該中斷源的中斷請求向CPU端傳遞。顯然在此處設置的中斷屏蔽觸發器對各中斷源向CPU提出中斷服務的請求起到了一個根據各中斷源的實際情況靈活允許和禁止的控制技術。
將各中斷源對應的中斷屏蔽觸發器8個一組連合在一起便構成了一個中斷屏蔽寄存器。屏蔽寄存器的內容稱為屏蔽字。屏蔽字與中斷源的優先級有對應關系,可以從另一個層面對中斷源的中斷服務請求進行競爭管理[2]。
一般中斷源的優先級包含響應優先級和處理優先級。響應優先級是指CPU響應各中斷源請求的優先次序,這種次序一般通過鏈式硬件線路設置,不便于改動。處理優先級是指CPU實際處理各中斷源服務的優先次序。不采用屏蔽技術時,各中斷源的響應優先級次序和處理優先級次序一致。當設置屏蔽字即采用了屏蔽技術后,CPU對各中斷源的處理優先級別隨之改變,例如,在系統中有A,B,C,D 4個中斷源,響應優先級別按A->B->C->D降序排列,在不采用屏蔽技術的情況下,處理優先級與響應優先級一致,按A->B->C->D降序排列。當設置屏蔽字如表1所示,響應優先級次序不變,處理優先級次序改變為C->A->B->D。

表1 中斷源的屏蔽字設置
C中斷源屏蔽字各位全為1,優先級最高,在該中斷源服務時,屏蔽了包括本中斷源在內的所有中斷源的服務請求。A優先級次高,屏蔽字第2位為0(對應C中斷源),說明A中斷源在中斷服務程序執行期間不能屏蔽C中斷源的服務請求,其余位為1,說明在A中斷源服務時,能夠屏蔽包括本中斷源在內的A、B、D中斷源的服務請求,其他同理,不再論述。由此可見當需要根據實際應用需求靈活改變中斷源的處理優先級別時,可以通過設置不同的屏蔽字實現[3]。
在通過上述中斷接口電路的控制后,競爭獲勝的中斷源的中斷請求送達了CPU,在微機系統中送達CPU的中斷請求傳送到INTR引腳,稱為可屏蔽的中斷請求。如上文中所述,該引腳輸入的請求將受CPU內部中斷允許標志位的控制。當CPU當前執行的程序重要程度高于獲勝中斷源要求執行的程序時,CPU令中斷允許標志位為0,相當于CPU關閉對外部中斷源響應的總開關,將外部中斷源全部屏蔽,實現了CPU執行程序的實際靈活控制;若CPU當前執行的程序是某中斷源的服務程序(假設該中斷源的處理級別低于通過INTR引腳新輸入來的中斷源的級別),上述操作的結果也將導致中斷嵌套被禁止,從而體現了CPU內部的中斷允許標志位對中斷屏蔽技術的作用[4]。
中斷屏蔽技術對中斷過程的影響非常關鍵,在中斷源的中斷請求、中斷響應、中斷服務及中斷返回4個階段,一級、二級及三級中斷屏蔽設置發揮著靈活改變優先級、適應實際應用要求、選擇不同傳輸模式等作用,理解中斷屏蔽技術,在程序設計中靈活運用該技術,對編寫高質量的程序非常必要。