控制和狀態(tài)寄存器:用于控制處理器的操作,通常由操作系統(tǒng)代碼使用氛改,在某種特權(quán)級別下可以訪問目尖、修改
常見的控制和狀態(tài)寄存器:程序計數(shù)器(program counter),記錄將要取出的指令的地址寺晌;指令寄存器(Instruction Register),記錄最近取出的指令澡刹;程序狀態(tài)字(Program Status Word)記錄處理器的運行狀態(tài)如條件碼折剃、模式、控制位等信息像屋。
操作系統(tǒng)的需求——保護(hù):實現(xiàn)保護(hù)與控制;需要硬件提供基本運行機(jī)制:處理器具有特權(quán)級別边篮,能在不同的特權(quán)級運行的不同指令集合己莺;硬件機(jī)制可將OS與用戶程序隔離。
特權(quán)指令和非特權(quán)指令:
操作系統(tǒng)需要兩種CPU狀態(tài):1.內(nèi)核態(tài):運行操作系統(tǒng)程序戈轿;2.用戶態(tài):運行用戶程序凌受;
特權(quán)指令:只能由操作系統(tǒng)使用、用戶程序不能使用的指令思杯。
非特權(quán)指令:用戶程序可以使用的指令胜蛉。
操作系統(tǒng)可以執(zhí)行特權(quán)指令和非特權(quán)指令
特權(quán)指令:啟動I/O 內(nèi)存清零 修改程序狀態(tài)字 設(shè)置時鐘 允許/禁止中斷 停機(jī)
非特權(quán)指令:控制轉(zhuǎn)移 算數(shù)運算 防管指令 取數(shù)指令
X86處理器支持4個處理器特權(quán)級別
特權(quán)環(huán):R0,R1,R2,R3
從R0到R3,特權(quán)能力由高到低色乾,R0相當(dāng)于內(nèi)核態(tài)誊册;R3相當(dāng)于用戶態(tài);R1和R2則介于兩者之間
CPU狀態(tài)之間的轉(zhuǎn)換:
用戶態(tài)->內(nèi)核態(tài) 唯一途徑是中斷/異常/陷入機(jī)制
內(nèi)核態(tài)->用戶態(tài) 設(shè)置程序狀態(tài)字PSW
中斷/異常的概念:
CPU對系統(tǒng)發(fā)生的某個事件做出的一種反應(yīng)
CPU暫停正在執(zhí)行的程序暖璧,保留現(xiàn)場后自動轉(zhuǎn)區(qū)執(zhí)行相應(yīng)事件的處理程序案怯,處理完成后返回斷點,繼續(xù)執(zhí)行被打斷的程序澎办。
事件的發(fā)生改變了處理器的控制流嘲碱,特點是隨即發(fā)生的,自動處理的局蚀,可恢復(fù)的
為什么引入中斷與異常麦锯?
中斷的引入:為了支持CPU和設(shè)備之間的并行操作,當(dāng)CPU啟動設(shè)備進(jìn)行輸入/輸出后琅绅,設(shè)備便可獨立工作扶欣,CPU轉(zhuǎn)去處理與此次輸入/輸出不相關(guān)的事情;當(dāng)設(shè)備完成輸入/輸出后,通過向CPU發(fā)中斷報告此次輸入/輸出的結(jié)果宵蛀,讓CPU決定如何處理以后的事情昆著。
異常的引入:表示CPU執(zhí)行指令時本身出現(xiàn)的問題。如算數(shù)溢出术陶、除零凑懂、取數(shù)時的奇偶錯,訪內(nèi)存地址時越界或執(zhí)行了陷入指令等梧宫,這時硬件改變了CPU當(dāng)前的執(zhí)行流程接谨,轉(zhuǎn)到相應(yīng)的錯誤處理程序或異常處理程序或執(zhí)行系統(tǒng)調(diào)用。
事件包括中斷(外中斷)和異常(內(nèi)中斷)
中斷:外部事件塘匣,正在運行的程序所不期望的脓豪。I/O中斷(鍵盤上按Ctrl+C,網(wǎng)卡接收數(shù)據(jù)包忌卤,打印機(jī)結(jié)束扫夜,讀盤結(jié)束),時鐘中斷(設(shè)定定時器到點驰徊,CPU運行時間片到了)笤闯,硬件故障(筆記本電池低電量,內(nèi)存奇偶校驗錯)
異常:由正在執(zhí)行指令引發(fā)棍厂。系統(tǒng)調(diào)用颗味,頁故障/頁錯誤,保護(hù)性異常(只讀內(nèi)容寫操作牺弹,地址訪問越界)浦马,斷點指令(單步調(diào)試),其他程序性異常(算數(shù)溢出)
中斷/異常機(jī)制工作原理:
中斷/異常機(jī)制是現(xiàn)代計算機(jī)系統(tǒng)的核心機(jī)制之一张漂,硬件和軟件相互配合而使計算機(jī)系統(tǒng)得以充分發(fā)揮能力
硬件該做:捕獲中斷源發(fā)出的中斷/異常請求晶默,以一定方式相應(yīng),將處理器控制權(quán)交給特定的處理程序(中斷/異常的相應(yīng))
軟件要做:識別中斷/異常類型并完成相應(yīng)的處理(中斷/異常處理程序)
中斷響應(yīng)過程:在每條指令執(zhí)行周期的最后時刻掃描中斷寄存器航攒,查看是否有中斷信號荤胁。若有中斷,中斷硬件將該中斷觸發(fā)器內(nèi)容按規(guī)定編碼送入PSW的相應(yīng)位屎债,稱為中斷碼仅政,通過查中斷向量表引出中斷處理程序。
中斷向量表由中斷向量構(gòu)成盆驹。
中斷向量:一個內(nèi)存單元圆丹,存放中斷處理程序入口地址和程序運行時所需的處理機(jī)狀態(tài)字。
執(zhí)行流程按中斷號/異常類型的不同躯喇,通過中斷向量表轉(zhuǎn)移控制權(quán)給中高端處理程序辫封。
中斷響應(yīng)示意圖:1.設(shè)備發(fā)中斷信號 2.硬件保存現(xiàn)場 3.根據(jù)中斷碼查表 4.把中斷處理程序入口地址等推送到相應(yīng)寄存器 5.執(zhí)行中斷處理程序
中斷處理程序
設(shè)計操作系統(tǒng)時硝枉,為每一類中斷/異常事件編好相應(yīng)的處理程序,并設(shè)置好中斷向量表倦微。
系統(tǒng)運行時若響應(yīng)中斷妻味,中斷硬件部件將CPU控制權(quán)轉(zhuǎn)給中斷處理程序:保存相關(guān)寄存器信息;分析中斷/異常的具體原因欣福;執(zhí)行對應(yīng)的處理功能责球;恢復(fù)現(xiàn)場,返回被事件打斷的程序拓劝;