中断、异常和系统调用
为什么需要中断、异常和系统调用?
1 在操作系统中有很多的应用程序需要操作系统提供服务,但是这些应用程序不能完全信任,而操作系统内核是被信任的第三方。只有内核可以执行特权指令,方便为应用程序提供服务。
2 在外设连接计算机时,为了能够让计算机系统能够对外界做出适当的反应,需要提供中断机制,使得当外设和计算机系统有交互的时候,计算机系统能够做出相应的处理。
3 当出现意外异常如除零操作,需要操作系统来处理。
4 解决应用程序如何来使用系统服务的问题,操作系统需要通过系统调用提供一个接口让应用程序既方便的使用内核提供的服务,又不至于用户的行为对内核的安全产生影响。
内核的进入与退出
系统调用:应用程序主动向操作系统发出的服务请求
异常:非法指令或者其他原因导致当前指令执行失败(如:内存出错)后的处理请求
中断:来自硬件设备的处理请求
比较:
1 源头
中断:外设
异常:应用程序意想不到的行为
系统调用:应用程序请求操作系统提供服务
2 响应方式
中断:异步
异常:同步
系统调用:异步或同步
3 处理机制
中断:持续,对用户应用程序是透明的
异常:杀死或者重新执行意想不到的应用程序指令
系统调用:等待和持续
硬件中断服务例程可被打断
不同硬件中断源可能在硬件中断处理时出现
硬件中断服务例程中需要临时进制禁止中断请求,如电源有问题
中断请求会保持到CPU做出响应
异常服务例程可被打断
异常服务例程时可能出现硬件中断
异常服务例程课嵌套
异常服务例程可能出现缺页