硬件中斷與軟件中斷的區別

中斷

中斷指當出現需要時,CPU暫時停止當前程序的執行轉而執行處理新情況的程序和執行過程。即在程序運行過程中,系統出現了一個必須由CPU立即處理的情況,此時,CPU暫時中止程序的執行轉而處理這個新的情況的過程就叫做中斷。

硬件中斷

硬件中斷是一個異步信號, 表明需要注意, 或需要改變在執行一個同步事件.
硬件中斷是由與系統相連的外設(比如網卡 硬盤 鍵盤等)自動產生的. 每個設備或設備集都有他自己的IRQ(中斷請求), 基於IRQ, CPU可以將相應的請求分發到相應的硬件驅動上(注: 硬件驅動通常是內核中的一個子程序, 而不是一個獨立的進程). 比如當網卡受到一個數據包的時候, 就會發出一箇中斷.
處理中斷的驅動是需要運行在CPU上的, 因此, 當中斷產生時, CPU會暫時停止當前程序的程序轉而執行中斷請求. 一箇中斷只能中斷一顆CPU(也有一種特殊情況, 就是在大型主機上是有硬件通道的, 它可以在沒有主CPU的支持下, 同時處理多箇中斷).
硬件中斷可以直接中斷CPU. 它會引起內核中相關代碼被觸發. 對於那些需要花費時間去處理的進程, 中斷代碼本身也可以被其他的硬件中斷中斷.
對於時鐘中斷, 內核調度代碼會將當前正在運行的代碼掛起, 從而讓其他代碼來運行. 它的存在時爲了讓調度代碼(或稱爲調度器)可以調度多任務.

軟中斷

軟中斷的處理類似於硬中斷. 但是軟中斷僅僅由當前運行的進程產生.
通常軟中斷是對一些I/O的請求.
軟中斷僅與內核相聯繫, 而內核主要負責對需要運行的任何其他進程進行調度.
軟中斷不會直接中斷CPU, 也只有當前正在運行的代碼(或進程)纔會產生軟中斷. 軟中斷是一種需要內核爲正在運行的進程去做一些事情(通常爲I/O)的請求.
有一個特殊的軟中斷是Yield調用, 它的作用是請求內核調度器去查看是否有一些其他的進程可以運行.

硬件中斷和軟中斷的區別

硬件中斷是由外設引發的, 軟中斷是執行中斷指令產生的.
硬件中斷的中斷號是由中斷控制器提供的, 軟中斷的中斷號由指令直接指出, 無需使用中斷控制器.
硬件中斷是可屏蔽的, 軟中斷不可屏蔽.
硬件中斷處理程序要確保它能快速地完成任務, 這樣程序執行時纔不會等待較長時間, 稱爲上半部.
軟中斷處理硬中斷未完成的工作, 是一種推後執行的機制, 屬於下半部.

————————————————
版權聲明:本文爲CSDN博主「dela_」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/dela_/article/details/52751388

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章