終於講完了同步機制,了解到當今電腦為了更多的併行行程,與更多的CPU,在同步機制上做了許多努力,從mutex, semaphore.... 到最後的RCU ,都讓我大開眼界,今天要來講重要的機制---中斷。
中斷是指在CPU運行時,由於內外部事件或由行程預先安排的事件引起的,此時CPU會暫時停止正在運行的行程,轉而處理該內部或外部事件或預先安排的事件服務的行程中去,服務完畢後再返回去繼續運行被暫時中斷的程序。
同步中斷由CPU本身產生,又稱為內部中斷。這裏同步是指中斷請求信號與代碼指令之間的同步執行,在一條指令執行完畢後,CPU才能進行中斷,不能在指令的執行期間。所以也稱為異常(exception)。
異步中斷是由外部硬件設備產生,又稱為外部中斷,與同步中斷相反,異步中斷可在任何時間產生,包括指令執行期間,所以也被稱為中斷(interrupt)。
一般來說,中斷可以分為上下半部中斷,為什麼需要有這樣的規範呢?
在第一點中的局限性有以下幾點:
所以總歸來說,將interrupt 切為上下半部的理由就是想要降低interrupt的latency (中斷處理的延遲),上半部會負責接收硬體中斷的訊號,下半部會執行比較冗長的處理過程。
對於上半部的屬性與要求有: