【大資料技術】什麼是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中斷處理的過程,就不難理解下面一種常見的情景:
正在拷貝檔案時,往某個文字框輸入資訊,這個文字框會出現短暫的假死,鍵盤輸入的資料不能及時顯示在文字框中,需要等一會兒才能逐漸顯示出來。