系统调用(system call)
应用程序主动向操作系统发出的服务请求
异常
非法指令或者其他原因导致当前指令执行失败
如内存出错后的处理请求
中断
来自硬件设备的处理请求
如下图所示,包括中断,异常,和正常的通过函数库调用内核的操作接口。
三者不同
- 源头不同:
中断:外设
异常:应用程序意想不到的行为
系统调用:应用程序请求操作提供服务 - 响应方式:
中断:异步
异常:同步
系统调用:异步或同步 - 处理机制:
中断:持续,对用户应用程序是透明的
异常:杀死或者重新执行意想不到的应用程序指令
系统调用:等待和持续
中断和异常处理机制
需要硬件和软件结合处理,其中
硬件需要完成的部分:
1. 在CPU初始化时设置中断使能标志
2. 依据内部或外部事件设置中断标志
3. 依据中断向量调用响应中断服务例程
软件需要完成:
1. 现场保护(编译器)
2. 中断服务处理(服务例程)
3. 清除中断服务标记(服务例程)
4. 现场恢复(编译器)