中断,异常,系统调用
定义:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f824284a7812b72fc40b694da8945924.png)
为什么应用程序不能直接访问外设:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a22e8f1b7677f4014a6c30d379f3ab47.png)
三者来源:
外设:键盘,鼠标,网络包,声卡。
意想不到的行为:除0,访问非法的地址空间。
提供的服务:打开文件,关闭文件,读写文件,发送网络包
处理时间:
系统调用:系统调用的同步和异步是可以设置的。根据自己的需求。
响应:
中断的处理方法:
设置中断标记,生成中断号。
保存当前进程的状态,中断处理程序处理相应的中断,中出中断标记。
异常处理:
操作系统先保存当前进程的状态,处理异常,再恢复进程的状态。
系统调用的处理:
app应用程序通过library库,直接访问系统调用的接口或触发一个从用户态(cpu所处的特权级的状态比较低,不能执行特权指令和访问IO)到内核态(cpu所处的特权级的状态比较高,可以执行任意的指令,可以完全控制硬件)的转换,
系统调用和函数调用的区别:
应用程序和操作系统拥有各自的堆栈,函数调用在一个堆栈上完成,而系统调用需要切换堆栈,还要完成从用户态到内核态这样特权级别的转换,所以系统调用比函数调用的开销要大。
这个边界指的是,内核态和用户态之间的切换。