中斷異常機制介紹
操作系統是由 “中斷驅動” 或者 “事件驅動” 的
主要作用:
- 及時處理設備發來的中斷請求
- 可使 OS 捕獲用戶程序提出的服務請求
- 防止用戶程序執行過程中的破壞性工作
- 。。。
特點:
- 隨即發生的
- 自動處理的(硬件來完成)
- 可恢復的
為何引入中斷與異常?
中斷的引入:為了支持CPU和設備之間的並行操作
當 CPU 啟動設 備進行輸入/輸出后,設備便可以獨立工作,CPU 轉去處理與此次輸入/輸出不相關的事情;當設備完成輸入/輸出后,通過向 CPU 發中斷報郜此次輸入/輸出的結果,讓 CPU 決定如何處理以后的事情
異常的引入:表示CPU執行指令時本身出現的問題
如算術溢出、除零、取數時的奇偶錯,訪存地址時越界或執行了 “陷入指令” 等,這時硬件改變了 CPU 當前的執行流程,轉到相應的錯誤處理程序或異常處理程序或執行系統調用
早期兩者都是中斷,后來有了區分,區分的標准是主要是產生的原因
事件分類
- 中斷(外中斷)
- IO 中斷。比如鍵盤上按 ctrl+c、網卡接收到數據包、打印機結束、讀盤結束
- 時鍾中斷。比如設置的定時器到時間了、cpu 上運行的時間片時間到了
- 硬件故障。比如筆記本電腦電池耗盡報警、讀內存奇偶檢驗錯誤
- 異常(內中斷)
- 系統調用
- 頁故障/頁錯誤
- 保護性異常
- 斷點異常
- 其他程序的異常,如算術溢出等
中斷:外部事件,正在運行的程序所不期望的
異常:正在執行的指令引發的

中斷異常機制工作原理
中斷異常機制是現代計算機系統的核心機制之一。
硬件和軟件相互配合而使計算機系統的已充分發揮能力。
硬件主要工作是響應。
捕獲中斷源發出的中斷/異常請求,以一定方式響應,將處理器控制權交給特定的處理程序。
軟件的主要工作是處理。
識別中斷/異常類型並完成相應的處理。
硬件部分

中斷響應示意圖

- 設備發送中斷信號
- 中斷硬件部件保存現場,把內存保存到了系統堆棧內,主要是 PSW(程序狀態字) + PC
- 中斷硬件根據中斷碼查中斷向量表,得到對應的處理程序
- 把中斷處理程序入口地址等信息推送到相應的寄存器
- 執行中斷處理程序(從中斷斷點開始執行,完事之后繼續執行)
軟件部分
中斷處理程序
設計操作系統時,為每一類中斷/異常時間都編好相應的處理程序,並設置好中斷向量表
系統運行時若響應中斷,中斷硬件部件將 CPU 控制權轉給中斷處理程序:
- 保存相關寄存器信息
- 分析中斷/異常的具體原因
- 執行對應的處理功能
- 恢復現場,返回被事件打斷的程序
小結
以設備輸入輸出中斷為例:
- 打印機給 CPU 發中斷信號
- CPU 處理完當前指令后檢測到終端,判斷出中斷來源並向相關設備發確認信號
- CPU 開始為軟件處理終端做准備:
- CPU 狀態被切換為內核態
- 在系統棧中保存被中斷程序的重要上下文環境,主要是程序計數器 PC,程序狀態字 PSW
- CPU 根據中斷碼查中斷向量表,獲得與該中斷相關的處理程序的入口地址,並將 PC 設置成該地址,新的指令周期開始時,CPU 控制轉移到中斷處理程序
- 中斷處理程序開始工作
- 在系統棧中保存現場信息
- 檢查 I/O 設備的狀態信息,操縱 I/O 設備或者在設備和內存之間傳送數據等等
- 中斷處理結束后,CPU 檢測到中斷返回指令,從系統棧中恢復被中斷程序的上下文環境,CPU 狀態恢復成原來的狀態,PSW 和 PC 恢復成中斷前的值,CPU 開始一個新的指令周期
1-6 中只有 5 工作在軟件部件,其余都工作在硬件部件