當我在尋找異常和中斷的區別, 我發現這個問題Interrupts and exceptions上SO ...異常和中斷
一些答案有不適合(至少在彙編級):
「異常是軟件版本的中斷」但是存在軟件中斷!
「中斷是異步的,但異常是同步的」對不對?
「中斷經常發生」
「中斷的硬件實現的陷阱,例外軟件實現」同上!
我需要找到,如果一些這些答案是正確的,也是我將不勝感激,如果有人可以提供一個更好的答案...
謝謝!
當我在尋找異常和中斷的區別, 我發現這個問題Interrupts and exceptions上SO ...異常和中斷
一些答案有不適合(至少在彙編級):
「異常是軟件版本的中斷」但是存在軟件中斷!
「中斷是異步的,但異常是同步的」對不對?
「中斷經常發生」
「中斷的硬件實現的陷阱,例外軟件實現」同上!
我需要找到,如果一些這些答案是正確的,也是我將不勝感激,如果有人可以提供一個更好的答案...
謝謝!
中斷通常是一種通知硬件狀態發生變化的方法。外圍設備將通過電信號連接到中斷控制器,該中斷控制器爲每個可能的信號分配地址向量的優先級和分配地址。中斷控制器將檢測到的中斷條件轉發給CPU,中斷條件可以或不可以「中斷」其當前執行狀態以處理髮信號通知的狀態改變(取決於中斷是否被使能和/或該特定輸入是否是不可屏蔽的)。在硬件輸入之外,中斷條件可能在某些體系結構中由軟件啓動(例如在x86上有一個int助記符)。
異常涉及更大範圍的實施。在一些CPU架構(如68K)中,異常可能與中斷類似,但是由某些需要處理的CPU狀態生成。例如,存在產生異常的條件,例如除以零,非法指令,I/O總線超時等。通過處理這些例外,可以做一些事情,例如模擬指令並虛擬擴展指令集。
異常也可能是純軟件概念,例如在C++語言中可能會捕獲和處理某些錯誤條件。
因此,一般來說,您試圖找到有效性的陳述可能是真或假,具體取決於您應用的確切平臺。
最常使用的一個例外是編程語言中的一種控制流程,用於處理程序正常邏輯流程之外的事件,以避免程序的業務邏輯在錯誤處理邏輯中淹沒。異常的「處理」是特定於上下文的。它更像是一種GoTo,適用於許多有用的用例。
中斷是硬件輔助的「陷阱」,當某些事件發生時觸發某些操作,如計時器滴答或程序「調用」INT21。有一個處理程序註冊了一些預定義的東西。
兩者可能是也可能不是同步的或異步的。