操做系統-中斷(1)中斷

不一樣教材對中斷的定義不一樣,能夠說是一個沒有嚴格定義的概念。
中斷(廣義的)是指程序執行過程當中,遇到急需處理的事件時,暫時停止CPU上現行程序的運行,轉去執行相應的事件處理程序,待處理完成後再返回原程序被中斷處或調度其餘程序執行的過程。
操做系統是「中斷驅動」的;換言之,中斷是激活操做系統的惟一方式。
中斷或異常處理執行的代碼不是一個進程,而是內核控制路徑,它表明異常或中斷髮生時正在運行的當前進程在內核態執行一個獨立的指令序列。內核控制路徑比進程更「輕」,其上下文信息比進程上下文信息少得多。而上下文切換後CPU執行的是另外一個用戶進程。
 
根據中斷源不一樣,中斷事件處理原則爲:
  • 處理器硬件故障中斷:由處理器、內存儲器、總線等硬件故障引發
會經過中斷請求向CPU請求處理
處理原則爲:保護現場,中止設備,中止CPU,向操做員報告並對故障形成的破壞進行估計和恢復,等待人工干預(復位、設置、替換等)
  • 程序性中斷:由處理器執行機器指令引發
不一樣用戶每每有不一樣處理要求,藉助於信號機制,操做系統可將所捕獲的中斷事件原封不動的轉交給應用程序自行處理。
語法錯誤:編譯程序發現並報錯
邏輯錯誤:測試程序發現並報錯
程序運行過程當中產生的異常:
        除數爲零、操做數溢出等算術異常:簡單處理,報告用戶;也能夠由用戶編寫中斷續元程序處理
        非法指令、用戶態使用特權指令、地址越界、非法存取等指令異常:終止進程
        終止進程指令:終止進程
        虛擬地址異常:調整內存後從新執行指令
  • 訪管中斷:處理器請求分配外設、請求I/O等時,執行訪管指令請求OS服務引發(系統調用經過訪管指令和中斷機制實現)
處理流程:(1)程序執行訪管指令,並經過適當方式指明系統調用號
                  (2)經過中斷機制進入訪管中斷處理程序,現場信息被保護到核心棧,按功能號實現跳轉
                  (3)經過系統調用入口地址表找到相應中斷服務例程的入口地址
                  (4)執行中斷服務例程,正常狀況下載結束後返回系統調用的下一條指令繼續執行
  • I/O中斷事件:來源於外圍設備報告I/O狀態的中斷事件
I/O操做正常完成:把等待傳輸的下一個進程設置爲就緒態,讓它佔有設備和通道並啓動數據傳輸
I/O操做發生故障:先向設備發命令索取狀態字,分析產生故障的確切緣由,再進行復執或請求人工干涉
I/O操做發生異常:分析狀況採起相應措施,向操做員報告。
設備報到、設備結束:調整設備表
  • 時鐘中斷:由外圍設備發出的信號引發的中斷事件
絕對時鐘:硬件時鐘,按照固定週期發出中斷。系統設備絕對時鐘寄存器,開機後定時地把寄存器內容加1(可根據開機時間推測當前時間)
間隔時鐘:可經過系統調用設置間隔時鐘掛起、經過程序設置間隔時鐘寄存器的初值,每一個時間切換點將其內容減1,爲0時產生間隔時鐘中斷,喚醒掛起的進程
 
中斷系統是計算機系統中響應和處理中斷的系統,包括硬件子系統和軟件子系統兩部分
中斷響應和中斷處理的結果就是調出相應的中斷服務例程並執行
中斷響應由硬件子系統完成;中斷處理由軟件子系統完成
在指令執行週期最後增長一個微操做,以響應中斷
計算機系統中發現並響應中斷/異常的硬件裝置稱爲中斷裝置
因爲中斷源的多樣性,硬件實現的中斷裝置有多種,分別處理不一樣類型的中斷,這些中斷裝置因計算機而異,一般有:
  • 處理器內的異常:由指令的控制邏輯和實現線路發現和響應,相應機制稱爲陷阱
處理器外中斷響應和處理器內異常響應的區別:一般在指令執行結束時查詢有無中斷請求,有則當即響應;而異常發生在指令執行過程當中,一旦發現則立刻處理
  • 請求OS服務的系統異常:處理器執行陷入指令時直接觸發,相應機制稱爲系統陷阱
陷阱與系統陷阱是指令的邏輯和實現線路的一部分
執行指令出現異常後,會根據異常狀況轉向操做系統的異常處理程序;出現虛擬地址異常後,須要從新執行指令,每每越過陷阱獨立設置頁面異常處理程序;執行陷入指令後,越過陷阱處理,觸發系統陷阱,激活系統調用處理程序
  • 處理器外的中斷:由中斷控制器發現和響應
 
 
多重中斷處理:
不一樣類型的操做系統有不一樣的中斷響應優先級(當計算機同時檢測到多箇中斷時, 中斷裝置響應中斷的順序,由中斷查詢程序或硬件判優電路決定),當有多個要響應的中斷源時,有如下兩種方法決定選哪個:
  • 軟件方法:編寫一個查詢程序,依據優先級順序從高到低進行查詢,一旦發現中斷請求則轉入相應中斷事件處理程序
  • 硬件方法:根據排定的優先級順序作一個硬件鏈式排隊器,當產生中斷事件時屏蔽全部比它優先級低的中斷
當計算機響應中斷後,在中斷處理過程當中,能夠再響應其餘中斷。操做系統是性能攸關程序系統,且中斷響應處理有硬件要求,考慮系統效率和實現代價問題,中斷的嵌套處理應限制在必定層數內(如3層)
中斷處理優先級----由中斷服務程序各自的中斷屏蔽字來動態設定,反映本中斷與其它中斷間的關係。
單重中斷不容許在中斷處理時被新的中斷打斷,於是直到中斷返回前纔會開中斷。所以單重中斷系統無需設置中斷屏蔽字。
多重中斷處理處在開中斷狀態時,可被新的處理優先級更高的中斷打斷,從而使中斷能夠嵌套處理,中斷的嵌套處理改變了中斷處理的次序,先響應的有可能後處理
  • 串行處理:XY兩個中斷同時發生,先響應X,因Y被屏蔽,繼續處理X,再響應並處理Y
  • 嵌套處理:XY兩個中斷同時發生,根據中斷優先級,先響應X;因未屏蔽Y,再響應並處理Y;Y處理完成後再處理X。
  • 即時處理:在運行中斷處理程序時,若是出現程序性中斷事件則代表中斷處理程序有異常,應馬上響應並進行處理

嵌套中斷處理舉例:
利用棧實現了中斷的嵌套處理。
圖中,中斷處理優先級的順序是:3# > 2# > 1#
1# 對 2# 開放(不屏蔽)
2# 對 3# 開放(不屏蔽)
 
綜上,決定中斷處理次序的因素:
  • 中斷屏蔽可使中斷裝置不響應某些中斷
  • 中斷響應優先級決定了中斷裝置響應中斷的次序
例如一種可能的處理次序爲:處理機硬件故障中斷事件、自願性中斷事件、程序性中斷事件、時鐘中斷等外部中斷事件、輸入輸出中斷事件、重啓動和關機中斷事件
相關文章
相關標籤/搜索