中斷和異常的區別


儘管中斷和異常是兩個不同的概念,但它們之間存在關聯,因為它們都迫使中央處理單元 (CPU) 停止指令的正常執行流程,轉而開始執行核心空間中的另一個程式以處理當前問題。即使中斷和異常是不同的概念,這一點也是正確的。主要區別在於它們處理系統、處理器或甚至程式本身中可能發生的不可預測事件的方式。

什麼是中斷?

中斷是由連線到計算機的外部裝置或系統本身正在執行的程式向計算機的中央處理單元 (CPU) 傳送的一個訊號,該訊號要求作業系統干預當前程序。

顧名思義,中斷是突然發生的事件,會使系統正在執行的指令的連續流程停止。它指示作業系統立即採取以下步驟。這些不可預測的事件通常與 I/O 裝置相關聯,I/O 裝置主要負責與外部世界通訊。例如,當您按下鍵盤上的某個鍵或移動滑鼠時,就會產生硬體中斷。

這些中斷會導致中央處理單元 (CPU) 讀取按鍵或滑鼠移動。當發生中斷時,中央處理單元 (CPU) 會執行一個稱為“中斷處理例程”或“中斷處理程式”的功能來處理最初觸發中斷的情況。

一旦檢測到中斷,控制權就會轉移到作業系統,這會提示作業系統開始採取快速行動。中斷是按優先順序排序的,這意味著優先順序高的中斷需要快速處理,並且必須在優先順序低的中斷之前處理。

異常有 4 種不同的類別:**中斷、故障、中止**和**陷阱**。儘管中斷是一種異常,但兩者之間存在一些關鍵區別。

  • **陷阱** - 通常,它是一種同步中斷,每當發生異常情況(例如,斷點、除以零、無效記憶體訪問)時就會觸發。

  • **故障** - 客戶端應用程式將使用故障異常來捕獲 SOAP 中已在合同中指定的故障。您無法根據標準異常訊息確定錯誤的原因;因此,故障異常非常有用。

  • **中止** - 每當指令執行獲取結果導致錯誤時,就會丟擲此類異常的例項。

什麼是異常?

“異常”一詞是“異常事件”的縮寫,它描述了可能在系統、處理器或程式中的任何地方發生的意外事件,並需要中央處理單元 (CPU) 的注意。與中斷類似,異常會使程式執行期間指令的正常流程發生偏離。

但是,與中斷不同,異常發生在程式執行期間,並且非常特殊,程式本身無法處理。例如,如果您向處理器發出將數字除以零的命令,它將發出除以零異常,這會導致計算機停止操作或顯示錯誤通知。

當發生錯誤時,中央處理單元 (CPU) 會停止當前正在執行的程序,並立即透過呼叫特定的異常處理程式函式對錯誤做出反應,該函式根據執行的型別而有所不同。

一般來說,異常可以分為兩類:處理器注意到的異常和程式建立的異常。第一類異常是在中央處理單元 (CPU) 在執行指令時發現任何不規則情況時引發的,而第二類異常是在程式設計師特別請求時引發的。

中斷和異常的區別

“中斷”一詞是指屬於“異常”總稱的一類。其他異常類包括“故障”、“陷阱”和“中止”。中斷和異常都會突然停止正在執行的指令的執行。異常和中斷具有相同的效果。

中斷是按優先順序排序的,這意味著優先順序最高的中斷(需要立即處理)首先得到處理。每當 CPU 遇到中斷或異常時,它都會執行中斷處理程式或異常處理程式,並且它會在暫停當前正在執行的程序時執行此操作。一旦處理程式執行完成,處理器就會立即恢復暫停的程序的控制權。

下表重點介紹了中斷和異常之間的主要區別 -

比較依據
中斷
異常
同義詞
被稱為硬體中斷。
被稱為軟體中斷。
操作
在大多數情況下,一個硬體中斷的發生會使所有其他硬體中斷的操作失效。
就異常而言,這不是一個有效的情況。
服務
這些是非同步外部服務請求(例如鍵盤或印表機需要服務)。
這些是由異常事件觸發的同步內部服務請求(想想非法指令、非法地址、溢位等)。
程式
中斷可能發生在程式的任何點,因為它是非同步的。
由於異常是同步的,因此當程式中發生異常事件時(例如除以零或非法記憶體位置)就會發生。
事件
這些是正常事件,不應干擾計算機的正常執行。
這些是不尋常的事件,通常會導致程式終止。
來源
當按下鍵盤上的某個鍵或移動滑鼠時,會產生硬體中斷。這些中斷指示 CPU 讀取檢測到的按鍵或滑鼠移動。程式執行期間發生的錯誤可能會導致軟體中斷,通常稱為異常。
異常可能發生在系統、處理器或程式中的任何地方,並且每個異常都需要中央處理單元 (CPU) 的注意。例如,如果您向處理器發出將數字除以零的命令,它將發出除以零異常,這會導致計算機停止操作或顯示錯誤通知。

結論

中斷和異常都是可能發生在系統、處理器或程式中的任何地方的意外事件,並且需要中央處理單元 (CPU) 的立即注意。這兩者都會立即停止正在執行的指令的正在進行的流程。

每當 CPU 遇到中斷或異常時,它都會執行中斷處理程式或異常處理程式,並且它會在暫停當前正在執行的程序時執行此操作。一旦處理程式執行完成,處理器就會立即恢復暫停的程序的控制權。

如果有多箇中斷,則應首先處理優先順序最高的中斷。異常是從處理器內部生成的,而中斷是由外部事件引起的,這是這兩個情況之間最顯著的區別之一。

更新於: 2022 年 7 月 5 日

6K+ 次檢視

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告