本文转载自微信公众号「虚机」,图解作者cloud3 。中断中断转载本文请联系虚机公众号。从产
中断系统是消失现代PC的基础架构之一。中断处理在操作系统也具有举足轻重的图解作用 。
中断处理,中断中断伴随着软硬件的从产协同,伴随着外设与CPU的消失传递,伴随着内核栈和用户栈的图解切换,下面我们就看一下中断短暂而充实的中断中断一生。
以上是从产从设备触发到中断处理函数处理完毕的整个流程,为了看到中断处理的消失全貌,我们隐藏了一些实现细节,服务器托管图解具体的中断中断细节以后再单独描述。
下面对每个调节进行简单的从产描述。
外部中断的发起者是设备,设备通过电平触发IRQ信号线产生一个中断。
检测到中断信号后,IOAPIC使用写内存的方式把中断信息发送到系统总线上。
LAPIC接收到中断信息后把中断能否发送给CPU处理。
CPU感知到中断线后,从LAPIC上接收中断号。
切换到内核栈。保存当前进程栈,例如在X86上会保存SS, ESP, EFLAGS, CS, EIP以及错误码。
然后通过IDTR寄存器和中断号找到中断服务程序的入口。
一般把中断处理分为两个半部:中断处理程序是上半部(top half)和下半部(bottom half)。
上半部立会即执行,源码下载只做有严格时限的工作,例如对接收的中断进行应答或复位硬件,这些工作都是在所有中断被禁止的情况下完成的。
能够被允许稍后完成的工作会推迟到下半部(bottom half)去做。
恢复之前保存的flag和寄存器状态,恢复之前运行的进程。
运行中断处理程序的下半部,把中断任务执行完成。
上面为了看到中断处理的全貌,我们隐藏了一些实现细节,具体的细节后面会在单独描述。源码库