1.处理器状态(模式)
2.中断与异常机制
3.中断/异常机制工作原理
4.实例
1.处理器状态
-
基本概念
- 处理器:由运算器、控制器、一系列寄存器以及高速缓存构成
- 寄存器分类:用户可见寄存器,控制和状态寄存器
- 控制和状态寄存器:
- 用于控制处理器的操作
- 分类:程序计数器(PC),指令寄存器(IR),程序状态字(PSW)
PC:记录将要取出的指令地址
IR:记录最近取出的指令
PSW:记录处理器的运行状态(如条件码,模式,控制位)
-
操作系统的需求
- 基本需求:保护(由此产生运行机制)
- 基本运行机制
- 处理器具有特权级别,在不同的特权级别运行不同的指令集合
- 硬件机制可将OS与用户程序隔离
保护是指:1.用户与用户之间互不干扰
2.用户不干扰OS
-
指令
-
CPU状态:内核态;用户态
-
指令分类:
- 特权指令:操作系统使用,用户程序不能使用
- 非特权指令:用户程序可以使用
常见特权指令:启动I/O,内存清零,修改程序状态,设置时钟,停机,允许/禁止中断
-
CPU状态的转换
- 用户态到内核态:中断/异常/陷入机制
- 内核态到用户态:设置程序状态字PSW
-
2.中断与异常机制
-
背景
- 重要性:操作系统可以说是由“中断驱动”
- 概念:CPU暂停正在执行的程序,保留现场后自动专区执行相应事件的处理程序,完成后返回断点,继续执行被打断的程序
随机发生,自动处理,可恢复
- 中断的引入:支持CPU和设备之间的并行
CPU启动设备进行I/O后,设备独立工作,CPU处理其他事情,设备完成后向CPU发送中断报告,由CPU决定后续处理
- 异常的引入:表示CPU执行指令时本身出现的问题
-
举例
- 中断(外中断):I/O中断,时钟中断(时间片),硬件故障(电池电量提醒)
- 异常(内中断):系统调用,页故障,保护性异常(地址越界、操作与权限冲突),断点指令
-
小结
类别 | 原因 | 异步/同步 | 返回行为 |
---|---|---|---|
中断 | 来自I/O设备,其他硬件 | 异步 | 返回到下一条指令 |
陷入 | 有意识安排的 | 同步 | 返回到下一条指令 |
故障 | 可恢复的错误 | 同步 | 返回到当前指令 |
终止 | 不可恢复 | 同步 | 不会返回 |
3.工作机制
-
原理
- 响应(硬件):捕获请求,以一定的方式响应,将处理器控制权交给特定的处理程序
- 处理(软件):识别中断/异常类型,完成相应的处理
-
中断
-
响应
- 概念:发现中断,接受中断的过程,由中断硬件部件完成
- 中断向量表:存放中断处理程序入口地址和程序运行所需的处理机状态字
- 过程:1.设备发出中断信号 2.硬件保存现场 3.根据中断码查表(向量表) 4.把中断处理程序入口地址等推送到响应寄存器 5.执行中断处理操作
软件提前设计好
硬件部件来执行 -
处理程序
- 设计OS时,为每一类中断/异常编好处理程序和向量表
- 处理程序:保存相关寄存器信息;分析中断具体原因;执行对应的处理功能;恢复现场,返回被打断的程序
-
-
小结(以I/O为例)
- 打印机给CPU发送中断信号
- CPU检测到中断,判断来源并发送确认信号(硬件)
- CPU为软件处理中断做准备(硬件)
- 处理器切换到内核态
- 在系统栈保存被中断程序的上下文环境(PC,PSW)
- CPU根据中断码查向量表,获取入口地址并将PC设置成该地址,新指令周期开始时CPU控制转移到中断处理程序(硬件)
- 中断处理程序开始工作(软件)
- 在系统栈保存现场
- 检查I/O设备的状态信息,操纵设备传送数据
- 处理结束,CPU从系统栈中恢复上下文环境,PSW和PC恢复成中断前的值,开始新的指令周期
4.实例(x86)
- 基本概念
- 中断:硬件信号引发的,分为可屏蔽和不可屏蔽中断
- 异常:指令执行引发的
- 系统调用:异常的一种,用户态到内核态的唯一入口
- x86对中断的支持
- 中断控制器(PIC或APIC):将硬件的中断信号转换为中断向量,引发CPU中断
- 实模式:中断向量表
- 保护模式:中断描述符表IDT(采用门描述数据结构表示中断向量)
- 门
- 任务门
- 中断门:给出段选择符,偏移量,通过中断门后系统或自动禁止中断
- 陷阱门:与中断门类似,但是系统不会自动禁止中断
- 调用门
- 处理过程
- 确定与中断/异常关联的向量i
- 通过IDTR寄存器找到IDT表,获取中断描述符(表中第i项),中段描述符中获取段选择符
- 从GDTR寄存器获得GDT(全局描述符表)的地址,在GDT表获取段描述符 ,从段描述符获取段基址
- 处理程序入口地址=段基址+偏移(在中断描述符)
(重点概念:CPU状态,内核态/用户态,特权/非特权指令,中断,异常,中断响应,中断向量,中断处理程序)
(后续会补充流程图~)