プリエンプション
どんなシステム設計でも、プリエンプション不可能な操作が存在する。それは通常カーネルの機能や割り込み処理であり、それらを完了まで実行できるようにしておかないと、競合状態が発生しやすくなり、デッドロックを誘発する。タスクがカーネル機能を処理中は、スケジューラがプリエンプションできないようにすることで、システムの反応性を若干犠牲にするが、カーネル設計を簡略化することになる。システムの特権レベルを指定するCPUモード(ユーザモードとカーネルモード)も、タスクがプリエンプション可能かどうかを判断する基準のひとつとなる。
一部のシステムはプリエンプティブ・カーネルであり、カーネルモードのタスクであってもプリエンプション可能となっている。例えば、Linuxカーネル 2.6 や一部のBSD系がある。
別のシステムは、マイクロカーネル設計で反応性を向上させ、場合によってはプロセスのプリエンプションの必要性そのものを実質的に削減している。実装例としてMach 3.0をリアルタイムに対応させたRT-Machがある。