精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

淺析硬中斷和軟中斷的區別

Q4MP_gh_c472c21 ? 來源:未知 ? 作者:胡薇 ? 2018-10-30 14:34 ? 次閱讀

從本質上來講,中斷是一種電信號,當設備有某種事件發生時,它就會產生中斷,通過總線把電信號發送給中斷控制器

如果中斷的線是激活的,中斷控制器就把電信號發送給處理器的某個特定引腳。處理器于是立即停止自己正在做的事,

跳到中斷處理程序的入口點,進行中斷處理。

硬中斷

由與系統相連的外設(比如網卡、硬盤)自動產生的。主要是用來通知操作系統系統外設狀態的變化。比如當網卡收到數據包的時候,就會發出一個中斷。我們通常所說的中斷指的是硬中斷(hardirq)。

硬中斷是由硬件產生的,比如,像磁盤,網卡,鍵盤,時鐘等。每個設備或設備集都有它自己的IRQ(中斷請求)。基于IRQ,CPU可以將相應的請求分發到對應的硬件驅動上(注:硬件驅動通常是內核中的一個子程序,而不是一個獨立的進程)。

處理中斷的驅動是需要運行在CPU上的,因此,當中斷產生的時候,CPU會中斷當前正在運行的任務,來處理中斷。在有多核心的系統上,一個中斷通常只能中斷一顆CPU(也有一種特殊的情況,就是在大型主機上是有硬件通道的,它可以在沒有主CPU的支持下,可以同時處理多個中斷。)。

硬中斷可以直接中斷CPU。它會引起內核中相關的代碼被觸發。對于那些需要花費一些時間去處理的進程,中斷代碼本身也可以被其他的硬中斷中斷。

對于時鐘中斷,內核調度代碼會將當前正在運行的進程掛起,從而讓其他的進程來運行。它的存在是為了讓調度代碼(或稱為調度器)可以調度多任務。

軟中斷

為了滿足實時系統的要求,中斷處理應該是越快越好。linux為了實現這個特點,當中斷發生的時候,硬中斷處理那些短時間就可以完成的工作,而將那些處理事件比較長的工作,放到中斷之后來完成,也就是軟中斷(softirq)來完成。

軟中斷的處理非常像硬中斷。然而,它們僅僅是由當前正在運行的進程所產生的。

通常,軟中斷是一些對I/O的請求。這些請求會調用內核中可以調度I/O發生的程序。對于某些設備,I/O請求需要被立即處理,而磁盤I/O請求通常可以排隊并且可以稍后處理。根據I/O模型的不同,進程或許會被掛起直到I/O完成,此時內核調度器就會選擇另一個進程去運行。I/O可以在進程之間產生并且調度過程通常和磁盤I/O的方式是相同。

軟中斷僅與內核相聯系。而內核主要負責對需要運行的任何其他的進程進行調度。一些內核允許設備驅動的一些部分存在于用戶空間,并且當需要的時候內核也會調度這個進程去運行。

軟中斷并不會直接中斷CPU。也只有當前正在運行的代碼(或進程)才會產生軟中斷。這種中斷是一種需要內核為正在運行的進程去做一些事情(通常為I/O)的請求。有一個特殊的軟中斷是Yield調用,它的作用是請求內核調度器去查看是否有一些其他的進程可以運行。

中斷嵌套

Linux下硬中斷是可以嵌套的,但是沒有優先級的概念,也就是說任何一個新的中斷都可以打斷正在執行的中斷,但同種中斷除外。軟中斷不能嵌套,但相同類型的軟中斷可以在不同CPU上并行執行。

軟中斷指令

int是軟中斷指令。

中斷向量表是中斷號和中斷處理函數地址的對應表。

int n - 觸發軟中斷n。相應的中斷處理函數的地址為:中斷向量表地址 + 4 * n。

硬中斷和軟中斷的區別

軟中斷是執行中斷指令產生的,而硬中斷是由外設引發的。

硬中斷的中斷號是由中斷控制器提供的,軟中斷的中斷號由指令直接指出,無需使用中斷控制器。

硬中斷是可屏蔽的,軟中斷不可屏蔽。

硬中斷處理程序要確保它能快速地完成任務,這樣程序執行時才不會等待較長時間,稱為上半部。

軟中斷處理硬中斷未完成的工作,是一種推后執行的機制,屬于下半部。

開關

(1) 硬中斷的開關

簡單禁止和激活當前處理器上的本地中斷:

local_irq_disable();

local_irq_enable();

保存本地中斷系統狀態下的禁止和激活:

unsigned long flags;

local_irq_save(flags);

local_irq_restore(flags);

(2) 軟中斷的開關

禁止下半部,如softirq、tasklet和workqueue等:

local_bh_disable();

local_bh_enable();

需要注意的是,禁止下半部時仍然可以被硬中斷搶占。

(3) 判斷中斷狀態

#define in_interrupt() (irq_count())// 是否處于中斷狀態(硬中斷或軟中斷)

#define in_irq()(hardirq_count()) // 是否處于硬中斷

#define in_softirq() (softirq_count()) // 是否處于軟中斷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 總線
    +關注

    關注

    10

    文章

    2866

    瀏覽量

    87986
  • 中斷控制器
    +關注

    關注

    0

    文章

    59

    瀏覽量

    9441

