控制和状态寄存器:
PC(程序计数器),IR(指令寄存器),PSW(程序状态字寄存器)
操作系统需要两种CPU状态:
Kernel Mode, User Mode
CPU状态之间的转换:
1.用户态 -> 内核态:唯一途径:中断/异常/陷入机制
2.内核态 -> 用户态:设置程序状态字
中断/异常机制
操作系统由“中断驱动”或者“事件驱动”
中断/异常的概念
CPU对系统发生的某个事件作出的一种反应
(事件的发生改变了处理器的控制流)
特点:随机发生,自动处理,可恢复
中断的引入:为了支持CPU和设备之间的并行操作
异常的引入:表示CPU执行指令时本身出现的问题(算术溢出、除零、地址越界、“陷入”指令,etc.)
中断和异常,统称事件
中断:外部事件,正在运行的程序所不期望的
Interrupt:来自I/O或其他硬件,异步,处理完返回到下一条指令
异常:由正在执行的指令引发
Trap陷入:有意识安排的,同步,处理完返回到下一条指令
Fault故障:可恢复的错误,同步,返回到当前指令
Abort终止:不可恢复的错误,同步,不返回
中断/异常机制的工作原理
硬件:中断/异常响应(发现中断,接受中断)
软件:中断/异常处理
开始->取下一条指令->执行指令->(允许中断)->检查指令处理中断
在每条指令执行周期的最后时刻扫描中断寄存器,查看是否有中断信号
若有中断,PSW写入中断码,通过查 中断向量表 引出中断处理程序
若无中断,继续执行下一条指令
中断向量表
中断向量:一个内存单元,存放 中断处理程序入口地址 和程序运行时所需的 处理机状态字
中断响应:
1.设备发出中断信号
2.硬件保存现场
3.根据中断码查表
4.把中断处理程序入口地址等推送到相应的寄存器
5.执行中断处理程序
系统调用机制的设计
中断/异常机制:支持系统调用服务的实现
陷入指令(亦称访管指令):引发异常,完成用户态到内核态的切换
系统调用号和参数:每个系统调用都事先给定一个编号(功能号)
系统调用表:存放系统调用服务程序的入口地址
参数传递的3中实现方法:
由陷入指令自带参数
通过通用寄存器传递参数(常用)
在内存中开辟专用栈区来传递参数
系统条用的执行过程
当CPU执行到陷入指令时:
中断/异常机制:硬件保护现场;通过查中断向量表把控制权转给 系统调用总入口程序
系统调用总入口程序:保存现场;将参数保存在内存栈区;通过查系统调用表把控制权转给相应的系统调用处理例程或内核函数
执行系统调用例程
恢复现场,返回用户程序
网友评论