天天看點

硬體中斷和軟體中斷以及中斷與函數調用的差別

《彙編語言程式設計》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)能傳遞參數。

繼續閱讀