在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

探究硬中斷和軟中斷的原理和區(qū)別

MCU開發(fā)加油站 ? 來源:未知 ? 作者:胡薇 ? 2019-01-17 09:38 ? 次閱讀

從本質(zhì)上來講,中斷是一種電信號(hào),當(dāng)設(shè)備有某種事件發(fā)生時(shí),它就會(huì)產(chǎn)生中斷,通過總線把電信號(hào)發(fā)送給中斷控制器

如果中斷的線是激活的,中斷控制器就把電信號(hào)發(fā)送給處理器的某個(gè)特定引腳。處理器于是立即停止自己正在做的事,跳到中斷處理程序的入口點(diǎn),進(jìn)行中斷處理。

硬中斷

由與系統(tǒng)相連的外設(shè)(比如網(wǎng)卡、硬盤)自動(dòng)產(chǎn)生的。主要是用來通知操作系統(tǒng)系統(tǒng)外設(shè)狀態(tài)的變化。比如當(dāng)網(wǎng)卡收到數(shù)據(jù)包的時(shí)候,就會(huì)發(fā)出一個(gè)中斷。我們通常所說的中斷指的是硬中斷(hardirq)。

硬中斷是由硬件產(chǎn)生的,比如,像磁盤,網(wǎng)卡,鍵盤,時(shí)鐘等。每個(gè)設(shè)備或設(shè)備集都有它自己的IRQ(中斷請(qǐng)求)。基于IRQ,CPU可以將相應(yīng)的請(qǐng)求分發(fā)到對(duì)應(yīng)的硬件驅(qū)動(dòng)上(注:硬件驅(qū)動(dòng)通常是內(nèi)核中的一個(gè)子程序,而不是一個(gè)獨(dú)立的進(jìn)程)。

處理中斷的驅(qū)動(dòng)是需要運(yùn)行在CPU上的,因此,當(dāng)中斷產(chǎn)生的時(shí)候,CPU會(huì)中斷當(dāng)前正在運(yùn)行的任務(wù),來處理中斷。在有多核心的系統(tǒng)上,一個(gè)中斷通常只能中斷一顆CPU(也有一種特殊的情況,就是在大型主機(jī)上是有硬件通道的,它可以在沒有主CPU的支持下,可以同時(shí)處理多個(gè)中斷。)。

硬中斷可以直接中斷CPU。它會(huì)引起內(nèi)核中相關(guān)的代碼被觸發(fā)。對(duì)于那些需要花費(fèi)一些時(shí)間去處理的進(jìn)程,中斷代碼本身也可以被其他的硬中斷中斷。

對(duì)于時(shí)鐘中斷,內(nèi)核調(diào)度代碼會(huì)將當(dāng)前正在運(yùn)行的進(jìn)程掛起,從而讓其他的進(jìn)程來運(yùn)行。它的存在是為了讓調(diào)度代碼(或稱為調(diào)度器)可以調(diào)度多任務(wù)。

軟中斷

為了滿足實(shí)時(shí)系統(tǒng)的要求,中斷處理應(yīng)該是越快越好。linux為了實(shí)現(xiàn)這個(gè)特點(diǎn),當(dāng)中斷發(fā)生的時(shí)候,硬中斷處理那些短時(shí)間就可以完成的工作,而將那些處理事件比較長(zhǎng)的工作,放到中斷之后來完成,也就是軟中斷(softirq)來完成。

軟中斷的處理非常像硬中斷。然而,它們僅僅是由當(dāng)前正在運(yùn)行的進(jìn)程所產(chǎn)生的。

通常,軟中斷是一些對(duì)I/O的請(qǐng)求。這些請(qǐng)求會(huì)調(diào)用內(nèi)核中可以調(diào)度I/O發(fā)生的程序。對(duì)于某些設(shè)備,I/O請(qǐng)求需要被立即處理,而磁盤I/O請(qǐng)求通常可以排隊(duì)并且可以稍后處理。根據(jù)I/O模型的不同,進(jìn)程或許會(huì)被掛起直到I/O完成,此時(shí)內(nèi)核調(diào)度器就會(huì)選擇另一個(gè)進(jìn)程去運(yùn)行。I/O可以在進(jìn)程之間產(chǎn)生并且調(diào)度過程通常和磁盤I/O的方式是相同。

