禁用硬件和软件中断(Disable Hardware & Software Interrupts)

2019-07-21 03:31发布

是否有可能禁止与ASM / C / C ++程序中的所有中断,以获取有关处理器完全控制?

如果是的话 - >怎么样?

如果没有 - >怎么办?“原子”操作的系统调用的工作(例如进入一个关键部分)?

谢谢你的帮助!

Answer 1:

在x86汇编所述的命令是

  • sti将中断使能位
  • cli明确的中断使能位

这些命令设置和清除IF标志 。 当IF标志设置,则CPU将处理硬件中断,当它是明确的CPU会忽略硬件中断。 它不影响非屏蔽的处理中断,虽然,也不会影响软件中断或异常。 这些指令还没有在非特权模式下(通常环比0一切都更高,取决于工作IOPL )虽然。



Answer 2:

在x86和其他大多数现代处理器就可以得到原子指令。 未存在保证那些要执行前另一个线程/处理器可以访问该存储器完成。

在Win32下你有互锁*函数抽象,从你在支持的平台。

在基于MIPS很多指令可以有一个。我的加入指令结束,以保证联锁。



Answer 3:

在x86具有在FLAGS一个中断标志(IF)进行注册。 当这个标志被设置为0,硬件中断被禁止,否则会被启用。 该命令CLI设置该标志为0,并STI将其设置为1。该指令值加载到寄存器FLAGS(如POPF和IRET)也可以修改该标志。

祝好运!



文章来源: Disable Hardware & Software Interrupts