基本概念与原理
睡不醒的鲤鱼 2021-05-21 操作系统 uCore
# 一、基本概念
系统调用(system call):应用程序 主动 向操作系统发出的服务请求。
异常(exception):非法指令或者其他原因导致 当前指令执行失败(如:内存出错)后的处理请求。
中断(hardware interrupt):来自硬件设备(外设,device)的处理请求或系统调佣。
# 二、为什么需要中断、异常和系统调用?
- OS 内核是被信任的第三方
- OS 内核可以执行特权指令,管理硬件
- OS 内核提供了各种 Service
# 2.1 中断希望解决的问题
Q: 当外设连接计算机时,会出现什么现象?
A: 当外设连接计算机时,需要计算机来管理和控制外设,包括显示器、显卡、键盘鼠标等。如果没有中断,CPU 就需要不停地查询这些外设的状态,开销过大,中断机制可以提升和外设交互的效率。
# 2.2 异常希望解决的问题
Q: 当应用程序处理意想不到的行为时,会出现什么现象?
A: 当应用程序处理意想不到的行为,比如除零错误、访问异常地址时,操作系统会进行接管,对有问题的应用程序进行相应的惩罚。比如让应用程序退出,也可以把应用程序的执行状态保存下来,通常用于调试问题。
# 2.3 系统调用希望解决的问题
Q: 用户应用程序是如何得到系统服务?
A: 操作系统提供了各种各样的服务,比如文件访问、I/O、网络等,如果让应用程序实现这些服务过于复杂,而当操作系统实现了这些服务之后,应用程序只需要提供一些简单的系统调用的访问请求,就可以得到相应的服务了。
# 三、源头、响应方式和处理机制
# 3.1 源头
- 中断:外部中断来源于 外设,也叫 “硬中断”;内部中断来源于 系统调用,也叫 “软中断”;
- 异常:来源于 应用程序 意想不到的行为;
- 系统调用:来源于 应用程序 请求 OS 服务(通过函数库发出系统调用请求)。
# 3.2 响应方式
- 中断:异步,外设和应用程序所用的 CPU 是并行执行的,外设可以在 任意时刻 产生一个中断,来打断应用程序;
- 异常:同步,应用程序执行到某一阶段,代码执行错误;
- 系统调用:异步或同步,同步在执行系统调用时会阻塞至完成,异步会直接返回,在执行完成后打断应用程序并继续执行。
# 3.3 处理机制
- 中断:中断会持续产生,所有对于中断的处理,操作系统都会在硬件的支持下完成,对应用程序透明;
- 异常:将应用程序杀死 或者 重新执行异常指令(如 page fault);
- 系统调用:系统调用有一个 等待 的过程,同时也会 持续 产生,系统调用可以再产生系统调用。