計算機中斷機制

      網友投稿 738 2022-05-28

      淺析CPU中斷技術

      前一陣子忽然蛋疼菊緊,對計算機硬件的工作原理產生了些許興趣。故查閱了一些資料,加上本人的總結和理解(以及猜測),為園友先奉上一文如下。

      附:本文僅對CPU中斷技術進行理論上的剖析,而沒有針對中斷技術的實現進行分析。

      Ready Go

      目錄

      一、什么是CPU中斷?

      二、CPU中斷的作用

      三、CPU中斷的類型

      四、CPU中斷的過程

      五、多核CPU對中斷的處理

      一、什么是CPU中斷?

      使用計算機的過程中,經常會遇到這么一種情景:

      1. 你正在看電影

      2. 你的朋友發來一條QQ信息

      3. 你一邊回復朋友的信息,一邊繼續看電影

      這個過程中,一切是那么的順其自然。但理論上來說,播放電影的時候,CPU正在一絲不茍的執行著一條又一條的指令,它是如何在維持電影播放的情況下,及時接收并響應你的鍵盤輸入信息呢?

      這就是CPU中斷技術在起作用。

      CPU中斷技術的定義如下:

      計算機處于執行期間

      系統內發生了非尋常或非預期的急需處理事件

      CPU暫時中斷當前正在執行的程序而轉去執行相應的事件處理程序

      處理完畢后返回原來被中斷處繼續執行

      在這里,“非尋常或非預期的事件”指的就是你回復朋友的QQ時,用鍵盤鍵入信息。為了及時響應你鍵入的信息,CPU將正在執行的任務“播放電影”暫時中斷,處理完你鍵入的信息后,繼續執行“播放電影”的任務。由于這個“中斷當前任務->響應鍵盤輸入->繼續當前任務”的執行周期非常短(一般都是微秒級),所以一般人感覺不出來。

      舉個現實中的例子:

      你正在看書,突然你的朋友打來電話,于是你放下書本去接電話,電話打完接著看書。

      電話響->放下書本->接電話->繼續看書這一個過程,就類似于CPU中斷的處理過程。

      二、CPU中斷的作用

      早期的CPU處理外設的事件(比如接收鍵盤輸入),往往采用“輪詢”的方式。即CPU像個查崗的一樣輪番對外設順序訪問,比如它先看看鍵盤有沒被按下,有的話就處理,沒的話繼續往下看鼠標有沒有移動,再看看打印機……這種方式使CPU的執行效率很低,且CPU與外設不能同時工作(因為要等待CPU來“巡查”)。

      中斷模式時就是說CPU不主動訪問這些設備,只管處理自己的任務。如果有設備要與CPU聯系,或要CPU處理一些事情,它會給CPU發一個中斷請求信號。這時CPU就會放下正在進行的工作而去處理這個外設的請求。處理完中斷后,CPU返回去繼續執行中斷以前的工作。

      中斷模式的作用和優點在于:

      1. 可以使CPU和外設同時工作,使系統可以及時地響應外部事件。

      2. 可允許多個外設同時工作,大大提高了CPU的利用率,也提高了數據輸入、輸出的速度。

      3. 可以使CPU及時處理各種軟硬件故障(比如計算機在運行過程中,出現了難以預料的情況或一些故障,如電源掉電、存儲出錯、運算溢出等等。計算機可以利用中斷系統自行處理,而不必停機或報告工作人員。)

      三、CPU中斷的類型

      在計算機系統中,根據中斷源的不同,通常將中斷分為兩大類:

      1. 硬件中斷

      2. 軟件中斷

      硬件中斷又稱外部中斷,主要分為兩種:可屏蔽中斷、非屏蔽中斷。

      可屏蔽中斷:

      1. 常由計算機的外設或一些接口功能產生,如鍵盤、打印機、串行口等

      2. 這種類型的中斷可以在CPU要處理其它緊急操作時,被軟件屏蔽或忽略

      非屏蔽中斷:

      1. 由意外事件導致,如電源斷電、內存校驗錯誤等

      2. 對于這種類型的中斷事件,無法通過軟件進行屏蔽,CPU必須無條件響應

      在x86架構的處理器中,CPU的中斷控制器由兩根引腳(INTR和NMI)接收外部中斷請求信號。其中:

      1.?INTR接收可屏蔽中斷請求

      2.?NMI接收非屏蔽中斷請求

      典型事例:

      1. 典型的可屏蔽中斷的例子是打印機中斷,CPU對打印機中斷請求的響應可以快一些,也可以慢一些,因為讓打印機稍等待一會也是完全合理的。

      2. 典型的非屏蔽中斷的例子是電源斷電,一旦出現此中斷請求,必須立即無條件地響應,否則進行其他任何工作都是沒有意義的。

      計算機中斷機制

      軟件中斷又稱內部中斷,是指在程序中調用INTR中斷指令引起的中斷。比如winAPI中,keybd_event和mouse_event兩個函數,就是用來模擬鍵盤和鼠標的輸入(這個僅為筆者本人的猜測)。

      四、CPU中斷的過程

      中斷請求

      中斷請求是由中斷源向CPU發出中斷請求信號。外部設備發出中斷請求信號要具備以下兩個條件:

      1. 外部設備的工作已經告一段落。例如輸入設備只有在啟動后,將要輸入的數據送到接口電路的數據寄存器(即準備好要輸入的數據)之后,才可以向CPU發出中斷請求。

      2. 系統允許該外設發出中斷請求。如果系統不允許該外設發出中斷請求,可以將這個外設的請求屏蔽。當這個外設中斷請求被屏蔽,雖然這個外設準備工作已經完成,也不能發出中斷請求。

      中斷響應、處理和返回

      當滿足了中斷的條件后,CPU就會響應中斷,轉入中斷程序處理。具體的工作過程如下:

      1. 關閉中斷信號接收器

      2. 保存現場(context)

      3. 給出中斷入口,轉入相應的中斷服務程序

      4. 處理完成,返回并恢復現場(context)

      5. 開啟中斷信號接收器

      中斷排隊和中斷判優

      1. 中斷申請是隨機的,有時會出現多個中斷源同時提出中斷申請。

      2. CPU每次只能響應一個中斷源的請求。

      3. CPU不可能對所有中斷請求一視同仁,它會根據各中斷源工作性質的輕重緩急,預先安排一個優先級順序。當多個中斷源同時申請中斷時,即按此優先級順序進行排隊,等候CPU處理。

      了解了CPU中斷處理的過程,就不難理解下面一種常見的情景:

      正在拷貝文件時,往某個文本框輸入信息,這個文本框會出現短暫的假死,鍵盤輸入的數據不能及時顯示在文本框中,需要等一會兒才能逐漸顯示出來。

      這是因為該中斷操作(往文本框輸入信息)在中斷隊列的優先級比較低,或者CPU認為正在處理的操作(拷貝文件)進行掛起的代價太大,所以只有等到CPU到了一個掛起代價較低的點,才會掛起當前操作,處理本次中斷信息。

      五、多核CPU對中斷的處理

      多核CPU的中斷處理和單核有很大不同。多核的各處理器核心之間需要通過中斷方式進行通信,所以CPU芯片內部既有各處理器核心的本地中斷控制器,又有負責仲裁各核之間中斷分配的全局中斷控制器。

      現今的多核處理器在中斷處理和中斷控制方面主要使用的是APIC(Advanced Programmable Interrupt Controllers),即高級編程中斷控制器。它是基于中斷控制器兩個基礎功能單元——本地單元以及I/O單元的分布式體系結構。在多核系統中,多個本地和I/O APIC單元能夠作為一個整體通過APIC總線互相操作。

      APIC的功能有:

      1. 接受來自處理器中斷引腳的內部或外部I/O APIC的中斷,然后將這些中斷發送給處理器核心進行處理

      2. 在多核處理器系統中,接收和發送核內中斷消息

      對于外部設備發出的中斷請求,由全局中斷控制器接收請求并決定交給CPU的哪一個核心處理。也可針對APIC編程,讓所有的中斷都被一個固定的CPU處理。

      轉自http://www.cnblogs.com/funeral/archive/2013/03/06/2945485.html

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:大數據開發崗面試復習30天沖刺 - 日積月累,每日五題【Day01】——Hadoop和Linux
      下一篇:基于HTTP 構建本地YUM 源
      相關文章
      亚洲av无码片在线观看| 77777亚洲午夜久久多人| 亚洲色成人网站WWW永久| 亚洲国产精品成人一区| 国产午夜亚洲精品不卡免下载 | 亚洲午夜久久久影院| 亚洲国产高清在线一区二区三区| 亚洲爆乳无码专区www| 亚洲熟妇无码一区二区三区导航| 亚洲人精品亚洲人成在线| 亚洲成a人片在线观看精品| 亚洲精品国产精品国自产网站| 亚洲人成综合在线播放| 亚洲一区二区三区播放在线| 亚洲啪啪免费视频| 亚洲AV无码国产精品色| 天堂亚洲国产中文在线| 亚洲色欲啪啪久久WWW综合网| 亚洲精品无码专区| 亚洲av日韩av永久在线观看| 亚洲日韩在线中文字幕综合| 亚洲精品国产suv一区88| 亚洲av无码专区国产不乱码| 国产成人综合久久精品亚洲| 亚洲国产精品日韩专区AV| 久久亚洲AV永久无码精品| 亚洲热妇无码AV在线播放| 亚洲爆乳无码专区| 久久久亚洲AV波多野结衣| 亚洲国产成人久久| 亚洲中文字幕无码av| 亚洲AV成人一区二区三区观看 | 亚洲AV永久无码精品一福利| 99亚洲男女激情在线观看| 亚洲国产精品碰碰| 国产偷v国产偷v亚洲高清| 久久久久久亚洲精品成人| 亚洲jizzjizz在线播放久| 亚洲AV成人一区二区三区观看| 亚洲国产综合无码一区二区二三区| 国产亚洲日韩一区二区三区|