中斷旗標
外观
此條目或其章節极大或完全地依赖于某个单一的来源。 (2025年9月7日) |
中斷旗標(Interrupt flag)簡稱IF,是CPU狀態暫存器裡的一個旗標,表示CPU對可遮罩中斷的處理方式[1]。若旗標設定為1,表示接受可遮罩中斷,若設為0,可遮罩中斷無效,一直到再設定為1後才有效。中斷旗標不影響不可遮罩中斷(NMI)或是用INT指令產生的軟體中斷。
設定和清除
[编辑]在X86架構的系統中,CLI指令(Clear Interrupt)和STI指令(Set Interrupt)分別可以設定和清除中斷指令。POPF(Pop Flags)會從堆疊中取出一個字,存到旗標暫存器,也可能會因此變更中斷旗標的內容[1]。
優先權層級
[编辑]在支援特權模式的系統中,只有特權應用程式(一般是作業系統内核)才能修改中斷旗標。在X86系統,上述說明只適用在保護模式的程式 (較早期的真實模式程式,隨時可以修改中斷旗標)。CLI和STI是特權指令,若不是特權模式的應用程式想要執行,會出現一般保護錯誤。若是非特權模式的應用程式執行POPF,不會變更中斷旗標。
中斷無效
[编辑]在x86指令集架構中,CLI多半會是單處理器系統中的同步機制。例如,操作系统會用CLI關閉中斷,讓内核程式(多半是驱动程序)可以避免中斷處理程式的競爭危害。若要在沒有暫停任一程式的情形下,修改數個相關的資料結構,此作法是必要的。
中斷有效
[编辑]X86指令集架構的STI可以設定中斷旗標,因此允許接受中斷。
有些允許中斷的指令中,中斷會在執行下一個指令時才有效。此情形下,在關閉中斷後立刻開啟中斷,會讓中斷不被認可。
多處理器下的考量
[编辑]中斷旗標只影響單一處理器。若是多元處理器系統,中斷處理程式會使用其他的同步機制,例如多執行緒下的锁。
相關條目
[编辑]- 中斷
- 旗標暫存器
- Intel 8259
- 進階可程式化中斷控制器(APIC)
- 中斷處理程式
- 不可遮罩中斷(NMI)
- 可程式中斷控制器(PIC)
- X86
參考資料
[编辑]- ^ 1.0 1.1 Intel Architecture Software Developer's Manual, Volume 2: Instruction Set Reference Manual (PDF). [2007-07-13].
外部連結
[编辑]- Intel 64 and IA-32 Architectures Software Developer Manuals - Retrieved 2017-09-14