首页 > 技术文章 > 中断与异常机制

engure 2021-10-21 12:01 原文

中断异常机制介绍

操作系统是由 “中断驱动” 或者 “事件驱动” 的

主要作用:

  1. 及时处理设备发来的中断请求
  2. 可使 OS 捕获用户程序提出的服务请求
  3. 防止用户程序执行过程中的破坏性工作
  4. 。。。

特点:

  1. 随即发生的
  2. 自动处理的(硬件来完成)
  3. 可恢复的

为何引入中断与异常?

中断的引入:为了支持CPU和设备之间的并行操作

当 CPU 启动设 备进行输入/输出后,设备便可以独立工作,CPU 转去处理与此次输入/输出不相关的事情;当设备完成输入/输出后,通过向 CPU 发中断报郜此次输入/输出的结果,让 CPU 决定如何处理以后的事情

异常的引入:表示CPU执行指令时本身出现的问题

如算术溢出、除零、取数时的奇偶错,访存地址时越界或执行了 “陷入指令” 等,这时硬件改变了 CPU 当前的执行流程,转到相应的错误处理程序或异常处理程序或执行系统调用

早期两者都是中断,后来有了区分,区分的标准是主要是产生的原因

事件分类

  1. 中断(外中断)
    1. IO 中断。比如键盘上按 ctrl+c、网卡接收到数据包、打印机结束、读盘结束
    2. 时钟中断。比如设置的定时器到时间了、cpu 上运行的时间片时间到了
    3. 硬件故障。比如笔记本电脑电池耗尽报警、读内存奇偶检验错误
  2. 异常(内中断)
    1. 系统调用
    2. 页故障/页错误
    3. 保护性异常
    4. 断点异常
    5. 其他程序的异常,如算术溢出等

中断:外部事件,正在运行的程序所不期望的
异常:正在执行的指令引发的

image-20211021115751615

中断异常机制工作原理

中断异常机制是现代计算机系统的核心机制之一。

硬件和软件相互配合而使计算机系统的已充分发挥能力。

硬件主要工作是响应

捕获中断源发出的中断/异常请求,以一定方式响应,将处理器控制权交给特定的处理程序。

软件的主要工作是处理

识别中断/异常类型并完成相应的处理。

硬件部分

image-20211021111113102

中断响应示意图

image-20211021110245697
  1. 设备发送中断信号
  2. 中断硬件部件保存现场,把内存保存到了系统堆栈内,主要是 PSW(程序状态字) + PC
  3. 中断硬件根据中断码查中断向量表,得到对应的处理程序
  4. 把中断处理程序入口地址等信息推送到相应的寄存器
  5. 执行中断处理程序(从中断断点开始执行,完事之后继续执行)

软件部分

中断处理程序

设计操作系统时,为每一类中断/异常时间都编好相应的处理程序,并设置好中断向量表

系统运行时若响应中断,中断硬件部件将 CPU 控制权转给中断处理程序:

  1. 保存相关寄存器信息
  2. 分析中断/异常的具体原因
  3. 执行对应的处理功能
  4. 恢复现场,返回被事件打断的程序

小结

以设备输入输出中断为例:

  1. 打印机给 CPU 发中断信号
  2. CPU 处理完当前指令后检测到终端,判断出中断来源并向相关设备发确认信号
  3. CPU 开始为软件处理终端做准备:
    1. CPU 状态被切换为内核态
    2. 在系统栈中保存被中断程序的重要上下文环境,主要是程序计数器 PC,程序状态字 PSW
  4. CPU 根据中断码查中断向量表,获得与该中断相关的处理程序的入口地址,并将 PC 设置成该地址,新的指令周期开始时,CPU 控制转移到中断处理程序
  5. 中断处理程序开始工作
    1. 在系统栈中保存现场信息
    2. 检查 I/O 设备的状态信息,操纵 I/O 设备或者在设备和内存之间传送数据等等
  6. 中断处理结束后,CPU 检测到中断返回指令,从系统栈中恢复被中断程序的上下文环境,CPU 状态恢复成原来的状态,PSW 和 PC 恢复成中断前的值,CPU 开始一个新的指令周期

1-6 中只有 5 工作在软件部件,其余都工作在硬件部件

参考

推荐阅读