內核級別的中斷
軟中斷是一種內核級別的中斷,它由CPU直接進入內核中的軟中斷處理程序(也稱爲中斷服務例程ISR)處理,不需要通過物理硬件來觸發。軟中斷通常是由軟件發起的一段特定代碼,例如I/O設備驅動程序向內核發出的請求。與硬件中斷相比,軟中斷的延遲更低,因爲它不會涉及到中斷控制器和IRQ(中斷請求)線路。此外,軟中斷可以進行更復雜和靈活的處理,包括非常規的異步事件處理和內存管理等方面。
軟中斷的概念可以追溯到Linux系統中的“底半處理”,它是爲了適應多CPU、多線程的環境而發展的新的處理方式。軟中斷是利用硬件中斷的概念,用軟件方式進行模擬,實現宏觀上的異步執行效果。在很多情況下,軟中斷和信號有些類似,但它們是不同的概念。信號是由內核(或其他進程)對某個進程的中斷,而軟中斷通常是硬中斷服務程序對內核的中斷。
軟中斷的發生時間是由程序控制的,而硬中斷髮生的時間是隨機的。軟中斷是由程序調用發生的,而硬中斷是由外設引發的。硬件中斷處理程序要確保它能快速地完成它的任務,這樣程序執行時纔不會等待較長時間。
軟中斷也被稱爲同步中斷,例如鍵盤中斷,是由與系統相連的外設(如網卡、硬盤)自動產生的,用來通知操作系統外設狀態的變化。我們一般所說的中斷指的是硬中斷(hardirq),它是由硬件產生的,比如磁盤、網卡、鍵盤、時鐘等設備或設備集都有它自己的IRQ(中斷請求)。