軟中斷僅與內(nèi)核相聯(lián)系。而內(nèi)核主要負(fù)責(zé)對(duì)需要運(yùn)行的任何其他的進(jìn)程進(jìn)行調(diào)度。一些內(nèi)核允許設(shè)備驅(qū)動(dòng)的一些部分存在于用戶空間,并且當(dāng)需要的時(shí)候內(nèi)核也會(huì)調(diào)度這個(gè)進(jìn)程去運(yùn)行。

軟中斷并不會(huì)直接中斷CPU。也只有當(dāng)前正在運(yùn)行的代碼(或進(jìn)程)才會(huì)產(chǎn)生軟中斷。這種中斷是一種需要內(nèi)核為正在運(yùn)行的進(jìn)程去做一些事情(通常為I/O)的請(qǐng)求。有一個(gè)特殊的軟中斷是Yield調(diào)用,它的作用是請(qǐng)求內(nèi)核調(diào)度器去查看是否有一些其他的進(jìn)程可以運(yùn)行。

中斷嵌套

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

軟中斷指令

int是軟中斷指令。

中斷向量表是中斷號(hào)和中斷處理函數(shù)地址的對(duì)應(yīng)表。

int n - 觸發(fā)軟中斷n。相應(yīng)的中斷處理函數(shù)的地址為:中斷向量表地址 + 4 * n。

硬中斷和軟中斷的區(qū)別

軟中斷是執(zhí)行中斷指令產(chǎn)生的,而硬中斷是由外設(shè)引發(fā)的。

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

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

硬中斷處理程序要確保它能快速地完成任務(wù),這樣程序執(zhí)行時(shí)才不會(huì)等待較長(zhǎng)時(shí)間,稱為上半部。

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

開關(guān)

(1) 硬中斷的開關(guān)

簡(jiǎn)單禁止和激活當(dāng)前處理器上的本地中斷:local_irq_disable();local_irq_enable();

保存本地中斷系統(tǒng)狀態(tài)下的禁止和激活:unsigned long flags;local_irq_save(flags);local_irq_restore(flags);

(2) 軟中斷的開關(guān)

禁止下半部,如softirq、tasklet和workqueue等:local_bh_disable();local_bh_enable();

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

(3) 判斷中斷狀態(tài)

#define in_interrupt() (irq_count()) // 是否處于中斷狀態(tài)(硬中斷或軟中斷)#define in_irq() (hardirq_count()) // 是否處于硬中斷#define in_softirq() (softirq_count()) // 是否處于軟中斷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    114

    文章

    16988

    瀏覽量

    183064
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    904

    瀏覽量

    42538

原文標(biāo)題:硬中斷與軟中斷是怎么回事?

