【中断异常】中断的响应和服务

本文详细阐述了中断响应的过程,从CPU接收到中断请求开始,包括如何通过中断控制器获取中断向量,中断门的使用,堆栈切换,保存现场,执行中断服务程序,以及中断处理后的恢复和调度。主要涉及中断服务程序的执行路径和中断处理的原子性保证。
摘要由CSDN通过智能技术生成

这里,我们假定外设的驱动程序都已经完成了初始化后,并且已把相应的中断服务程序挂入到特定的中断请求队列中,系统正在用户空间正常运行(此时中断必然是开着),并且某个外设已经产生了一次中断请求。该请求通过中断控制器i8259A达到了CPU的中断请求引线INTR;由于中断是开着的,所以CPU在执行完当前指令后就来响应该次中断请求;


(1)CPU根据中断控制器取得中断向量,然后根据中断向量从中断向量表IDT中找到相应的表项,而该表项应该是个中断门;这样CPU就根据中断门的设置而达到了该通道的总服务程序的入口,假定为IRQ0x03_interrupt。由于中断是用户空间发生的,运行级别CPL为3,;而中断服务程序属于内核,其运行级别DPL为0;所以,CPU要从寄存器TR所指的当前TSS中取出内核(0级)的堆栈指针,并把堆栈切换到内核堆栈,即当前进程的系统空间堆栈;而每次从系统空间返回时要返回到用户空间时堆栈一定回到其原点;也就是说CPU进入IRQ0x03_interrupt时,堆栈中除寄存器EFLAGS的内容以及返回地址&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值