中断和异常

中断信号的作用

  • 作用
    • 允许处理器执行正常控制流之外的代码
    • 中断与进程上下文切换的区别
      • 中断或异常处理程序执行的代码不是一个进程。
      • 相比于上下文切换,中断的上下文很少,需要时间更少

中断和异常

  • 中断(CPU外其他设备产生)
    • 可屏蔽中断:可被屏蔽,屏蔽后控制单元忽略该中断
    • 非屏蔽中断:少数几个危机事件引起非屏蔽中断(如硬件故障)
  • 异常(CPU控制单元产生)

    • 处理器探测异常
      • 故障
      • 陷阱
      • 异常终止
    • 编程异常(软中断)
      • 编程者发出请求时发生
  • 中断描述符表(IDT)

    • 存储中断向量及对应的中断或异常处理程序的入口地址
    • IDT包含的三种类型描述符
      • 任务门:中断信号发生时,必须取代当前进程的那个进程的TSS选择符放在任务门中
      • 中断门: 包含端选择符和中断或异常处理程序的段内偏移量
      • 陷阱门:与中断门类似。
  • 中断和异常的硬件处理

    • 详见P146
  • 初始化中断描述符表

  • 异常处理

    • 异常处理程序的标准结构
      • 在内核堆栈保存大多数寄存器的内容
      • 对异常进行处理
      • 从异常处理函数中退出
  • 中断处理

    • 与异常处理的主要区别: 中断到达时,一个完全无关的进程可能在运行
    • 三种主要类型的中断:
      • I/O中断
      • 时钟中断
      • 处理器间中断
    • I/O中断处理步骤
      • 在内核态堆栈中保存IRQ的值和寄存器的内容
      • 为正在给IRQ线服务的PIC发送一个应答
      • 执行共享这个IRQ的所有设备的中断服务例程
      • 跳到ret_from_intr()的地址后终止

软中断及tasklet

从中断和异常返回