《匯編語言程序設計》Richard Blum著:6.2.3中斷
中斷有兩種形式:
(1)硬件中斷;
(2)軟件中斷。
硬件設備生成硬件中斷。
使用硬件中斷發出信號,表示硬件層發生的事件(比如I/O端口接收到輸入信號時)。
程序生成軟件中斷。
它們是把控制交給另一個程序的信號。
當一個程序被中斷調用時,發出調用的程序暫停,被調用的程序接替它運行。指令指針被轉移到被調用的程序,並且從被調用的程序內繼續執行。被調用的程序完成時,它可以把控制返回給發出調用的程序(使用中斷返回指令)。
軟件中斷是操作系統提供的,使應用程序可以使用操作系統內的函數,並且,在某些情況下,甚至可以接觸底層的BIOS系統。在Microsoft DOS操作系統中,為很多函數提供了0x21軟件中斷。在Linux領域,0x80中斷用於提供低級內核函數。
http://blog.sina.com.cn/s/blog_913c070a0100zse4.html
中斷:
1)何時發生可能是不可預料的;CPU正在處理某件事情的時候,外部發生的某一事件(如一個電平的變化,一個脈沖沿的發生或定時器計數溢出等)請求CPU迅速去處理,於是CPU暫時中止當前的工作,轉去處理所發生的事件。中斷服務處理完該事件以后,再回到原來被中止的地方繼續原來的工作
2)對於可剝奪型內核,完成中斷調度后,不是立刻返回原來的執行點執行,而是回到就緒態優先級最高的任務開始運行。
3)沒有返回值;
4)不能傳遞參數。
函數:
1)何時發生是可預料的;
2)完成函數調度后會返回到原來的代碼片段繼續執行;
3)有返回值;
4)能傳遞參數。
相同點:
1)在執行調度之前,都保存現場;
2)都是調用一個subcode。
