91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

嵌入式開發(fā)中中斷與輪詢的內(nèi)涵與區(qū)別

strongerHuang ? 來(lái)源:技術(shù)讓夢(mèng)想更偉大 ? 作者:李肖遙 ? 2021-04-30 11:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

摸水了一周,準(zhǔn)備在家里好好敲敲代碼,趕趕稿子,正當(dāng)我專心輸出的時(shí)候,被老婆打斷了。

娃拉臭了,趕緊過(guò)來(lái)!語(yǔ)氣中帶著一絲絲我害怕的味道。

怎么辦?沒辦法只有過(guò)去換尿布咯,三兩下,搞定!

之后,我繼續(xù)開始肝,但是心想,要是娃再哭鬧了,老婆是不是會(huì)罵人了?想著不行,我得去看看,于是我每隔幾分鐘就去瞅瞅,媳婦看到我這么用心,笑開了花!

是的,從中我也悟出了中斷與輪詢的味道,今天我們來(lái)看看這兩者的內(nèi)涵與區(qū)別。

5b28ae62-a961-11eb-9728-12bb97331649.png

中斷在嵌入式開發(fā)過(guò)程中,使用到處理器的時(shí)候,中斷是我們必不可少的元素。

中斷的基本概念

中斷是一種硬件機(jī)制,在CPU在正常運(yùn)行程序的過(guò)程中,中斷可以隨時(shí)發(fā)生。

由預(yù)選安排或各種隨機(jī)的內(nèi)外部事件,一般稱為中斷源,發(fā)出中斷請(qǐng)求,使CPU中斷正在運(yùn)行的程序,并通過(guò)將控制權(quán)傳遞給服務(wù)設(shè)備的中斷處理程序來(lái)響應(yīng),這個(gè)過(guò)程稱為程序中斷。

5b38f556-a961-11eb-9728-12bb97331649.png

中斷的本質(zhì)

一般認(rèn)為中斷是外部設(shè)備向處理器發(fā)起的請(qǐng)求事件,這還不夠徹底,中斷可以說(shuō)是是處理器對(duì)外開放的實(shí)時(shí)受控接口

比如計(jì)算機(jī)系統(tǒng)中,如果沒有中斷,計(jì)算機(jī)所有的程序都是定論的,我們事先就可以知道其運(yùn)行的全部過(guò)程,無(wú)法交互,相當(dāng)于一個(gè)加速器。

有中斷后,外部服務(wù)程序可能打斷當(dāng)前任務(wù)。

CPU“正在執(zhí)行的程序”與“隨時(shí)可能發(fā)生的服務(wù)”,二者形成了異步關(guān)系,由人實(shí)時(shí)控制的中斷輸入,是無(wú)法預(yù)測(cè)的。

中斷可以看作是一種“硬件輪詢”。即本質(zhì)上,CPU會(huì)通過(guò)讀取外部信號(hào)來(lái)判斷CPU的下一步狀態(tài)。

中斷處理方式

設(shè)備管理中,高速的處理器和低速的輸入輸出設(shè)備相對(duì)來(lái)說(shuō),會(huì)降低整體效率,為了減少程序直接控制方式中CPU的等待時(shí)間,提高系統(tǒng)的并行工作程度,采用中斷處理方式是很有必要的。

在I/O設(shè)備中斷方式下,CPU與I/O設(shè)備之間數(shù)據(jù)的傳輸步驟如下:

在某個(gè)進(jìn)程需要數(shù)據(jù)時(shí),發(fā)出指令啟動(dòng)輸入輸出設(shè)備,準(zhǔn)備要處理的數(shù)據(jù);

在進(jìn)程發(fā)出指令啟動(dòng)設(shè)備之后,該進(jìn)程放棄處理器,等待相關(guān)I/O操作完成。此時(shí),進(jìn)程調(diào)度程序會(huì)調(diào)度其他就緒進(jìn)程使用處理器。

