硬體中斷是通過外部硬體電路產生的中斷,因此也常稱為外部中斷。硬體中斷又分為非禁止中斷和可禁止中斷。無禁止狀態是指可禁止中斷和正常狀態下處理器的狀態,這時處理器是否回響中斷請求要看狀態標誌暫存器中IF的狀態或者進程的優先權。
基本介紹
- 中文名:無禁止狀態
- 外文名:unmask state
- 學科:計算機
- 定義:可禁止中斷下處理器的狀態
- 有關術語:硬體中斷
- 領域:硬體、作業系統
概述,硬體中斷,中斷處理過程,請求中斷,中斷回響,關閉中斷,保護斷點,中斷源識別,保護現場,中斷服務,恢復現場,中斷返回,
概述
在計算機中,根據中斷源的種類可以分為內中斷和外中斷。內中斷一般是指故障、陷阱和終止。外中斷是指外設或其它硬體通過中斷請求線申請,與執行指令無關。無禁止狀態是指可禁止中斷和正常狀態下處理器的狀態,在無禁止狀態下,處理器一般根據中斷優先權和進程優先權來處理請求。與無禁止狀態相反的是禁止狀態,在這種情況下處理器不回響任何請求。
硬體中斷
硬體中斷是一個異步信號,表明需要注意,或需要改變在執行一個同步事件。硬體中斷是一種在輪詢循環,等待外部事件方面避免浪費處理器的寶貴時間的方式。作為一個獨立的有控制線系統,它們可以在硬體中實現或被集成到存儲器子系統。
可禁止中斷(maskable interrupt)。硬體中斷的一類,可通過在中斷禁止暫存器中設定位掩碼來關閉。
非可禁止中斷(non-maskable interrupt,NMI)。硬體中斷的一類,無法通過在中斷禁止暫存器中設定位掩碼來關閉。典型例子是時鐘中斷(一個硬體時鐘以恆定頻率—如50Hz—發出的中斷)。
處理器間中斷(interprocessor interrupt)。一種特殊的硬體中斷。由處理器發出,被其它處理器接收。僅見於多處理器系統,以便於處理器間通信或同步。
偽中斷(spurious interrupt)。一類不希望被產生的硬體中斷。發生的原因有很多種,如中斷線路上電氣信號異常,或是中斷請求設備本身有問題。
計算機中除了硬體中斷外還有軟體中斷。軟體中斷是一條CPU指令,用以自陷一個中斷。由於軟中斷指令通常要運行一個切換CPU至核心態(Kernel Mode/Ring 0)的子例程,它常被用作實現系統調用(System call)。
中斷處理過程
在微機系統中,對於外部中斷,中斷請求信號是由外部設備產生,並施加到CPU的NMI或INTR引腳上,CPU通過不斷地檢測NMI和INTR引腳信號來識 別是否有中斷請求發生。對於內部中斷,中斷請求方式不需要外部施加信號激發,而是通過內部中斷控制邏輯去調用。無論是外部中斷還是內部中斷,中斷處理過程 都要經歷以下步驟: 請求中斷→回響中斷→關閉中斷→保留斷點→中斷源識別→保護現場→中斷服務子程式→恢復現場→中斷返回。
請求中斷
當某一中斷源需要CPU為其進行中斷服務時,就輸出中斷請求信號,使中斷控制系統的中斷請求觸發器置位,向CPU請求中斷。系統要求中斷請求信號一直保持到CPU對其進行中斷回響為止。
中斷回響
CPU對系統內部中斷源提出的中斷請求必須回響,而且自動取得中斷服務子程式的入口地址,執行中斷 服務子程式。對於外部中斷,CPU在執行當前指令的最後一個時鐘周期去查詢INTR引腳,若查詢到中斷請求信號有效,同時在系統開中斷(即IF=1)的情 況下,CPU向發出中斷請求的外設回送一個低電平有效的中斷應答信號,作為對中斷請求INTR的應答,系統自動進入中斷回響周期。
關閉中斷
CPU回響中斷後,輸出中斷回響信號,自動將狀態標誌暫存器FR或EFR的內容壓入堆疊保護起來,然後將FR或EFR中的中斷標誌位IF與陷阱標誌位TF清零,從而自動關閉外部硬體中斷。因為CPU剛進入中斷時要保護現場,主要涉及堆疊操作,此時不能再回響中斷,否則將造成系統混亂。
保護斷點
保護斷點就是將CS和IP/EIP的當前內容壓入堆疊保存,以便中斷處理完畢後能返回被中斷的原程式繼續執行,這一過程也是由CPU自動完成。
中斷源識別
當系統中有多個中斷源時,一旦有中斷請求,CPU必須確定是哪一個中斷源提出的中斷請求,並由中斷控制器給出中斷服務子程式的入口地址,裝入CS與IP/EIP兩個暫存器。CPU轉入相應的中斷服務子程式開始執行。
保護現場
主程式和中斷服務子程式都要使用CPU內部暫存器等資源,為使中斷處理程式不破壞主程式中暫存器的內容,應先將斷點處各暫存器的內容壓入堆疊保護起來,再進入的中斷處理。現場保護是由用戶使用PUSH指令來實現的。
中斷服務
中斷服務是執行中斷的主體部分,不同的中斷請求,有各自不同的中斷服務內容,需要根據中斷源所要完成的功能,事先編寫相應的中斷服務子程式存入記憶體,等待中斷請求回響後調用執行。
恢復現場
當中斷處理完畢後,用戶通過POP指令將保存在堆疊中的各個暫存器的內容彈出,即恢復主程式斷點處暫存器的原值。
中斷返回
在中斷服務子程式的最後要安排一條中斷返回指令IRET,執行該指令,系統自動將堆疊內保存的 IP/EIP和CS值彈出,從而恢復主程式斷點處的地址值,同時還自動恢復標誌暫存器FR或EFR的內容,使CPU轉到被中斷的程式中繼續執行。