= Solution
\b[Yes: supervisor execution with interrupts enabled is normal and useful.] Much of the <operating-system kernel> can execute with interrupts enabled so that timers, device completions and other urgent events receive prompt service. Disabling them for every potentially long system call would cause excessive latency and could prevent receipt of the very event needed for progress.
Handlers and shared data must then be protected against interrupt-time reentrancy. Disable relevant interrupts only for short critical sequences or use an appropriate synchronization mechanism; on multiple processors, local <interrupt masking> alone does not protect against another processor. Interrupt enablement and <kernel preemption> are different: an interrupt can be serviced without allowing an arbitrary process context to preempt the interrupted kernel operation.
Back to article page