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