コンテキストスイッチングとは
中央処理装置(CPU)の設計と操作における最大の前進の1つは、コンピューターのオペレーティングシステムの設計者が、ユーザーがマルチタスクを行えるようにする技術を開発したことです。 コンピューターに関するマルチタスクは、2つ以上のプログラムを同時に実行することです。 エンドユーザーの観点から見ると、これは複雑であるとは思えないかもしれませんが、実際にはシステム設計の大きな飛躍を表しています。 マルチタスクでは、CPUはさまざまなアクティブプログラムのすべての操作をジャグリングし、ユーザーがプログラム間で切り替えを行うたびに、各プログラムの位置を記録する必要があります。 コンテキストスイッチングは、CPUがさまざまなアクティブプログラムの状態を記憶および復元できるようにするプロセスで、このジャグリング行為を完了できるようにします。
コンテキストの切り替え中、CPUは現在処理中のプログラムをすべてドロップし、そのプログラム内の特定の場所を保存して、後で進行を再開できるようにします。 それを理解するために、コンテキストの切り替えは、複数の本を同時に読むようなもので、それぞれのページ番号を常に記憶しながら、それらの間を絶えず切り替えます。 コンテキスト切り替え操作中のプログラムの「ページ番号」情報は、プロセス制御ブロック(PCB)によって保持されます。 PCBは「スイッチフレーム」とも呼ばれます。 この情報は、再び必要になるまで、実際のCPU内のメモリに保存されます。
コンテキストの切り替えは、割り込み処理、マルチタスク、ユーザー切り替えの3つの状況で発生します。 割り込み処理では、実行中の別のプログラムが現在のプログラムを「割り込み」ます。 CPUは、割り込みを受信すると、コンテキスト切り替えを実行して、実行中のプログラムと即時データを要求するプログラムとの間をやり取りします。 マルチタスクでは、CPUはプログラム間を行き来し、それぞれに処理時間のタイムスライスを与え、コンテキスト切り替え操作を実行して2つの間を変更します。 一部のオペレーティングシステムでは、明示的に必要ではありませんが、オペレーティングシステムのユーザー切り替え中にコンテキスト切り替えも実行されます。
オペレーティングシステムまたはコンピューターのハードウェアのいずれかがコンテキスト切り替えを制御できます。 一部の最新のオペレーティングシステムは、プロシージャに対する組み込みハードウェアサポートを無視して、オペレーティングシステム自体を介してコンテキストスイッチングを制御するように設計されています。 これにより、コンテキストの切り替え中にオペレーティングシステムがより多くの情報を保存できるようになり、スイッチに関するより多くの情報を保持できるようになります。