控制和狀態(tài)寄存器:
PC(程序計(jì)數(shù)器),IR(指令寄存器),PSW(程序狀態(tài)字寄存器)
操作系統(tǒng)需要兩種CPU狀態(tài):
Kernel Mode, User Mode
CPU狀態(tài)之間的轉(zhuǎn)換:
1.用戶態(tài) -> 內(nèi)核態(tài):唯一途徑:中斷/異常/陷入機(jī)制
2.內(nèi)核態(tài) -> 用戶態(tài):設(shè)置程序狀態(tài)字
中斷/異常機(jī)制
操作系統(tǒng)由“中斷驅(qū)動(dòng)”或者“事件驅(qū)動(dòng)”
中斷/異常的概念
CPU對(duì)系統(tǒng)發(fā)生的某個(gè)事件作出的一種反應(yīng)
(事件的發(fā)生改變了處理器的控制流)
特點(diǎn):隨機(jī)發(fā)生,自動(dòng)處理,可恢復(fù)
中斷的引入:為了支持CPU和設(shè)備之間的并行操作
異常的引入:表示CPU執(zhí)行指令時(shí)本身出現(xiàn)的問題(算術(shù)溢出、除零、地址越界、“陷入”指令,etc.)
中斷和異常,統(tǒng)稱事件
中斷:外部事件,正在運(yùn)行的程序所不期望的
Interrupt:來(lái)自I/O或其他硬件,異步,處理完返回到下一條指令
異常:由正在執(zhí)行的指令引發(fā)
Trap陷入:有意識(shí)安排的,同步,處理完返回到下一條指令
Fault故障:可恢復(fù)的錯(cuò)誤,同步,返回到當(dāng)前指令
Abort終止:不可恢復(fù)的錯(cuò)誤,同步,不返回
中斷/異常機(jī)制的工作原理
硬件:中斷/異常響應(yīng)(發(fā)現(xiàn)中斷,接受中斷)
軟件:中斷/異常處理
開始->取下一條指令->執(zhí)行指令->(允許中斷)->檢查指令處理中斷
在每條指令執(zhí)行周期的最后時(shí)刻掃描中斷寄存器,查看是否有中斷信號(hào)
若有中斷,PSW寫入中斷碼,通過(guò)查? 中斷向量表 引出中斷處理程序
若無(wú)中斷,繼續(xù)執(zhí)行下一條指令
中斷向量表
中斷向量:一個(gè)內(nèi)存單元,存放 中斷處理程序入口地址 和程序運(yùn)行時(shí)所需的 處理機(jī)狀態(tài)字
中斷響應(yīng):
1.設(shè)備發(fā)出中斷信號(hào)
2.硬件保存現(xiàn)場(chǎng)
3.根據(jù)中斷碼查表
4.把中斷處理程序入口地址等推送到相應(yīng)的寄存器
5.執(zhí)行中斷處理程序
系統(tǒng)調(diào)用機(jī)制的設(shè)計(jì)
中斷/異常機(jī)制:支持系統(tǒng)調(diào)用服務(wù)的實(shí)現(xiàn)
陷入指令(亦稱訪管指令):引發(fā)異常,完成用戶態(tài)到內(nèi)核態(tài)的切換
系統(tǒng)調(diào)用號(hào)和參數(shù):每個(gè)系統(tǒng)調(diào)用都事先給定一個(gè)編號(hào)(功能號(hào))
系統(tǒng)調(diào)用表:存放系統(tǒng)調(diào)用服務(wù)程序的入口地址
參數(shù)傳遞的3中實(shí)現(xiàn)方法:
由陷入指令自帶參數(shù)
通過(guò)通用寄存器傳遞參數(shù)(常用)
在內(nèi)存中開辟專用棧區(qū)來(lái)傳遞參數(shù)
系統(tǒng)條用的執(zhí)行過(guò)程
當(dāng)CPU執(zhí)行到陷入指令時(shí):
中斷/異常機(jī)制:硬件保護(hù)現(xiàn)場(chǎng);通過(guò)查中斷向量表把控制權(quán)轉(zhuǎn)給 系統(tǒng)調(diào)用總?cè)肟诔绦?/p>
系統(tǒng)調(diào)用總?cè)肟诔绦颍罕4娆F(xiàn)場(chǎng);將參數(shù)保存在內(nèi)存棧區(qū);通過(guò)查系統(tǒng)調(diào)用表把控制權(quán)轉(zhuǎn)給相應(yīng)的系統(tǒng)調(diào)用處理例程或內(nèi)核函數(shù)
執(zhí)行系統(tǒng)調(diào)用例程
恢復(fù)現(xiàn)場(chǎng),返回用戶程序