硬中断软中断
硬中斷軟中斷
硬件中斷時通過中斷請求線輸入信號來請求處理機;
軟件中斷是處理機內部識別并進行處理的中斷過程。
硬件中斷一般是由中斷控制器提供中斷碼類型,處理機自動轉向中斷處理程序;
軟件中斷完全有處理機內部形成中斷處理程序的入口地址并轉向中斷處理程序的入口地址,
并轉向中斷處理程序,不需要外部提供信息。
?
詳細參考如下
中斷
中斷指當出現需要時,CPU暫時停止當前程序的執行轉而執行處理新情況的程序和執行過程。即在程序運行過程中,系統出現了一個必須由CPU立即處理的情況,此時,CPU暫時中止程序的執行轉而處理這個新的情況的過程就叫做中斷。
硬件中斷
- 硬件中斷是一個異步信號, 表明需要注意, 或需要改變在執行一個同步事件.
- 硬件中斷是由與系統相連的外設(比如網卡 硬盤 鍵盤等)自動產生的. 每個設備或設備集都有他自己的IRQ(中斷請求), 基于IRQ, CPU可以將相應的請求分發到相應的硬件驅動上(注: 硬件驅動通常是內核中的一個子程序, 而不是一個獨立的進程). 比如當網卡受到一個數據包的時候, 就會發出一個中斷.
- 處理中斷的驅動是需要運行在CPU上的, 因此, 當中斷產生時, CPU會暫時停止當前程序的程序轉而執行中斷請求. 一個中斷只能中斷一顆CPU(也有一種特殊情況, 就是在大型主機上是有硬件通道的, 它可以在沒有主CPU的支持下, 同時處理多個中斷).
- 硬件中斷可以直接中斷CPU. 它會引起內核中相關代碼被觸發. 對于那些需要花費時間去處理的進程, 中斷代碼本身也可以被其他的硬件中斷中斷.
- 對于時鐘中斷, 內核調度代碼會將當前正在運行的代碼掛起, 從而讓其他代碼來運行. 它的存在時為了讓調度代碼(或稱為調度器)可以調度多任務.
軟中斷
- 軟中斷的處理類似于硬中斷. 但是軟中斷僅僅由當前運行的進程產生.
- 通常軟中斷是對一些I/O的請求.
- 軟中斷僅與內核相聯系, 而內核主要負責對需要運行的任何其他進程進行調度.
- 軟中斷不會直接中斷CPU, 也只有當前正在運行的代碼(或進程)才會產生軟中斷. 軟中斷是一種需要內核為正在運行的進程去做一些事情(通常為I/O)的請求.
- 有一個特殊的軟中斷是Yield調用, 它的作用是請求內核調度器去查看是否有一些其他的進程可以運行.
硬件中斷和軟中斷的區別
- 硬件中斷是由外設引發的, 軟中斷是執行中斷指令產生的.
- 硬件中斷的中斷號是由中斷控制器提供的, 軟中斷的中斷號由指令直接指出, 無需使用中斷控制器.
- 硬件中斷是可屏蔽的, 軟中斷不可屏蔽.
- 硬件中斷處理程序要確保它能快速地完成任務, 這樣程序執行時才不會等待較長時間, 稱為上半部.
- 軟中斷處理硬中斷未完成的工作, 是一種推后執行的機制, 屬于下半部.
posted on 2018-07-28 17:57 時空觀察者9號 閱讀(...) 評論(...) 編輯 收藏
總結
- 上一篇: C#中使用DLL相关问题
- 下一篇: 在coursera上有哪些值得推荐的课程