中断 异常 系统调用的比较
为什么需要中断,异常和系统调用
- 计算机运行中,内核是被信任的第三方 内核可以对操作系统做任何控制
- 只有内核可以执行特权指令
- 方便应用程序
中断和异常希望解决的问题
- 当外设连接计算机时,会出现什么现象
- 当应用程序处理意想不到的行为时,会出现什么现象
系统调用希望解决的问题
- 用户应用程序是如何得到系统服务
- 系统调用和功能调用的不同之处是什么
内核的进入与退出
系统调用 system call
- 应用程序主动向操作系统发出的服务请求
异常 exception
- 非法指令或者其他原因导致当前指令执行失败后的处理请求
中断 hardware interrupt
- 来自硬件设备的处理请求
源头上的不同
- 中断,外设
- 异常,应用程序的错误
- 系统调用,应用程序请求操作提供服务
响应方式
- 中断,异步
- 异常,同步
- 系统调用,异步或者同步
处理机制
- 中断,持续,对用户应用程序是透明的
- 异常,杀死或者重新执行意想不到的应用程序指令
- 系统调用,等待和持续
中断处理机制
硬件处理
- 在cpu初始化时设置中断使能标志
在许可外界打扰cpu的执行之前,cpu不会对外界的任何中断请求发出响应,中断使能之后,才能做中断的处理
- 依据内部或外部事件设置中断标志
- 依据中断向量调用相应中断服务例程
软件
- 现场保存(编译器)
- 中断服务处理(服务例程)
- 清除中断标记(服务例程)
- 现场恢复(编译器)
中断嵌套
硬件中断服务例程可被打断
- 不同硬件中断源可在硬件中断处理时出现
- 硬件中断服务例程中需要临时禁止中断请求
- 中断请求会保持到cpu做出响应
异常服务例程可被打断
- 异常服务例程执行时可能出现硬件中断
异常服务例程可嵌套
- 异常服务例程可能出现缺页