原文標題:硬中斷與軟中斷是怎么回事?

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    NXP的ARM7帶ucos中中斷中斷響應詳細分析

    NXP的ARM7帶ucos中中斷中斷響應詳細分析一.帶UCOS系統的中斷響應過程 11.
    發表于 12-02 17:32

    請問一下中斷的問題如何解決

    我想讓程序運行到某一行時產生一個中斷,是不是用中斷的方式及調用EXTI_GenerateSWInterrupt()這個函數,還有什么其他的方法沒有。如果只用
    發表于 05-25 09:51

    什么是中斷以及中斷

    同步中斷,是指CPU內部出現的中斷,即在CPU執行特定指令時出現的非法情況,因此只有在一條指令執行后才會發出中斷,不可能在指令執行期間發生異常。
    發表于 01-10 07:26

    面向嵌入式Linux系統的中斷設計與實現

    本文在分析標準Linux 內核的中斷機制的演化以及實現原理的基礎上,提出并實現了一個面前嵌入式Linux 系統的中斷技術。該技術為嵌入式系統開發提供一個統一的
    發表于 08-03 11:20 ?16次下載

    液晶屏和屏的區別

    液晶屏和屏的區別:現在的液晶電視市場中流傳著 “屏”和“屏”的說法,通常來說,屏是指I
    發表于 07-16 11:48 ?6476次閱讀
    液晶<b class='flag-5'>硬</b>屏和<b class='flag-5'>軟</b>屏的<b class='flag-5'>區別</b>

    中斷程序設計

    實 驗 五  中斷程序設計 一、實驗目的    通過對中斷程序的編寫和調試,掌握IBM-PC系列機的
    發表于 09-28 23:26 ?2709次閱讀
    <b class='flag-5'>軟</b><b class='flag-5'>中斷</b>程序設計

    壓縮與壓縮的區別

    壓縮與壓縮的區別 目前市面上流行的硬盤錄象卡主要有壓縮硬盤錄象卡與壓縮硬盤錄象卡兩大類。 1)
    發表于 12-29 14:00 ?2061次閱讀

    Linux 2.4.x內核中斷機制

    情況下,中斷和信號有些類似,同時,中斷又是和中斷相對應的,
    發表于 11-02 11:01 ?0次下載

    探究中斷中斷的原理和區別

    從本質上來講,中斷是一種電信號,當設備有某種事件發生時,它就會產生中斷,通過總線把電信號發送給中斷控制器。
    的頭像 發表于 01-17 09:38 ?1.1w次閱讀
    探究<b class='flag-5'>硬</b><b class='flag-5'>中斷</b>和<b class='flag-5'>軟</b><b class='flag-5'>中斷</b>的原理和<b class='flag-5'>區別</b>

    你了解中斷中斷區別

    從本質上來講,中斷是一種電信號,當設備有某種事件發生時,它就會產生中斷,通過總線把電信號發送給中斷控制器。
    發表于 05-05 11:48 ?1.8w次閱讀

    微機原理——8086中斷類型以及中斷向量表、中斷響應、中斷返回

    這里寫目錄標題先驗知識回顧控制寄存器回顧1、8086中斷類型1、外部可屏蔽中斷2、外部不可屏蔽中斷3、除法錯中斷4、單步中斷5、斷點
    發表于 11-24 16:51 ?16次下載
    微機原理——8086<b class='flag-5'>中斷</b>類型以及<b class='flag-5'>中斷</b>向量表、<b class='flag-5'>中斷</b>響應、<b class='flag-5'>中斷</b>返回

    中斷中斷是怎么回事?

    立即停止自己正在做的事, 跳到中斷處理程序的入口點,進行中斷處理。 中斷 由與系統相連的外設(比如網卡、硬盤)自動產生的。主要是用來通知操作系統系統外設狀態的變化。比如當網卡收到數
    發表于 02-10 12:02 ?0次下載
    <b class='flag-5'>硬</b><b class='flag-5'>中斷</b>與<b class='flag-5'>軟</b><b class='flag-5'>中斷</b>是怎么回事?

    中斷中斷介紹

    ? 中斷是由外部事件引起的因此具有隨機性和突發性;中斷是否可以嵌套的,是否有優先級(由硬件設計體系決定)。 ?
    的頭像 發表于 11-07 17:02 ?836次閱讀

    什么是LInux 操作系統中斷

    進程來持有CPU進行需要的操作! 有了中斷之后,提升了操作系統的性能!可以異步并行處理很多任務! 中斷(80中斷) 由CPU產生的;CPU檢查到程序代碼段發生異常會切換到內核態;
    的頭像 發表于 11-10 11:29 ?602次閱讀
    什么是LInux 操作系統<b class='flag-5'>中斷</b>

    LInux 操作系統中斷介紹

    進程來持有CPU進行需要的操作! 有了中斷之后,提升了操作系統的性能!可以異步并行處理很多任務! 中斷(80中斷) 由CPU產生的;CPU檢查到程序代碼段發生異常會切換到內核態;
    的頭像 發表于 11-13 11:36 ?865次閱讀
    LInux 操作系統<b class='flag-5'>中斷</b>介紹