當(dāng)I/O操作完成時(shí),輸入輸出設(shè)備控制器通過(guò)中斷請(qǐng)求線向處理器發(fā)出中斷信號(hào),處理器收到中斷信號(hào)之后,轉(zhuǎn)向預(yù)先設(shè)計(jì)好的中斷處理程序,對(duì)數(shù)據(jù)傳送工作進(jìn)行相應(yīng)的處理。

得到了數(shù)據(jù)的進(jìn)程,轉(zhuǎn)入就緒狀態(tài)。在隨后的某個(gè)時(shí)刻,進(jìn)程調(diào)度程序會(huì)選中該進(jìn)程繼續(xù)工作。

5b4c7162-a961-11eb-9728-12bb97331649.png

CPU是怎么知道中斷發(fā)生的

舉個(gè)例子,比如說(shuō)鍵盤,按下鍵盤Enter鍵時(shí),cpu是怎么樣知道我按下了Enter鍵而不是Shift鍵呢?

首先說(shuō)明cpu不會(huì)知道你按下的哪個(gè)鍵,cpu只會(huì)按著機(jī)器指令的執(zhí)行順序,一條一條的執(zhí)行機(jī)器指令。

cpu只知道按設(shè)計(jì)好的邏輯執(zhí)行指令,不管這個(gè)指令是干嘛的。

知道你按下哪個(gè)鍵的是操作系統(tǒng),操作系統(tǒng)是根據(jù)中斷控制器以及相應(yīng)的寄存器的狀態(tài)判斷是不是中斷。

所以當(dāng)你按下一個(gè)鍵,這個(gè)鍵的地址馬上被寫入RAM中,同時(shí)發(fā)出中斷信號(hào),CPU獲取中斷信號(hào),就會(huì)去執(zhí)行中斷程序。

發(fā)生中斷時(shí)CPU怎么知道程序的地址?

中斷產(chǎn)生時(shí),程序需要跳轉(zhuǎn)到某個(gè)地址去運(yùn)行該段的程序,那么CPU是不是要讀整個(gè)內(nèi)存然后去找中斷向量表呢?

不是的,不需要去讀取整個(gè)內(nèi)存,而是通過(guò)映射的關(guān)系。

例如在x86架構(gòu)中,中斷向量表的位置保存在IDTR寄存器里,CPU通過(guò)這個(gè)寄存器就能找到中斷向量表,然后根據(jù)中斷號(hào)就可以找到具體的中斷入口了。

CPU檢測(cè)到中斷信號(hào)時(shí),怎么知道是發(fā)給哪個(gè)進(jìn)程的?

這個(gè)問(wèn)題是我在知乎上看到的,也是極大激發(fā)我的興趣,對(duì)我們理解中斷也有極大的好處。

首先我們需要知道:中斷并不直接把數(shù)據(jù)送給用戶進(jìn)程的,中斷通知的是驅(qū)動(dòng)程序,而不關(guān)心當(dāng)前正在執(zhí)行的是哪個(gè)進(jìn)程。

而進(jìn)程操作都是一樣的:保存現(xiàn)場(chǎng),進(jìn)入內(nèi)核,執(zhí)行需要的操作,返回中斷前的現(xiàn)場(chǎng),繼續(xù)進(jìn)程執(zhí)行。

5b6b7fe4-a961-11eb-9728-12bb97331649.png

一個(gè)系統(tǒng)的的中斷系統(tǒng)通常是類似這樣的組成,包括設(shè)備的中斷、中斷控制器、CPU的中斷

設(shè)備的中斷

指設(shè)備要產(chǎn)生一個(gè)事件來(lái)通知CPU,事件的產(chǎn)生的方法有很多。對(duì)設(shè)備“關(guān)中斷”,指的是讓這個(gè)設(shè)備停止發(fā)出中斷信號(hào),如果中斷控制器已經(jīng)獲得這個(gè)中斷信號(hào),那么這個(gè)中斷信號(hào)還是會(huì)報(bào)到CPU上的。

中斷控制器

