コンテキストスイッチ【context switching】
概要

マルチタスク環境では、コンピュータにCPUが一基しか搭載されていなくても、「タイムスライス」(time slice)と呼ばれる極めて短い時間ごとに実行するプログラムを自動的に切り替えていくことで、あたかも複数のプログラムを同時に実行しているように見せることができる。この切り替え動作をコンテキストスイッチという。
CPUがあるプロセスの実行を中断する際、その時点のプログラムカウンタや内部レジスタの値、スタック情報といった実行状態(これを「コンテキスト」という)をメインメモリ上のプロセス管理領域に退避する。続いて、次に実行すべきプロセスのコンテキストを同領域から読み込んでCPU内に復元し、前回の切り替え時に中断した箇所から処理を再開する。
コンテキストスイッチの仕組みはタスク切り替え以外にも活用されている。例えば、キーボード入力やタイマーの通知などハードウェアからの割り込み処理の開始・終了時にも行われるほか、アプリケーションが動作する「ユーザーモード」とOSカーネルが動作する「カーネルモード」(特権モード)の間で制御が移る際にも、実行状態の退避と復元が行われる。
コンテキストスイッチの実行には、レジスタの値の退避・復元や、キャッシュの入れ替え(フラッシュ)といったオーバーヘッドが伴う。切り替えの頻度が過度に高くなると、CPUが本来の処理よりも切り替え作業に多くの時間を費やすことになり、システム全体のスループットが低下する。なお、同じプログラム中のスレッド間の切り替えはプロセス間と比べてコンテキストの規模が小さく、オーバーヘッドが小さい特徴がある。
(2026.6.15更新)