操作系统:中断和异常

1.中断的作用

CPU上会运行两种程序,一种是操作系统内核程序(是整个系统的管理者),一种是应用程序

1.中断的特点
  • 在合适的情况下,操作系统内核会把CPU的使用权主动让给应用程序。
  • “中断”是让操作系统内核夺回CPu使用权的唯一途径。
  • “中断”会使cPU由用户态变为内核态,使操作系统重新夺回对CPU的控制权。
2.Cpu状态的切换
  • 内核态→用户态:执行一条特权指令――修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权。
  • 用户态→内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回cPU的使用权。

2.中断的类型

操作系统:中断和异常_第1张图片

1.内中断(也称异常,例外)

与当前执行的指令有关,中断信号来源于CPU内部。

1.触发条件:
若当前执行的指令是非法的,则会引发一个中断信号。

例子1:试图在用户态下执行特权指令

例子2:执行除法指令时发现除数为0(终止)

例子3:有时候应用程序想请求操作系统内核的服务,
此时会执行一条特殊的指令――陷入指令
该指令会引发一个内部中断信号。

2.陷入指令
执行“陷入指令”,意味着应用程序主动地将CPU控制权还给操作系统内核。
“系统调用”就是通过陷入指令完成的。

3.异常的分类

  • 陷阱,陷入:由陷入指令引发,是应用程序故意引发的。
  • 故障:由错误条件引起的,可能被内核程序修复。内核程序修复故障后会把 CPU使用权还给应用程序,让它继续执行下去。如:缺页故障。
  • 终止:由致命错误引起,内核程序无法修复该错误,因此一及不再将CPU使用权还给引发终止的应用程序,而是直接终止该应用程序。如:整数除0、非法使用特权指令。
2.外中断(也称中断,狭义的中断)

与当前执行的指令无关,中断信号来源于CPU外部。

例子1:时钟中断――由时钟部件发来的中断信号

例子2:I/O中断――由输入/输出设备发来的中断信号

中断的基本原理

不同的中断信号,需要用不同的中断处理程序来处理。
显然,中断处理程序一定是内核程序,需要运行在“ 内核态”

1.具体做法
  1. 当CPU检测到中断信号后,
  2. 判断中断信号类型
  3. 若是内中断:CPU在执行指令时会检查是否有异常发生;
  4. 若是外中断:每个指令周期末尾,CPU都会检查是否有外中断信号需要处理。
  5. 然后根据中断信号的类型查询“中断向量表”,
  6. 以此来找到相应的中断处理程序在内存中的存放位置。

你可能感兴趣的:(操作系统,windows,linux)