The preemptible kernel Linux kernel code has always been non-preemptible Runs until it voluntarily releases the processor Interrupts excepted 2.6 adds a preemptible kernel option Kernel code can be interrupted too Reduces latency for high-priority processes No preemption when spinlocks are held Implications: Anything can happen between two instructions Uniprocessor machines look like SMP Care required with per-CPU variables