IRQ 是一种异步信号,发送给微处理器,通知其请求的工作已完成。
|<--> IRQ(0) [Timer] |<--> IRQ(1) [Device 1] | .. |<--> IRQ(n) [Device n] _____________________________| /|\ /|\ /|\ | | | \|/ \|/ \|/ Task(1) Task(2) .. Task(N) IRQ - Tasks Interaction Schema
典型的操作系统使用许多 IRQ 信号来中断正常的进程执行,并进行一些内务处理。 所以:
在 Linux 下,当一个 IRQ 到来时,首先调用 IRQ 包装例程 (命名为 "interrupt0x??"),然后执行“官方”的 IRQ(i)_handler。 这允许一些诸如时间片抢占之类的任务。