这是我们疯狂内核系列的中断处理专题开山之作,中断,广义的来说通常被定义为一个事件,该事件触发改变处理器执行指令的顺序。狭义地来说,针对80x86体系,中断被分为中断和异常,又叫同步中断和异步中断。注意广义的中断和狭义的中断千万不要混淆,以后我的博文中所有所谓的“中断”二字,就是指狭义的中断,即Linux处理80x86异步中断的细节。我们首先必须好好理清一下80x86体系中,中断和异常的区别:
中断:由其他硬件依照CPU时钟信号随机产生。
异常:由CPU本身执行指令时,CPU控制单元在一条指令终止之后产生。
更进一步,Intel文档中又把中断和异常继续进行了细分:
中断:
1. 可屏蔽中断:当中断被屏蔽,则CPU控制单元就忽略它。这里提一下,所有的IRQ中断都是可屏蔽中断。
2. 非可屏蔽中断:总由CPU辨认并处理。所以,其为非常紧急的硬件故障。
异常:
1. 处理器探测到得异常
(1)故障(fault)
通常可以纠正,所谓的“纠正”,就是在执行一条指令时发现故障,转而执行对应的异常处理程序;一旦纠正完毕,即异常处理程序完成,程序就可以在不失连贯性的情况下,重新执行刚才那条发现故障的指令。保存在eip寄存器中的值是引起故障的指令地址,因此,当异常处理程序终止时,那条指令会被重新执行。
(2)陷阱(trap)
陷阱的主要用途是为了调试程序。在这种情况下,eip
中断的分类
最新推荐文章于 2024-08-31 21:53:57 发布
本文详细介绍了80x86体系结构中中断和异常的区别,包括可屏蔽中断、非可屏蔽中断、处理器探测到的异常(故障、陷阱、异常终止)以及软中断。中断由硬件随机产生,异常由CPU执行指令时触发。异常可以分为可纠正的故障、调试用的陷阱和不可恢复的异常终止。软中断则是由程序员通过特定指令触发的编程异常,常用于系统调用和调试。
摘要由CSDN通过智能技术生成