基本概念与原理

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);
  • 系统调用:系统调用有一个 等待 的过程,同时也会 持续 产生,系统调用可以再产生系统调用。

# 四、参考资料

Last Updated: 2023-01-28 4:31:25