您的位置首页>企业动态>

你知道Linux成中断机制?

导读大家好,我是极客范的本期栏目编辑小友,现在为大家讲解你知道Linux成中断机制?问题。中断向量中断被定义为改变处理器执行指令顺序的事件

音频解说

大家好,我是极客范的本期栏目编辑小友,现在为大家讲解你知道Linux成中断机制?问题。

中断向量

中断被定义为改变处理器执行指令顺序的事件。这样的事件对应于由中央处理器芯片中的外部硬件电路产生的电信号。中断通常分为同步中断和异步中断。

同步中断是指在执行指令时,由CPU控制单元产生的中断。之所以称之为同步,是因为CPU只会在指令终止后才会发出中断。

异步中断由其他硬件设备根据CPU时钟信号随机生成。

在英特尔处理器中,同步中断称为异常,异步中断称为中断。

异常(同步中断)

当中央处理器在执行指令时检测到异常时,它将生成处理器检测到的异常,这可以进一步区分,这取决于当中央处理器控制单元生成异常时存储在内核堆栈的eip寄存器中的值。

故障

故障通常可以被纠正。更正后,程序可以重新启动。存储在eip寄存器中的值是导致故障的指令的地址。

圈套

陷阱指令执行后立即报告陷阱。内核用控制惹恼程序后,可以继续执行而不失去连续性。存储在eip中的值是稍后要执行的指令的地址。陷阱的主要目的是调试程序。

异常结束

中止,出现严重错误,控制单元出错,导致异常的指令的确切位置无法保存在eip寄存器中。中止用于报告严重错误,如硬件故障或系统表中的值无效或不一致。这种异常将迫使进程中止。

编程异常(软中断)

应程序员的请求发送的Programmed excepTIon由int或int3指令触发。

中断(异步中断)

非屏蔽中断

不匹配的中断,有一些危险的事件会导致未屏蔽的中断,如硬件故障。不匹配的中断总是被CPU识别。

屏蔽中断

可屏蔽中断。来自输入输出设备的所有中断请求都会产生屏蔽中断。只要屏蔽的中断仍然被屏蔽,控制单元就可以忽略它。

中断描述符表

IDT

IDTR中断描述符表寄存器,通过IDTR找到中断描述符表。

每个条目由8个字节组成。它包含段选择器和偏移等信息。

对于段选择器,我们需要找到包含段信息的全局描述符表(GDT)和局部描述符表(LDT)。分别用GDTR和LDTR去找。

中断描述符中的每个条目称为门描述符,其类型有任务门、中断门、陷阱门和系统门。

1.任务:Linux不使用任务门来切换任务。

2.中断门:当控制权通过中断门进入中断处理程序时,处理器清除IF标志,即关闭中断。避免嵌套中断的发生。DPL=0

3.陷阱门:当控制通过陷阱门进入处理程序时,IF标志保持不变,即中断不关闭。DPL=0

4.系统门:这是由Linux内核专门设置的,用于用户模式进程访问英特尔的陷阱门,所以门描述符的DPL为3。四个Linux异常处理程序通过系统门被激活,它们的向量是3、4、5和128。也就是说,在用户模式下,可以使用四个汇编指令,int3、into、bound和int0x80。

土耳其

补充:

任务寄存器TR

TR用于处理特殊的任务状态段。TSS包含当前任务的重要信息。

TR寄存器用于存储当前任务TSS段的16位段选择器、32位基址、16位段长度和描述符属性值。它引用了GDT表中的一个TSS类型的描述符。

指令LTR和str分别用于加载和保存TR寄存器的段选择器部分。

当使用LTR指令将选择器加载到任务寄存器中时,TSS描述符中的段基址、段限制长度和描述符属性会自动加载到任务寄存器中。执行任务切换时,处理器会自动将新任务TSS的段选择器和段描述符加载到任务寄存器TR中。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。