指對(duì)多個(gè)設(shè)備的中斷進(jìn)行采樣,排隊(duì),分發(fā)的機(jī)制。對(duì)中斷控制器說(shuō):關(guān)中斷,是讓中斷控制器不要給CPU(或者上級(jí))發(fā)送中斷信號(hào)了,設(shè)備報(bào)不報(bào)信號(hào)上來(lái),這些信號(hào)是否被排隊(duì),那是另一個(gè)問(wèn)題。

CPU的中斷

指CPU核上有一條中斷線,當(dāng)這條線加上合適的電平或者信號(hào),CPU核就會(huì)從當(dāng)前的執(zhí)行上下文中,直接跳轉(zhuǎn)到中斷處理程序中執(zhí)行。在CPU的角度上關(guān)中斷,就是不要執(zhí)行“跳轉(zhuǎn)到中斷處理程序”這個(gè)動(dòng)作。

中斷方式的優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

I/O設(shè)備中斷方式使處理器的利用率顯著提高;

支持多道程序和I/O設(shè)備的并行操作,提高了效率。

缺點(diǎn)

各種各樣的輸入輸出設(shè)備通過(guò)中斷處理方式進(jìn)行并行操作,使中斷次數(shù)增加,會(huì)造成CPU無(wú)法響應(yīng)中斷;

如果在緩沖區(qū)裝滿數(shù)據(jù)之后發(fā)生中斷。那么在數(shù)據(jù)傳送過(guò)程中,發(fā)生中斷的機(jī)會(huì)較多,將耗去大量的CPU處理時(shí)間。

輪詢什么是輪詢

輪詢是一種CPU決策如何提供周邊設(shè)備服務(wù)的方式。

在輪詢過(guò)程中,由CPU定時(shí)發(fā)出詢問(wèn),依序詢問(wèn)每一個(gè)周邊設(shè)備是否需要其服務(wù)。

每個(gè)設(shè)備都有一個(gè)指示命令就緒的位,指示該設(shè)備的狀態(tài)。

當(dāng)此狀態(tài)就緒即給予服務(wù),服務(wù)結(jié)束后再問(wèn)下一個(gè)周邊,接著不斷周而復(fù)始。

輪詢方式

I/O設(shè)備的程序輪詢是計(jì)算機(jī)系統(tǒng)對(duì)I/O設(shè)備的一種管理方式。它定時(shí)對(duì)各種設(shè)備輪流詢問(wèn)一遍有無(wú)處理要求。

輪流詢問(wèn)之后,有要求的,則加以處理。

在處理I/O設(shè)備的要求之后,處理機(jī)返回繼續(xù)工作。

5bde1e00-a961-11eb-9728-12bb97331649.png

輪詢的優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

在一些應(yīng)用中可以增強(qiáng)了程序的實(shí)時(shí)性。。。

缺點(diǎn)

能處理的輸入輸出設(shè)備的數(shù)量也是有一定限度的。

程序輪詢占用CPU的處理時(shí)間,效率較低。

中斷和輪詢之間的區(qū)別中斷時(shí),設(shè)備會(huì)通知CPU引起注意;而在輪詢中,CPU會(huì)穩(wěn)定地檢查設(shè)備是否需要注意。

中斷不是協(xié)議,而是一種硬件機(jī)制;輪詢反之。

在中斷中,該設(shè)備由中斷處理程序提供服務(wù);輪詢時(shí),該設(shè)備由CPU維修

中斷可以隨時(shí)發(fā)生;輪詢時(shí),CPU會(huì)以固定的間隔穩(wěn)定地對(duì)設(shè)備進(jìn)行投票。

在中斷中,中斷請(qǐng)求線用作指示設(shè)備需要維修的指示;在輪詢時(shí),命令就緒位用作指示,表明設(shè)備需要維修。

在中斷中,一旦任何設(shè)備將其中斷,處理器就會(huì)受到干擾;在輪詢中,處理器通過(guò)重復(fù)檢查每個(gè)設(shè)備的命令就緒位來(lái)浪費(fèi)無(wú)數(shù)的處理器周期。

編輯:jq

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

    關(guān)注

    68

    文章

    20264

    瀏覽量

    252674
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11288

    瀏覽量

    225213
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7339

    瀏覽量

    94829
  • 嵌入式開發(fā)
    +關(guān)注

    關(guān)注

    18

    文章

    1146

    瀏覽量

    50146

