是否有可能禁止与ASM / C / C ++程序中的所有中断,以获取有关处理器完全控制?
如果是的话 - >怎么样?
如果没有 - >怎么办?“原子”操作的系统调用的工作(例如进入一个关键部分)?
谢谢你的帮助!
是否有可能禁止与ASM / C / C ++程序中的所有中断,以获取有关处理器完全控制?
如果是的话 - >怎么样?
如果没有 - >怎么办?“原子”操作的系统调用的工作(例如进入一个关键部分)?
谢谢你的帮助!
在x86汇编所述的命令是
sti
将中断使能位 cli
明确的中断使能位 这些命令设置和清除IF标志 。 当IF标志设置,则CPU将处理硬件中断,当它是明确的CPU会忽略硬件中断。 它不影响非屏蔽的处理中断,虽然,也不会影响软件中断或异常。 这些指令还没有在非特权模式下(通常环比0一切都更高,取决于工作IOPL )虽然。
在x86和其他大多数现代处理器就可以得到原子指令。 未存在保证那些要执行前另一个线程/处理器可以访问该存储器完成。
在Win32下你有互锁*函数抽象,从你在支持的平台。
在基于MIPS很多指令可以有一个。我的加入指令结束,以保证联锁。
在x86具有在FLAGS一个中断标志(IF)进行注册。 当这个标志被设置为0,硬件中断被禁止,否则会被启用。 该命令CLI设置该标志为0,并STI将其设置为1。该指令值加载到寄存器FLAGS(如POPF和IRET)也可以修改该标志。
祝好运!