日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【软件开发底层知识修炼】二 深入浅出处理器之二 中断的概念与意义

發(fā)布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【软件开发底层知识修炼】二 深入浅出处理器之二 中断的概念与意义 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習交流加

  • 個人qq:
    1126137994
  • 個人微信:
    liu1126137994
  • 學習交流資源分享qq群:
    962535112

上一篇文章我們學習了微處理器與微控制器的區(qū)別。點擊鏈接查看上一篇文章的內容:微處理器與微控制器

本篇文章我們學習中斷的概念與意義。本片文章只學習中斷概念與意義,并不深入研究中斷向量表與ISR中斷服務程序的實現。同時本片文章講解一個與中斷有關的應用:斷點調試。當然具體的斷點調試方法會在后面講解,本次只是說明中斷在斷點調試中的應用。

文章目錄

  • 1、中斷的概念與意義
    • 1.2、 中斷的概念
    • 1.2、中斷的意義
    • 1.3、中斷的類型
    • 1.4、中斷的優(yōu)先級
  • 2、中斷的應用-斷點調試
    • 2.2、什么是程序的斷點?
    • 2.2、 程序斷點的實現原理
  • 3、總結

1、中斷的概念與意義

1.2、 中斷的概念

  • 中斷是一種處理器與外設進行通信的機制(在我們學習了信號機制,會發(fā)現不一定是與外設之間)
  • 外設通過產生中斷,向處理器告知,外部有重要事件發(fā)生
  • 處理器收到中斷后,需要響應中斷(具體如何響應見后面內容)

上面只是中斷的簡單概念。舉個例子,我們點擊鼠標的時候,鼠標這個外設會產生一個中斷,當CPU收到這個中斷的時候,CPU會響應這個中斷,進而執(zhí)行ISR(中斷服務程序),在中斷服務程序中肯定會調用鼠標的驅動模塊,從而在電腦上我們才能看到鼠標的點擊效果。