文章出處:【微信號(hào):mcugeek,微信公眾號(hào):MCU開發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    NXP的ARM7帶ucos中中斷中斷響應(yīng)詳細(xì)分析

    NXP的ARM7帶ucos中中斷中斷響應(yīng)詳細(xì)分析一.帶UCOS系統(tǒng)的中斷響應(yīng)過程 11.
    發(fā)表于 12-02 17:32

    請(qǐng)問一下中斷的問題如何解決

    我想讓程序運(yùn)行到某一行時(shí)產(chǎn)生一個(gè)中斷,是不是用中斷的方式及調(diào)用EXTI_GenerateSWInterrupt()這個(gè)函數(shù),還有什么其他的方法沒有。如果只用
    發(fā)表于 05-25 09:51

    定時(shí)器中斷類型探究 精選資料分享

     一直在用的stm32定時(shí)器的中斷都是TIM_IT_Update更新中斷,也沒問為什么,直到碰到有人使用TIM_IT_CC1中斷,才想到這定時(shí)器的中斷類型究竟有什么
    發(fā)表于 08-13 06:28

    什么是中斷以及中斷

    同步中斷,是指CPU內(nèi)部出現(xiàn)的中斷,即在CPU執(zhí)行特定指令時(shí)出現(xiàn)的非法情況,因此只有在一條指令執(zhí)行后才會(huì)發(fā)出中斷,不可能在指令執(zhí)行期間發(fā)生異常。
    發(fā)表于 01-10 07:26

    液晶屏和屏的區(qū)別

    液晶屏和屏的區(qū)別:現(xiàn)在的液晶電視市場(chǎng)中流傳著 “屏”和“屏”的說法,通常來說,屏是指I
    發(fā)表于 07-16 11:48 ?6697次閱讀
    液晶<b class='flag-5'>硬</b>屏和<b class='flag-5'>軟</b>屏的<b class='flag-5'>區(qū)別</b>

    中斷程序設(shè)計(jì)

    實(shí) 驗(yàn) 五  中斷程序設(shè)計(jì) 一、實(shí)驗(yàn)?zāi)康?nbsp;   通過對(duì)中斷程序的編寫和調(diào)試,掌握IBM-PC系列機(jī)的
    發(fā)表于 09-28 23:26 ?2884次閱讀
    <b class='flag-5'>軟</b><b class='flag-5'>中斷</b>程序設(shè)計(jì)

    壓縮與壓縮的區(qū)別

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

    Linux 2.4.x內(nèi)核中斷機(jī)制

    情況下,中斷和信號(hào)有些類似,同時(shí),中斷又是和中斷相對(duì)應(yīng)的,
    發(fā)表于 11-02 11:01 ?0次下載

    淺析中斷中斷區(qū)別

    從本質(zhì)上來講,中斷是一種電信號(hào),當(dāng)設(shè)備有某種事件發(fā)生時(shí),它就會(huì)產(chǎn)生中斷,通過總線把電信號(hào)發(fā)送給中斷控制器。
    的頭像 發(fā)表于 10-30 14:34 ?5781次閱讀
    淺析<b class='flag-5'>硬</b><b class='flag-5'>中斷</b>和<b class='flag-5'>軟</b><b class='flag-5'>中斷</b>的<b class='flag-5'>區(qū)別</b>

    你了解中斷中斷區(qū)別

    從本質(zhì)上來講,中斷是一種電信號(hào),當(dāng)設(shè)備有某種事件發(fā)生時(shí),它就會(huì)產(chǎn)生中斷,通過總線把電信號(hào)發(fā)送給中斷控制器。
    發(fā)表于 05-05 11:48 ?1.8w次閱讀

    微機(jī)原理——8086中斷類型以及中斷向量表、中斷響應(yīng)、中斷返回

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

    中斷中斷是怎么回事?

    立即停止自己正在做的事, 跳到中斷處理程序的入口點(diǎn),進(jìn)行中斷處理。 中斷 由與系統(tǒng)相連的外設(shè)(比如網(wǎng)卡、硬盤)自動(dòng)產(chǎn)生的。主要是用來通知操作系統(tǒng)系統(tǒng)外設(shè)狀態(tài)的變化。比如當(dāng)網(wǎng)卡收到數(shù)
    發(fā)表于 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>是怎么回事?

    中斷中斷介紹

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

    什么是LInux 操作系統(tǒng)中斷

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

    LInux 操作系統(tǒng)中斷介紹

    進(jìn)程來持有CPU進(jìn)行需要的操作! 有了中斷之后,提升了操作系統(tǒng)的性能!可以異步并行處理很多任務(wù)! 中斷(80中斷) 由CPU產(chǎn)生的;CPU檢查到程序代碼段發(fā)生異常會(huì)切換到內(nèi)核態(tài);
    的頭像 發(fā)表于 11-13 11:36 ?1198次閱讀
    LInux 操作系統(tǒng)<b class='flag-5'>中斷</b>介紹
    主站蜘蛛池模板: 男子扒开美女尿口做羞羞的事 | 久久精品国产精品亚洲红杏 | 日韩精品免费一级视频 | 一级片+国产 | 久久五月天婷婷 | 天天躁狠狠躁夜躁2021 | 久久这里只精品热在线8 | 手机免费看a| 网站一级片 | 色88888久久久久久影院 | 四虎4hu永久免费国产精品 | xxxx久久 | 天堂一区二区三区在线观看 | 伊人久久综合成人网小说 | 米奇777色狠狠8888影视 | 国产亚洲综合精品一区二区三区 | 午夜影院免费观看视频 | 天堂a免费视频在线观看 | 国产视频分类 | 三级网址在线播放 | 四虎影院永久免费观看 | 1024手机看片国产旧版你懂的 | 永久免费的啪啪免费的网址 | 人人艹人人插 | 午夜日本一区二区三区 | 午夜网站视频 | 色老头久久久久 | 国产视频一区二区在线观看 | 影音先锋 色天使 | 美女黄网站 | 久久婷婷成人综合色 | 亚洲精品卡1卡二卡3卡四卡 | 扒开末成年粉嫩的小缝强文 | 亚洲国产精品国产自在在线 | 天天在线天天在线天天影视 | 五月婷婷伊人网 | 黄色网毛片 | 国产情侣出租屋露脸实拍 | 扒开双腿疯狂进出爽爽爽 | 日韩一级片免费看 | 一区二区手机视频 |