コンテキストスイッチ (コンテキストスイッチ) は、コンピューター用語では環境スイッチとも呼ばれ、複数のプロセスが単一の CPU リソースを共有できるように、CPU の状態 (コンテキスト) を保存および再構築するコンピューティング プロセスです。 。 CPU 上のプロセスを交換する場合は、まず現在のプロセスのステータスを保存し、次に実行されるプロセスのステータスを CPU に読み取る必要があります。
いつ交換するか?
コンテキスト交換が発生する状況は次の 3 つが考えられます:
複数のワーカー
最も一般的なのは、一部のスケジュール アルゴリズムでは、旅程が変更される場合があります。一時的に CPU を離れて、別のプロセスが CPU 操作に入るようにするために必要です。プリエンプティブ多重化システムでは、各トリップは可変長の時間にわたって順番に実行されます。これらの期間はタイム スライスと呼ばれます。プロセスが自発的に CPU を放棄しない場合 (たとえば、I/O 操作を実行する場合、プロセスは CPU を使用する権利を放棄する必要がある)、制限時間が経過すると、システムは時限割り込みを生成します。オペレーティング システムは、他のプロセスの実行をスケジュールします。このメカニズムは、プロセッサー操作に依存するプロセスによって CPU が独占されないようにするために使用されます。スケジュールされた割り込みがない場合、プロセスは自発的に CPU を放棄しない限り実行を続けます。多くの I/O 命令を含むトリップでは、CPU を放棄する必要があるまで長時間実行できないことがよくありますが、プロセッサへの依存度が高いトリップでは、I/O 操作が比較的少なくなりますが、CPU を使用し続けることができます。 、独占現象を形成します。これがコンボイ効果です。
割り込み処理
CPUは割り込み(Interrupt)を受信した際、コンテキストスイッチングを行う必要があります。
ユーザーモードまたはカーネルモードの交換
ユーザーモードとカーネルモードの交換が発生する場合、コンテキスト交換の必要はなく、ユーザーモードとカーネルモードの交換自体はコンテキスト交換ではありません。ただし、オペレーティング システムによっては、この時点でコンテキスト交換ステップが実行される場合があります。
コンテキスト交換: 具体的な手順
交換では、スケジューラー(スケジューラー)がこの旅行に戻りたいときに再構築できるように、最初の旅行のステータスをどこかに記録する必要がありますこの旅程は続きます。
ここでのいわゆる「トリップ ステータス」には、このトリップで使用されるすべてのレジスタ、特にプログラム カウンターに加えて、オペレーティング システムが必要とするすべての特定のデータが含まれます。これらのデータは通常、プロセス コントロール ブロック (PCB) と呼ばれるデータ構造に格納されます。
コンテキスト交換: ソフトウェアまたはハードウェアによって実装される
コンテキスト交換は、主にソフトウェアによって実装されるか、ハードウェアによって実装されるかに分けることができます。 Intel 80386 や同じシリーズのハイエンド プロセッサなどの一部の CPU は、コンテキスト スイッチングをサポートするハードウェア設計を採用しています。