原文標(biāo)題:嵌入式開發(fā)中,選中斷還是輪詢方式?

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    嵌入式開發(fā)常用函數(shù)速查表

    嵌入式開發(fā),掌握常用函數(shù)的用法可以大大提高開發(fā)效率。無(wú)論是單片機(jī)初學(xué)者還是有一定經(jīng)驗(yàn)的工程師,熟悉函數(shù)庫(kù)和調(diào)用方式都是必備技能。今天,我們?yōu)榇蠹艺硪环?b class='flag-5'>嵌入式開發(fā)常用函數(shù)速查表,覆
    的頭像 發(fā)表于 01-19 09:06 ?323次閱讀
    <b class='flag-5'>嵌入式開發(fā)</b>常用函數(shù)速查表

    什么是嵌入式應(yīng)用開發(fā)

    概述 所謂的嵌入式應(yīng)用開發(fā)就是在嵌入式操作系統(tǒng)下進(jìn)行開發(fā)、軟硬件綜合開發(fā) ?嵌入式應(yīng)用
    發(fā)表于 01-12 16:13

    中斷還是輪詢?嵌入式外設(shè)驅(qū)動(dòng)的最佳實(shí)踐!

    剛?cè)腴T做嵌入式開發(fā)時(shí),很多人經(jīng)常糾結(jié):用定時(shí)器采集傳感器數(shù)據(jù),是直接while循環(huán)里輪詢標(biāo)志位,還是寫個(gè)中斷函數(shù)?串口收發(fā)數(shù)據(jù)時(shí),是用while(!(USART_SR&RXNE))這種
    的頭像 發(fā)表于 01-04 09:15 ?407次閱讀
    <b class='flag-5'>中斷</b>還是<b class='flag-5'>輪詢</b>?<b class='flag-5'>嵌入式</b>外設(shè)驅(qū)動(dòng)的最佳實(shí)踐!

    性能與性價(jià)比兼得!迅為RK3562開發(fā)板開啟嵌入式開發(fā)新選擇

    性能與性價(jià)比兼得!迅為RK3562開發(fā)板開啟嵌入式開發(fā)新選擇
    的頭像 發(fā)表于 12-23 16:10 ?1348次閱讀
    性能與性價(jià)比兼得!迅為RK3562<b class='flag-5'>開發(fā)</b>板開啟<b class='flag-5'>嵌入式開發(fā)</b>新選擇

    分享一個(gè)嵌入式開發(fā)學(xué)習(xí)路線

    法,這些語(yǔ)法在嵌入式開發(fā)至關(guān)重要。 2. 技能進(jìn)階期(2-3個(gè)月) 從51單片機(jī)過(guò)渡到主流的ARM Cortex-M系列(嵌入式就業(yè)核心平臺(tái)),學(xué)會(huì)使用STM32單片機(jī),掌握嵌入式開發(fā)
    發(fā)表于 12-04 11:01

    C語(yǔ)言在嵌入式開發(fā)的應(yīng)用

    C 語(yǔ)言在汽車電子控制系統(tǒng)開發(fā)的主導(dǎo)地位。 2、設(shè)備驅(qū)動(dòng)程序 設(shè)備驅(qū)動(dòng)程序是嵌入式系統(tǒng)連接硬件和軟件的橋梁,它負(fù)責(zé)實(shí)現(xiàn)嵌入式系統(tǒng)與
    發(fā)表于 11-21 08:09

    嵌入式與FPGA的區(qū)別

    \"嵌入式開發(fā)門檻低、就業(yè)廣,適合轉(zhuǎn)行;FPGA技術(shù)深、薪資高,但要求學(xué)歷和數(shù)學(xué)功底。選哪個(gè)?看你的基礎(chǔ)和職業(yè)目標(biāo)。\" ?我們先來(lái)明白下兩者區(qū)別在哪? ?1、嵌入式:分兩部分
    發(fā)表于 11-20 07:12

    嵌入式開發(fā)的關(guān)鍵點(diǎn)介紹

    嵌入式開發(fā)在現(xiàn)代科技扮演著非常重要的角色。隨著物聯(lián)網(wǎng)的發(fā)展,嵌入式系統(tǒng)的需求也越來(lái)越大。嵌入式開發(fā)不僅需要開發(fā)人員具備深入的硬件知識(shí)和編程
    發(fā)表于 11-13 08:12

    GT2440嵌入式開發(fā)系統(tǒng)用戶手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《GT2440嵌入式開發(fā)系統(tǒng)用戶手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 10-28 17:05 ?2次下載

    恩智浦如何攻克兩大嵌入式開發(fā)難題

    在我們的身邊,嵌入式系統(tǒng)無(wú)處不在。而隨著技術(shù)的進(jìn)步和應(yīng)用的拓展,今天的嵌入式開發(fā)也面臨著諸多新課題、新挑戰(zhàn)。
    的頭像 發(fā)表于 10-27 09:28 ?1814次閱讀

    新一代嵌入式開發(fā)平臺(tái) AMD嵌入式軟件和工具2025.1版現(xiàn)已推出

    AMD 2025.1 版嵌入式軟件和工具是面向新一代嵌入式系統(tǒng)開發(fā)而打造的綜合平臺(tái),全面加速概念構(gòu)想到部署落地。 2025.1 版嵌入式軟件和工具的新 增功能 AMD
    的頭像 發(fā)表于 08-20 09:15 ?4007次閱讀

    嵌入式開發(fā)就業(yè)還有前景嗎?

    嵌入式的發(fā)展前景如何呢?隨著科技的飛速發(fā)展,嵌入式開發(fā)在各個(gè)領(lǐng)域的應(yīng)用越來(lái)越廣泛,因此嵌入式開發(fā)的就業(yè)前景也備受關(guān)注。以下將從智能家居、醫(yī)療設(shè)備、工業(yè)控制、汽車電子、航空航天等方面,探討嵌入式
    發(fā)表于 07-16 10:47

    明遠(yuǎn)智睿SSD2351開發(fā)板:嵌入式開發(fā)領(lǐng)域的新型新星

    在物聯(lián)網(wǎng)、智能家居、智能網(wǎng)關(guān)、視頻監(jiān)控等新興技術(shù)領(lǐng)域迅猛發(fā)展的今天,嵌入式開發(fā)作為這些創(chuàng)新背后的核心驅(qū)動(dòng)力,其重要性日益凸顯。而在嵌入式開發(fā)的眾多環(huán)節(jié)開發(fā)板的選擇無(wú)疑是決定項(xiàng)目成敗
    的頭像 發(fā)表于 07-01 16:47 ?747次閱讀

    嵌入式開發(fā)入門指南:從零開始學(xué)習(xí)嵌入式

    隨著物聯(lián)網(wǎng)、智能硬件的發(fā)展,嵌入式開發(fā)成為熱門技能之一。以下將為初學(xué)者提供一份詳細(xì)的嵌入式開發(fā)入門指南,涵蓋學(xué)習(xí)路徑、必備工具、推薦資源等內(nèi)容。 1. 嵌入式系統(tǒng)的定義與應(yīng)用嵌入式系統(tǒng)
    發(fā)表于 05-15 09:29

    嵌入式開發(fā):高門檻的系統(tǒng)性工程與 996 的行業(yè)困局

    嵌入式開發(fā)的門檻,往往被培訓(xùn)機(jī)構(gòu)和表象所掩蓋。許多人誤以為 “用 C 語(yǔ)言寫個(gè)跑在 ARM 上的程序” 就是嵌入式,實(shí)則連皮毛都未觸及。真正的嵌入式開發(fā)是硬件與軟件深度融合的系統(tǒng)性工程,需跨越三重壁壘
    的頭像 發(fā)表于 04-09 11:06 ?1016次閱讀
    <b class='flag-5'>嵌入式開發(fā)</b>:高門檻的系統(tǒng)性工程與 996 的行業(yè)困局