那么什么是中斷服務程序呢(ISR)?

  • 首先中斷服務程序會從外設中讀取外設的中斷寄存器,從而獲得中斷的類型
  • 然后根據中斷類型,設計具體的處理邏輯(后面的學習中我們會發(fā)現實際上是通過中斷向量表來選取具體的處理邏輯)
  • 中斷處理完畢后,還需要清除外設中的中斷寄存器內容
  • 然后清除CPU中的中斷標識位
  • 最后還需要恢復CPU中本該執(zhí)行的指令
  • 下面看一個圖示來表示一個中斷產生的過程:

    • 步驟一外設產生中斷
    • 步驟二要先把當前正在執(zhí)行的程序的上下文保存(比如通用寄存器的值)
    • 步驟三四讀取外設中斷寄存器的值,獲得中斷類型
    • 步驟五執(zhí)行相應的中斷處理程序
    • 步驟六清除外設的中斷寄存器的值
    • 步驟七清除CPU的中斷標識位
    • 步驟八恢復當前需要執(zhí)行程序的上下文環(huán)境

    那么,從程序的角度來考慮,中斷服務程序(ISR)有哪些特征呢?

    我們知道,中斷服務程序執(zhí)行完之后,需要再次回到之前的程序繼續(xù)執(zhí)行,所以ISR不能有返回值(想一想你有返回值得到話,誰來接收這個返回值呢?),并且,沒有參數傳遞!因為前期已經通斷中斷向量表來選取了特定類型的處理邏輯,此處無需再讓中斷的類型當做參數傳遞來決定如何設計處理邏輯,所以無需參數。同時,對于這種打斷程序運行的,比如后面的信號,程序最好不要太長,容易產生錯誤。所以ISR最好短小精悍,為了能夠快速結束,最好少做浮點運算。

    • 不能有返回值,不能有參數傳遞
    • 盡量短小高效,避免浮點運算

    1.2、中斷的意義

    • 應用程序不必關心中斷的處理與發(fā)生
    • 中斷服務程序也不用關心應用程序的狀態(tài)
    • 中斷是上層應用與底層代碼的分界線

    1.3、中斷的類型

    • 硬中斷

      • 通過處理器的中斷信號線產生的中斷(鼠標按一下產生的中斷,通過中斷信號線發(fā)送給處理器)
    • 軟中斷

      • 通過非法指令或者特殊指令陷入的中斷(比如系統調用也是一種軟中斷,它就是通過特殊指令Int 0x80陷入內核,也可以看做一種中斷。再比如后面會學習的信號,也是一種中斷)

    1.4、中斷的優(yōu)先級

    比如此時有好幾個中斷信號產生,比如你的電腦正在運行微博程序,你點擊鼠標,立馬有反應,這說明什么?說明鼠標的優(yōu)先級比微博程序的優(yōu)先級高。其實,任何ISR的優(yōu)先級,都比應用程序的優(yōu)先級高。而中斷中,也分為不同的優(yōu)先級,高優(yōu)先級的中斷會優(yōu)先得到CPU的處理,且一個中斷ISR在運行時,如果再來一個比它優(yōu)先級高的中斷,這個高優(yōu)先級的中斷會打斷那個正在執(zhí)行的中斷程序。

    • 中斷優(yōu)先級

    • 多個中斷同時出現時,處理器優(yōu)先響應高優(yōu)先級的中斷
    • 低優(yōu)先級中斷的ISR執(zhí)行時,可以被高優(yōu)先級的中斷再次打斷
    • ISR比上層應用程序的優(yōu)先級都高

    2、中斷的應用-斷點調試

    2.2、什么是程序的斷點?

    大家都知道斷點調試。程序的斷點,其實就是一個指令的地址。這個指令的地址,是調試工具(例如GDB)讓代碼停止執(zhí)行時候的位置。當你設置斷點后,程序會在你設置的斷點處停止執(zhí)行。然后去執(zhí)行你的調試工具里面的相應程序,那么接下來你就可以使用調試工具來獲取程序的相應信息,比如上下文環(huán)境,棧信息等

    2.2、 程序斷點的實現原理

    程序斷點的實現原理,依賴于CPU的中斷機制。包括CPU的硬中斷機制與軟中斷機制。

    說的通俗一點,就是將斷點處的指令替換為中斷觸發(fā)指令,不再繼續(xù)執(zhí)行當前程序,而是去執(zhí)行中斷服務程序ISR,然后ISR再將CPU控制權交給你的調試工具的處理程序。

    • 程序斷點的實現原理

    • 獲取源程序指定行對應的代碼地址(指令地址)
    • 保存當前程序的上下文環(huán)境信息
    • 把該指令地址處的指令,替換為中斷觸發(fā)指令
    • 在中斷服務程序ISR中將CPU控制權交給調試工具的處理程序
    • 調試程序開始做相應處理(比如可以讀取源程序的上下文信息或者棧信息)
    • 調試程序處理完后,將之前指令地址處的指令還原
    • 恢復之前程序的上下文信息
    • 源程序繼續(xù)從斷點處執(zhí)行程序

    下面來看一張圖理解斷點的實現原理

    其中中斷觸發(fā)指令,被CPU執(zhí)行后,OS會向調試程序發(fā)送signal,signal后面會講。調試程序收到signal,會執(zhí)行響應的處理函數handle。

    以上只是大致講原理,沒有深入研究源碼。

    3、總結

    本篇文章要學會:

    • 中斷的概念與意義
    • 中斷的類型(硬中斷與軟中斷)
    • 中斷的應用-斷點與斷點的實現原理

    本系列文章幾乎全部參考狄泰軟件學院相關課程,想學習的可以加群,
    群聊號碼:199546072

    學習探討加個人:
    qq:1126137994
    微信:liu1126137994

    總結

    以上是生活随笔為你收集整理的【软件开发底层知识修炼】二 深入浅出处理器之二 中断的概念与意义的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。