簡介
CPU正常運行期間,停止當前操作,執行其他特殊操作的行為就叫中斷,負責跳轉的指令就是中斷指令。中斷指令一般可以分為可中斷指令和禁止中斷指令。禁止中斷指令是指禁止中斷出現或禁止回響中斷的指令。例如IBM370系統使用特權指令向送程式狀態暫存器程式禁止碼,這類被禁止出現的中斷一旦發生,則此中斷被丟棄。
有關術語
可中斷指令
在指令部分完成之後就允許中斷的指令。對於大部分指令,完整執行一條指令就是一個操作。只能在兩個操作之間允許中斷,即中斷只能發生在一個操作之後,和其後面那個操作開始之前。可以把執行一條可中斷指令看成有若干個單位操作,而在兩個單位操作之間允許發生中斷。如果與一條可中斷指令有關的所有單位操作都執行完成時,則該指令執行完成。如果指令在執行完某些單位操作之後,但不是全部單位操作之後發生中斷,則在中斷點以前的所有單位操作都已完成,該指令未完成的單位操作等處理完中斷後繼續執行。
特權指令
所謂 特權指令,就是在系統態時運行的指令,是關係到系統全局的指令。其對記憶體空間的訪問範圍基本不受限制,不僅能訪問用戶存儲空間,也能訪問系統存儲空間,如啟動各種外部設備、設定系統時鐘時間、關中斷、清主存、修改存儲器管理暫存器、執行停機指令、轉換執行狀態等。特權指令只允許作業系統使用,不允許應用程式使用,否則會引起系統混亂 。
中斷源分類
導致處理機中斷的原因是多方面的,一台處理機有多箇中斷源。按其性質可分為五類:
①硬體故障中斷。包括電源故障、運算器誤動作、主存或通道中數據傳送出錯、處理機其他硬體故障等。
②輸入輸出中斷。如鍵盤輸入時,每按一次鍵,請求處理機取走已輸入的信息;印表機在輸出時,每完成一次列印動作,即向處理機請求送出下一個待列印的信息。
③程式性中斷。現行程式本身的異常事件引起的,如指令中出現非法操作碼,定址範圍超過主存容量,結果溢出以及在程式調試中到達預定跟蹤的狀態等。
④外中斷。來自控制台中斷開關、計數器、定時器及其他設備的中斷。這類中斷實時性強,處理簡單 。
⑤調用管理程式。用戶程式中利用“調用管理程式”指令(或稱“訪管”指令)發出中斷請求,實現用戶程式和作業系統之間的聯繫。
中斷分類
硬體中斷(Hardware Interrupt)
可禁止中斷(maskable interrupt)。硬體中斷的一類,可通過在中斷禁止暫存器中設定位掩碼來關閉。
非可禁止中斷(non-maskable interrupt,NMI)。硬體中斷的一類,無法通過在中斷禁止暫存器中設定位掩碼來關閉。典型例子是時鐘中斷(一個硬體時鐘以恆定頻率—如50Hz—發出的中斷)。
處理器間中斷(interprocessor interrupt)。一種特殊的硬體中斷。由處理器發出,被其它處理器接收。僅見於多處理器系統,以便於處理器間通信或同步。
偽中斷(spurious interrupt)。一類不希望被產生的硬體中斷。發生的原因有很多種,如中斷線路上電氣信號異常,或是中斷請求設備本身有問題。
軟體中斷(Software Interrupt)
軟體中斷。是一條CPU指令,用以自陷一個中斷。由於軟中斷指令通常要運行一個切換CPU至核心態(Kernel Mode/Ring 0)的子例程,它常被用作實現系統調用(System call)。
處理器通常含有一個內部中斷禁止位,並允許通過軟體來設定。一旦被設定,所有外部中斷都將被系統忽略。這個禁止位的訪問速度顯然快於中斷控制器上的中斷禁止暫存器,因此可提供更快速地中斷禁止控制。
如果一個中斷使得機器處於一種確定狀態,則稱為精確中斷(precise interrupt)。精確中斷須保證:
程式計數器的值被保存在已知位置。
程式計數器所指向的指令之前的所有指令已被執行完畢。
程式計數器所指向的指令之後的所有指令不可被執行。如果中斷信號到來後而轉入處理前發生了任何針對暫存器/記憶體的更改,都必須予以還原。
程式計數器所指向的指令地執行狀態已知。
倘無法滿足以上條件,此中斷被稱作非精確中斷(imprecise interrupt)。
中斷儘管可以提高計算機處理性能,但過於密集的中斷請求/回響反而會影響系統性能。這類情形被稱作中斷風暴(interrupt storm)。
中斷系統
中斷系統由專門的硬體和軟體構成。硬體包括中斷事件的監測與識別、中斷的控制、中斷向量地址形成以及中斷優先權仲裁等邏輯部件。軟體包括中斷控制和中斷服務程式等。
功能現代計算機中採用中斷系統的主要目的是:①提高計算機系統效率。計算機系統中處理機的工作速度遠高於外圍設備的工作速度。通過中斷可以協調它們之間的工作。當外圍設備需要與處理機交換信息時,由外圍設備向處理機發出中斷請求,處理機及時回響並作相應處理。不交換信息時,處理機和外圍設備處於各自獨立的並行工作狀態。②維持系統可靠正常工作。現代計算機中,程式設計師不能直接干預和操縱機器,必須通過中斷系統向作業系統發出請求,由作業系統來實現人為干預。主存儲器中往往有多道程式和各自的存儲空間。在程式運行過程中,如出現越界訪問,有可能引起程式混亂或相互破壞信息。為避免這類事件的發生,由存儲管理部件進行監測,一旦發生越界訪問,向處理機發出中斷請求,處理機立即採取保護措施。③滿足實時處理要求。在實時系統中,各種監測和控制裝置隨機地向處理機發出中斷請求,處理機隨時回響並進行處理。④提供故障現場處理手段。處理機中設有各種故障檢測和錯誤診斷的部件,一旦發現故障或錯誤,立即發出中斷請求,進行故障現場記錄和隔離,為進一步處理提供必要的依據。