课程笔记

6.3硬件中断与异常

阅读入口

三类事件

硬件中断是设备、定时器等硬件向处理器发出的事件通知。它通常与当前执行的具体指令无关,因此称为异步事件。处理器在体系结构允许的时机响应中断,转入相应的处理程序。

例如,设备可以在一次输入输出完成后发出中断请求;定时器也可以产生中断以便内核处理计时与调度。定时器的位置、周期和触发方式由具体平台配置,不必都位于CPU内部,也不必始终采用固定周期。

与之相对,异常通常与当前指令的执行同步产生。中断与异常都可能引起执行流转移,但来源和返回行为不应混为一谈。

处理器异常通常由当前指令执行时的条件同步触发,例如缺页、整数除零或无效指令。异常会把控制交给处理程序;是否能继续执行取决于异常原因、体系结构与操作系统的处理方式。

异常与硬件中断的区别在于触发关系:前者通常与当前指令同步,后者通常是设备或定时器发出的异步请求。

课件把异常称为“异常中断”或“同步中断”,与两类硬件中断并列,与这里的划分一致。知识点把“是否由当前指令触发”写成了显式判据,判断时直接套这一条即可。

硬件中断的处理

一种简化的处理过程是:硬件提出请求,处理器响应并保存必要状态,内核运行处理程序,再恢复执行或根据调度结果运行其他线程。具体保存哪些寄存器、何时响应以及能否屏蔽,取决于体系结构与操作系统。

定时器事件可以让内核更新计时和调度状态。处理一次中断并不必然切换进程;是否切换由内核当时的调度决定。

先看硬件请求的处理过程,再看异常在不同原因下可能采取的处理方式。

学习安排

课件按来源分为I/O硬件中断、CPU硬件中断和异常三类,再比较它们的同步性。阅读时从“事件由谁产生、是否由当前指令触发”入手,例子自然能归类。

建议顺序:先看I/O中断的处理流程,建立“设备发信号,CPU保存现场,执行ISR,恢复现场”的框架;再看时钟中断,理解CPU内部也会产生异步中断;最后比较故障、陷阱等异常的返回行为;具体行为取决于体系结构与系统处理。

系统调用在6.4展开;它是程序主动发起的同步内核请求,具体入口指令与异常分类取决于体系结构。

课程约定

  • 课件把异常称为“异常中断”或“同步中断”,与I/O硬件中断、CPU硬件中断并列;本章沿用这个三分法。
  • “同步/异步”按是否由当前指令触发判断,不按事件来自CPU内部还是外部判断。
  • 时钟中断的10ms是课件中的示例;实际触发方式与时间间隔由系统配置决定。
  • 比较三类事件时,除了来源和同步性,还要写“处理完后返回到哪里”;这张表比只背例子更能应付判断题。

易错点

  • 定时器可以位于处理器内部或其他硬件中;中断通常与当前指令异步。
  • 异常不等于程序崩溃:系统调用是程序主动触发的陷阱,缺页也可能被内核修复后继续执行。
  • 可处理的缺页在页面准备好后通常重试触发指令;系统调用正常返回时继续后续用户代码。
  • 中断处理程序保存和恢复的是被中断程序的上下文,是否切换进程由调度器决定,ISR本身不负责选择下一个进程。
  • I/O硬件中断和CPU硬件中断都属于硬件中断;异常不属于硬件中断。

复习要点

复习时拿四个事件自测:键盘按下、时钟到期、缺页、系统调用。对每个事件依次写出来源、同步或异步、处理后的返回位置;如果某一列卡住,再回到知识点查对应段落。

判断顺序可以固定为:先看有没有外部设备信号,再看是不是当前指令触发,最后看处理程序能否修复。这个顺序能避免把时钟中断和系统调用都笼统地叫“中断”。