中斷的概念:從本質上來講,中斷是一種電信號,當設備有某種事件發生時,它就會產生中斷,通過總線把電信號發送給中斷控制器。如果中斷的線是激活的,中斷控制器就把電信號發送給處理器的某個特定引腳。處理器於是立即停止自己正在做的事,跳到中斷處理程序的入口點,進行中斷處理。
中斷的作用:中斷通常被定義為一個事件,該事件能夠改變處理器執行指令的順序。這樣的事件與 CPU 芯片內外部硬件電路產生的電信號相對應。有了中斷,單片機不用頻繁地去查詢這些條件是否具備,從而專心地進行工作,但中斷發生時,又可以隨時作出響應。中斷提高了CPU的利用率,也是現代操作系統實現並發執行的重要手段。例如現代操作系統對進程的調度,一般都是采用基於時間片的優先級調度算法,把CPU的時間划分為很細粒度的時間片,一個任務每次只能執行這么多的時間,時間片到了由定時器觸發一個時鍾中斷,CPU收到中斷信號后重新調度進程。
一、軟中斷
軟中斷:軟中斷,是當前正在運行的進程發出的系統調用請求,而產生的中斷。即軟中斷是一種需要內核為正在運行的進程去做一些事情(通常為I/O)的請求.
二、硬中斷
硬中斷:由與系統相連的外設(比如網卡、硬盤)自動產生的。主要是用來通知操作系統系統外設狀態的變化。比如當網卡收到數據包的時候,就會發出一個中斷。我們通常所說的中斷指的是硬中斷(hardirq)。
按照是否可以 被屏蔽,可將中斷分為兩大類:不可屏蔽中斷(又叫非屏蔽中斷)和可屏蔽中斷。不可屏蔽中斷源一旦提出請求,cpu必須無條件響應,而對於可屏蔽中斷源的請求,cpu可以響應,也可以不響應。cup一般設置兩根中斷請求輸入線:可屏蔽中斷請求INTR(Interrupt Require)和不可屏蔽中斷請求NMI(Nonmaskable Interrupt)。對於可屏蔽中斷,除了受本身的屏蔽位的控制外,還都要受一個總的控制,即CPU標志寄存器中的中斷允許標志位IF(Interrupt Flag)的控制,IF位為1,可以得到CPU的響應,否則,得不到響應。IF位可以有用戶控制,指令STI或Turbo c的Enable()函數,將IF位置1(開中斷),指令CLI或Turbo_c 的Disable()函數,將IF位清0(關中斷)。典型的非屏蔽中斷源的例子是電源掉電,一旦出現,必須立即無條件地響應,否則進行其他任何工作都是沒有意義的。典型的可屏蔽中斷源的例子是打印機中斷,CPU對打印機中斷請求的響應可以快一些,也可以慢一些,因為讓打印機等待兒是完全可以的。