OS与设备和程序交互类型
系统调用、异常、中断
- 系统调用(来源于应用程序) :
应用程序主动向操作系统发出服务请求 - 异常(来源于应用程序)
非法指令或其他坏的处理状态(如内存出错) - 中断(来源于外设)
来自不同的硬件设备的计时器和网络的中断
三者区别与联系
类型 | 源头 | 处理时间 | 响应 |
---|---|---|---|
中断 | 外设 | 异步 | 持续,对用户应用程序是透明的 |
异常 | 应用程序意想不到的行为 | 同步 | 杀死或重新执行意想不到的应用程序指令 |
系统调用 | 应用程序请求提供服务 | 同步或异步 | 等待和持续 |
中断、异常和系统调用OS的处理过程
中断(软+硬件)
1 硬件部分:设置中断标记(CPU初始化)
- 将内部、外部事件设置中断标记
- 中断事件的ID
2 软件部分
- 保存当前处理状态
- 中断服务程序处理
- 清除中断标记
- 恢复之前保存的状态
异常:异常编号
- 保存现场
- 异常处理
- 杀死产生了异常的程序
- 重新执行异常指令
- 恢复现场
系统调用
程序访问主要是通过高层次的API接口而不是直接进行系统调用
跨越操作系统边界的开销
定义
在执行时间上的开销超过程序调用开销包括:
- 建立中断/异常/系统调用号与对应服务例程映射关系的初始化开销
- 建立内核堆栈
- 验证参数
- 内核态映射到用户态的地址空间,更新页面映射权限
- 内核态独立地址空间,TLB