下一页 上一页 目录

12. IRQ (中断请求)

12.1 概述

IRQ 是一种异步信号,发送给微处理器,通知其请求的工作已完成。

12.2 交互模式

                                 |<-->  IRQ(0) [Timer]
                                 |<-->  IRQ(1) [Device 1]
                                 | ..
                                 |<-->  IRQ(n) [Device n]
    _____________________________| 
     /|\      /|\          /|\
      |        |            |
     \|/      \|/          \|/
 
    Task(1)  Task(2) ..   Task(N)
              
             
             IRQ - Tasks Interaction Schema
  

发生了什么?

典型的操作系统使用许多 IRQ 信号来中断正常的进程执行,并进行一些内务处理。 所以:

  1. IRQ(i) 发生,Task(j) 被中断
  2. IRQ(i)_handler (IRQ(i) 处理程序) 被执行
  3. 控制权返回到被中断的 Task(j)

在 Linux 下,当一个 IRQ 到来时,首先调用 IRQ 包装例程 (命名为 "interrupt0x??"),然后执行“官方”的 IRQ(i)_handler。 这允许一些诸如时间片抢占之类的任务。


下一页 上一页 目录