热门问题
时间线
聊天
视角

中断旗标

来自维基百科,自由的百科全书

Remove ads

中断旗标(Interrupt flag)简称IF,是CPU状态暂存器里的一个旗标,表示CPU对可遮罩中断的处理方式[1]。若旗标设定为1,表示接受可遮罩中断,若设为0,可遮罩中断无效,一直到再设定为1后才有效。中断旗标不影响不可遮罩中断英语non-maskable interrupt(NMI)或是用INT英语INT (x86 instruction)指令产生的软件中断。

设定和清除

X86架构的系统中,CLI指令(Clear Interrupt)和STI指令(Set Interrupt)分别可以设定和清除中断指令。POPF(Pop Flags)会从堆叠中取出一个字,存到旗标暂存器英语FLAGS register (computing),也可能会因此变更中断旗标的内容[1]

优先权层级

在支援特权模式的系统中,只有特权应用程序(一般是操作系统内核)才能修改中断旗标。在X86系统,上述说明只适用在保护模式的程式 (较早期的真实模式程式,随时可以修改中断旗标)。CLI和STI是特权指令,若不是特权模式的应用程序想要执行,会出现一般保护错误。若是非特权模式的应用程序执行POPF,不会变更中断旗标。

中断无效

x86指令集架构中,CLI多半会是单处理器系统中的同步机制。例如,操作系统会用CLI关闭中断,让内核程式(多半是驱动程序)可以避免中断处理程式英语Interrupt handler竞争危害。若要在没有暂停任一程式的情形下,修改数个相关的数据结构,此作法是必要的。

中断有效

X86指令集架构的STI可以设定中断旗标,因此允许接受中断。

有些允许中断的指令中,中断会在执行下一个指令时才有效。此情形下,在关闭中断后立刻开启中断,会让中断不被认可。

多处理器下的考量

中断旗标只影响单一处理器。若是多元处理器系统,中断处理程式会使用其他的同步机制,例如多执行绪下的

相关条目

参考资料

外部链接

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads