前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图解中断 | 中断从产生到消失的一生

图解中断 | 中断从产生到消失的一生

作者头像
虚拟化云计算
发布2023-03-27 15:54:09
3030
发布2023-03-27 15:54:09
举报
文章被收录于专栏:虚拟化云计算

这是图解系列之中断

我是cloud3

关注阅读更多图解

中断系统是现代PC的基础架构之一。中断处理在操作系统也具有举足轻重的作用 。

中断处理,伴随着软硬件的协同,伴随着外设与CPU的传递,伴随着内核栈和用户栈的切换,下面我们就看一下中断短暂而充实的一生。

以上是从设备触发到中断处理函数处理完毕的整个流程,为了看到中断处理的全貌,我们隐藏了一些实现细节,具体的细节以后再单独描述。

下面对每个调节进行简单的描述。

从设备到APIC

外部中断的发起者是设备,设备通过电平触发IRQ信号线产生一个中断。

检测到中断信号后,IOAPIC使用写内存的方式把中断信息发送到系统总线上。

LAPIC接收到中断信息后把中断能否发送给CPU处理。

CPU内部

CPU感知到中断线后,从LAPIC上接收中断号。

切换到内核栈。保存当前进程栈,例如在X86上会保存SS, ESP, EFLAGS, CS, EIP以及错误码。

然后通过IDTR寄存器和中断号找到中断服务程序的入口。

中断处理程序

一般把中断处理分为两个半部:中断处理程序是上半部(top half)和下半部(bottom half)。

上半部立会即执行,只做有严格时限的工作,例如对接收的中断进行应答或复位硬件,这些工作都是在所有中断被禁止的情况下完成的。

能够被允许稍后完成的工作会推迟到下半部(bottom half)去做。

从中断处理返回到CPU

恢复之前保存的flag和寄存器状态,恢复之前运行的进程。

再到中断处理程序

运行中断处理程序的下半部,把中断任务执行完成。

上面为了看到中断处理的全貌,我们隐藏了一些实现细节,具体的细节后面会在单独描述。

这是图解系列之中断

我是cloud3

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 虚机 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档