中断

1 中断定义

广义和狭义

  1. 广义:程序执行过程中,遇到急需处理的事件时,暂时中止CPU上现行程序的运行,转去执行相应的事件处理程序,待处理完成后再返回原程序被中断处或调度其他程序执行的过程。
  2. 操作系统是“中断驱动”的,中断是激活操作系统的唯一方式。
  3. 狭义:处理器之外的中断事件,与当前运行指令无关的中断事件。I/O中断、时钟中断、外部信号中断。

2 中断分类

外中断

  • 由 CPU 执行指令以外的事件引起,如 I/O 完成中断,表示设备输入/输出处理已经完成,处理器能够发送下一个输入/输出请求。此外还有时钟中断、控制台中断等。

内中断

  1. 异常中断。由 CPU 执行指令的内部事件引起,如非法操作码、地址越界、算术溢出等。
  2. 陷入中断。在用户程序中使用系统调用

3 中断事件

中断来源

  1. 由处理器、内存储器、总线等硬件故障引起

  2. 处理器执行机器指令引起。

    1. 除数为0,操作数溢出等算术异常:简单处理,报告用户;由用户编写中断续元程序处理
    2. 非法程序、用户态使用特权指令、地址越界、非法存取等指令异常:终止程序
    3. 终止进程指令:终止进程
    4. 虚拟地址异常:调整内存后重新执行指令
  3. 处理器执行陷入指令请求OS服务引起的;在操作系统中,它一般又被称作系统调用

    1. 请求分配外设、请求I/O等等
    2. 处理流程:陷入OS,保护现场,根据功能号查入口地址,跳转具体处理程序
  4. 来源于外围设备报告I/O状态的中断

    1. I/O完成:调整进程状态,释放等待进程
    2. I/O出错:等待人工干预
    3. I/O异常:等待人工干预
  5. 由外围设备发出的信号引起的中断事件

    1. 时钟中断、间断时钟中断:记时与时间片处理
    2. 设备报到与结束中断:调整设备表
    3. 键盘/鼠标信号中断:根据信号作出相应反应
    4. 关机/重启动中断:写回文件,停止设备与CPU

中断产生过程

  1. 发现中断源,提出中断请求
    1. 发现中断寄存器中记录的中断
    2. 决定这些中断是否应该屏蔽
    3. 当有多个要响应的中断源时,根据规定的优先级选择一个
  2. 中断当前程序的执行
    1. 保存当前程序的PSW/PC到核心栈
  3. 转向操作系统的中断处理程序

4 中断处理

处理原则

  1. 保护现场
  2. 停止设备
  3. 停止CPU
  4. 向操作员报告
  5. 等待人工干预

中断处理程序

  1. 操作系统处理中断事件的控制程序,主要任务是处理中断事件和恢复正常操作

中断处理过程

  1. 保护未被硬件保护的处理器状态
  2. 通过分被中断进程的PSW中断码字段,识别中断源
  3. 分别处理发生的中断事件
  4. 恢复正常操作
    1. 对于某些中断,在处理完毕后,直接返回刚刚被中断的进程
    2. 对于其他一些中断,需要中断当前进程的运行,调整进程队列,启动进程调度,选择下一个执行的进程并恢复其执行

中断屏蔽

  1. 当计算机检测到中断时,中断装置通过中断屏蔽位决定是否响应已发送的中断
  2. 有选择的响应中断。信号量控制访问临界区的时候,会屏蔽中断。

中断优先级

  1. 当计算机同时检测到多个中断时,中断装置响应中断的顺序
  2. 有优先度的响应中断
  3. 一种可能的处理次序
    1. 处理机硬件故障中断事件、自愿性中断事件、程序性中断事件、时钟中断等外部中断事件、输入输出中断事件、重启动和关机中断事件
  4. 不同类型的操作系统有不同的中断优先级

中断的嵌套处理

  1. 当计算机响应中断后,在中断处理过程中,可以再响应其他中断
  2. 操作系统是性能攸关程序系统,且中断响应处理有硬件要求,考虑系统效率和实现代价问题,中断的嵌套处理应限制在一定层数内,如三层
  3. 中断的嵌套处理改变中断处理次序,先响应的有可能后处理