什麼是中斷?什麼是異常?

來源:互聯網
上載者:User

  Linux 核心需要對串連到電腦上的所有硬體裝置進行管理,毫無疑問這是它的份內事。如果要管理這些裝置,首先得和它們互相通訊才行,一般有兩種方案可實現這種功能:
1.輪詢(polling) 讓核心定期對裝置的狀態進行查詢,然後做出相應的處理;
2.中斷(interrupt) 讓硬體在需要的時候向核心發出訊號(變核心主動為硬體主動)。
       第一種方案會讓核心做不少的無用功,因為輪詢總會周期性的重複執行,大量地耗用 CPU 時間,因此效率及其低下,所以一般都是採用第二種方案。

什麼是中斷?

        從物理學的角度看,中斷是一種電訊號,由硬體裝置產生,並直接送入中斷控制器(如 8259A)的輸入引腳上,然後再由中斷控制器向處理器發送相應的訊號。處理器一經檢測到該訊號,便中斷自己當前正在處理的工作,轉而去處理中斷。此後,處理器會通知 OS 已經產生中斷。這樣,OS 就可以對這個中斷進行適當的處理。
        不同的裝置對應的中斷不同,而每個中斷都通過一個唯一的數位識別碼,這些值通常被稱為插斷要求線(IRQ)。

中斷可分為同步(synchronous)中斷和非同步(asynchronous)中斷:
1. 同步中斷是當指令執行時由 CPU 控制單元產生,之所以稱為同步,是因為只有在一條指令執行完畢後 CPU 才會發出中斷,而不是發生在代碼指令執行期間,比如系統調用。
2. 非同步中斷是指由其他硬體裝置依照 CPU 時鐘訊號隨機產生,即意味著中斷能夠在指令之間發生,例如鍵盤中斷。

什麼是異常?

同步中斷又稱為異常(exception),非同步中斷則被稱為中斷(interrupt)。我們通常講的中斷指的都是非同步中斷。
1.中斷可分為可屏蔽中斷(Maskable interrupt)和非屏蔽中斷(Nomaskable interrupt)。
2.異常可分為故障(fault)、陷阱(trap)、終止(abort)三類。

這些類別之間的異同點請參看 表 1。

表 1:中斷類別及其行為

類別      原因                          非同步/同步         返回行為
中斷      來自I/O裝置的訊號 非同步                 總是返回到下一條指令
陷阱      有意的異常               同步                 總是返回到下一條指令
故障      潛在可恢複的錯誤   同步                 返回到當前指令
終止      不可恢複的錯誤       同步                 不會返回

什麼是中斷處理常式?

在響應一個特定中斷的時候,核心會執行一個函數,該函數叫做中斷處理常式或插斷服務常式。產生中斷的每個裝置都有一個相應的中斷處理常式,如果一個裝置可以產生多種不同的中斷,那麼該裝置就可以對應多個中斷處理常式。一個裝置的中斷處理常式是它裝置驅動程式的一部分。

什麼是中斷上半部和下半部?

中斷處理一般分為兩個部分,中斷處理常式是上半部:接收到一個中斷就立即執行,但只做有嚴格時限的工作,這些工作都是在所有中斷被禁止的情況下完成的。能夠被允許稍後完成的工作被延遲到下半部去。通常情況下,下半部會在中斷處理常式返回時立即執行。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.