控制和狀態寄存器:用于控制處理器的操作,通常由操作系統代碼使用,在某種特權級別下可以訪問、修改
常見的控制和狀態寄存器:程序計數器(program counter),記錄將要取出的指令的地址;指令寄存器(Instruction Register),記錄最近取出的指令;程序狀態字(Program Status Word)記錄處理器的運行狀態如條件碼、模式、控制位等信息。
操作系統的需求——保護:實現保護與控制;需要硬件提供基本運行機制:處理器具有特權級別,能在不同的特權級運行的不同指令集合;硬件機制可將OS與用戶程序隔離。
特權指令和非特權指令:
操作系統需要兩種CPU狀態:1.內核態:運行操作系統程序;2.用戶態:運行用戶程序;
特權指令:只能由操作系統使用、用戶程序不能使用的指令。
非特權指令:用戶程序可以使用的指令。
操作系統可以執行特權指令和非特權指令
特權指令:啟動I/O 內存清零 修改程序狀態字 設置時鐘 允許/禁止中斷 停機
非特權指令:控制轉移 算數運算 防管指令 取數指令
X86處理器支持4個處理器特權級別
特權環:R0,R1,R2,R3
從R0到R3,特權能力由高到低,R0相當于內核態;R3相當于用戶態;R1和R2則介于兩者之間
CPU狀態之間的轉換:
用戶態->內核態 唯一途徑是中斷/異常/陷入機制
內核態->用戶態 設置程序狀態字PSW
中斷/異常的概念:
CPU對系統發生的某個事件做出的一種反應
CPU暫停正在執行的程序,保留現場后自動轉區執行相應事件的處理程序,處理完成后返回斷點,繼續執行被打斷的程序。
事件的發生改變了處理器的控制流,特點是隨即發生的,自動處理的,可恢復的
為什么引入中斷與異常?
中斷的引入:為了支持CPU和設備之間的并行操作,當CPU啟動設備進行輸入/輸出后,設備便可獨立工作,CPU轉去處理與此次輸入/輸出不相關的事情;當設備完成輸入/輸出后,通過向CPU發中斷報告此次輸入/輸出的結果,讓CPU決定如何處理以后的事情。
異常的引入:表示CPU執行指令時本身出現的問題。如算數溢出、除零、取數時的奇偶錯,訪內存地址時越界或執行了陷入指令等,這時硬件改變了CPU當前的執行流程,轉到相應的錯誤處理程序或異常處理程序或執行系統調用。
事件包括中斷(外中斷)和異常(內中斷)
中斷:外部事件,正在運行的程序所不期望的。I/O中斷(鍵盤上按Ctrl+C,網卡接收數據包,打印機結束,讀盤結束),時鐘中斷(設定定時器到點,CPU運行時間片到了),硬件故障(筆記本電池低電量,內存奇偶校驗錯)
異常:由正在執行指令引發。系統調用,頁故障/頁錯誤,保護性異常(只讀內容寫操作,地址訪問越界),斷點指令(單步調試),其他程序性異常(算數溢出)
中斷/異常機制工作原理:
中斷/異常機制是現代計算機系統的核心機制之一,硬件和軟件相互配合而使計算機系統得以充分發揮能力
硬件該做:捕獲中斷源發出的中斷/異常請求,以一定方式相應,將處理器控制權交給特定的處理程序(中斷/異常的相應)
軟件要做:識別中斷/異常類型并完成相應的處理(中斷/異常處理程序)
中斷響應過程:在每條指令執行周期的最后時刻掃描中斷寄存器,查看是否有中斷信號。若有中斷,中斷硬件將該中斷觸發器內容按規定編碼送入PSW的相應位,稱為中斷碼,通過查中斷向量表引出中斷處理程序。
中斷向量表由中斷向量構成。
中斷向量:一個內存單元,存放中斷處理程序入口地址和程序運行時所需的處理機狀態字。
執行流程按中斷號/異常類型的不同,通過中斷向量表轉移控制權給中高端處理程序。
中斷響應示意圖:1.設備發中斷信號 2.硬件保存現場 3.根據中斷碼查表 4.把中斷處理程序入口地址等推送到相應寄存器 5.執行中斷處理程序
中斷處理程序
設計操作系統時,為每一類中斷/異常事件編好相應的處理程序,并設置好中斷向量表。
系統運行時若響應中斷,中斷硬件部件將CPU控制權轉給中斷處理程序:保存相關寄存器信息;分析中斷/異常的具體原因;執行對應的處理功能;恢復現場,返回被事件打斷的程序;