软中断和硬中断的区别
生活随笔
收集整理的這篇文章主要介紹了
软中断和硬中断的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
中斷:
中斷指當出現需要時,CPU暫時停止當前程序的執行轉而執行處理新情況的程序和執行過程。即在程序運行過程中,系統出現了一個必須由CPU立即處理的情況,此時,CPU暫時中止程序的執行轉而處理這個新的情況的過程就叫做中斷。
硬中斷
硬件中斷是一個異步信號, 表明需要注意, 或需要改變在執行一個同步事件.
硬件中斷是由與系統相連的外設(比如網卡 硬盤 鍵盤等)自動產生的. 每個設備或設備集都有他自己的IRQ(中斷請求), 基于IRQ, CPU可以將相應的請求分發到相應的硬件驅動上(注: 硬件驅動通常是內核中的一個子程序, 而不是一個獨立的進程). 比如當網卡受到一個數據包的時候, 就會發出一個中斷.
處理中斷的驅動是需要運行在CPU上的, 因此, 當中斷產生時, CPU會暫時停止當前程序的程序轉而執行中斷請求. 一個中斷只能中斷一顆CPU(也有一種特殊情況, 就是在大型主機上是有硬件通道的, 它可以在沒有主CPU的支持下, 同時處理多個中斷).
硬件中斷可以直接中斷CPU. 它會引起內核中相關代碼被觸發. 對于那些需要花費時間去處理的進程, 中斷代碼本身也可以被其他的硬件中斷中斷.
對于時鐘中斷, 內核調度代碼會將當前正在運行的代碼掛起, 從而讓其他代碼來運行. 它的存在時為了讓調度代碼(或稱為調度器)可以調度多任務.
軟中斷
軟中斷的處理類似于硬中斷. 但是軟中斷僅僅由當前運行的進程產生.
通常軟中斷是對一些I/O的請求.
軟中斷僅與內核相聯系, 而內核主要負責對需要運行的任何其他進程進行調度.
軟中斷不會直接中斷CPU, 也只有當前正在運行的代碼(或進程)才會產生軟中斷. 軟中斷是一種需要內核為正在運行的進程去做一些事情(通常為I/O)的請求.
有一個特殊的軟中斷是Yield調用, 它的作用是請求內核調度器去查看是否有一些其他的進程可以運行.
硬件中斷和軟中斷的區別
硬件中斷是由外設引發的, 軟中斷是執行中斷指令產生的.
硬件中斷的中斷號是由中斷控制器提供的, 軟中斷的中斷號由指令直接指出, 無需使用中斷控制器.
硬件中斷是可屏蔽的, 軟中斷不可屏蔽.
硬件中斷處理程序要確保它能快速地完成任務, 這樣程序執行時才不會等待較長時間, 稱為上半部.
軟中斷處理硬中斷未完成的工作, 是一種推后執行的機制, 屬于下半部.
總結
以上是生活随笔為你收集整理的软中断和硬中断的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html+css 小案例(一)
- 下一篇: 江淮瑞风副驾驶a柱上面继电器是什么?