アプリを実行するときとOSを実行するときとでは、CPUの動作モードが異なる。
という。
カーネルモードでは、コンピュータに接続されているすべてのハードウェアにアクセスできるが、ユーザモードにはいろいろな制約がある。 ユーザモードで動くソフトウェアが異常動作しても、アクセスできる機能に制限があるおかげで、システム全体や周辺機器に影響が及ぶことはない。
これらのモードは、アプリやOSの処理に応じて切り替えられる。
例えば、アプリがデータを送信する時には、OSに対してデータの送信を要求するシステムコールを呼び出すことで、動作モードがユーザモードからカーネルモードに変更される。
また、ネットワークハードウェアにパケットが到着した時などは、データを処理するために、ハードウェア割り込みによってドライバモジュールが呼び出される。
ハードウェア割り込みを処理するルーチンを割り込みハンドラor割り込みサービスルーチン(ISR:Interrupt Service Routine)といい、これらはカーネルモードで動作するため、割り込み発生時には自動的にカーネルモードに切り替わることになる。