操作系统与设备和程序交互
在操作系统正常运行之后,操作系统如何与设备和程序交互?
在这就就涉及到interface(接口)的设计问题。
操作系统的interface是什么呢?
在我们看来,操作系统的interface包含三个
- 中断(面向外设是通过中断和I/O来处理的)
- 系统调用和异常(面向应用程序是通过系统调用和异常来提供相应的功能)
我们需要对着三个interface有清晰的认识,才能够知道,操作系统如何通过中断来控制和管理外设,操作系统如何通过系统调用和异常来提供相应的服务和支持的。
定义
系统调用(来源于应用程序)
- 应用程序主动向操作系统发出服务请求
异常(来源于不良的应用程序)
- 非法指令或其他坏的处理状态(如:内存出错)
中断(来源于外设)
- 来自不同的硬件设备的计时器和网络中断
应用程序为什么不能够直接去访问外设呢?
- 在计算机运行中,内核是被信任的第三方
- 只有内核可以执行特权指令
- 为了方便应用程序
从安全的角度来考虑,应用程序访问外设是不被信任的也就是说假设允许应用程序访问外设安全性无法得到保障。而且计算机系统为了限制应用程序访问权限只能够访问被允许的地址空间,访问其他程序的地