logo

OS(オペレーティングシステム)におけるコンテキストスイッチング

コンテキスト切り替えは、システム内の CPU を使用してプロセスをある状態から別の状態に切り替え、その機能を実行するためにオペレーティング システムによって使用される技術または方法です。システム内で実行を切り替えると、実行中の古いプロセスのステータスがレジスタの形式で保存され、タスクを実行する新しいプロセスに CPU が割り当てられます。新しいプロセスがシステムで実行されている間、前のプロセスは準備完了キューで待機する必要があります。古いプロセスの実行は、別のプロセスが停止した時点から開始されます。これは、システムに追加のプロセッサを必要とせずに複数のタスクを実行するために、複数のプロセスが同じ CPU を共有するマルチタスク オペレーティング システムの特性を定義します。

ディレクトリの名前を変更する

コンテキストスイッチの必要性

コンテキストの切り替えは、すべてのプロセス間で単一の CPU を共有して、その実行を完了し、システムのタスク ステータスを保存するのに役立ちます。プロセスがシステムにリロードされると、プロセスの実行は競合が発生した同じポイントから開始されます。

オペレーティング システムでコンテキスト スイッチングが必要になる理由は次のとおりです。

  1. あるプロセスから別のプロセスへの切り替えは、システム内で直接行われるわけではありません。コンテキストの切り替えは、複数のプロセス間を切り替えるオペレーティング システムが CPU のリソースを使用してタスクを実行し、コンテキストを保存するのに役立ちます。後で同じ時点でプロセスのサービスを再開できます。現在実行中のプロセスのデータまたはコンテキストを保存しない場合、プロセス間の切り替え中に保存されたデータが失われる可能性があります。
  2. 優先度の高いプロセスが準備完了キューに入った場合、現在実行中のプロセスは、システム内のタスクを完了するために優先度の高いプロセスによってシャットダウンまたは停止されます。
  3. 実行中のプロセスがシステム内の I/O リソースを必要とする場合、現在のプロセスは別のプロセスに切り替えられて CPU を使用します。そして、I/O 要件が満たされると、古いプロセスは準備完了状態になり、CPU での実行を待ちます。コンテキスト切り替えは、プロセスの状態を保存し、オペレーティング システムでタスクを再開します。それ以外の場合、プロセスは初期レベルから実行を再開する必要があります。
  4. オペレーティング システムでプロセスの実行中に割り込みが発生した場合、コンテキスト スイッチングを使用してプロセスのステータスがレジスタとして保存されます。割り込みを解決した後、プロセスは待機状態から準備完了状態に切り替わり、後でオペレーティング システムの割り込みが発生した同じ時点から実行を再開します。
  5. コンテキスト スイッチングにより、追加のプロセッサを必要とせずに、単一の CPU で複数のプロセス要求を同時に処理できます。

コンテキストスイッチの例

複数のプロセスがプロセス制御ブロック (PCB) に格納されていると仮定します。 1 つのプロセスは、CPU を使用してタスクを実行する実行状態です。プロセスの実行中、別のプロセスが準備完了キューに到着します。このプロセスは、CPU を使用してタスクを完了するという高い優先順位を持っています。ここでは、現在のプロセスを、CPU がタスクを完了する必要がある新しいプロセスに切り替えるコンテキスト スイッチングを使用しました。プロセスの切り替え中、コンテキスト スイッチは古いプロセスのステータスをレジスタに保存します。プロセスが CPU にリロードされると、新しいプロセスが古いプロセスを停止すると、プロセスの実行が開始されます。プロセスの状態を保存しない場合は、初期レベルで実行を開始する必要があります。このように、コンテキストの切り替えは、オペレーティング システムがタスクの実行が必要なときにプロセスを切り替えたり、プロセスを保存または再ロードしたりするのに役立ちます。

コンテキスト切り替えトリガー

コンテキストスイッチのトリガーには以下の 3 種類があります。

  1. 割り込み
  2. マルチタスク
  3. カーネル/ユーザー切り替え

割り込み : CPU がディスクからのデータの読み取りを要求し、割り込みが発生した場合、コンテキスト切り替えにより、割り込みの処理に時間がかからないハードウェアの一部が自動的に切り替わります。

種子 vs 胞子

マルチタスク : コンテキストスイッチとは、CPU からプロセスを切り替えて別のプロセスを実行できるマルチタスクの特徴です。プロセスを切り替えると、古い状態が保存され、システム内の同じ時点でプロセスの実行が再開されます。

カーネル/ユーザー切り替え : ユーザーモードを切り替える際にオペレーティングシステムで使用され、カーネル/ユーザーモードが実行されます。

PCBとは何ですか?

PCB (プロセス コントロール ブロック) は、プロセスに関するすべてのデータ関連情報を保存するためにオペレーティング システムで使用されるデータ構造です。例えば、オペレーティングシステムでプロセスが作成されると、PCB ではプロセスの更新情報、プロセスの切り替え情報、プロセスの終了などが行われます。

コンテキスト切り替えの手順

プロセスのコンテキスト切り替えにはいくつかの手順が含まれます。次の図は、PCB のレディ キューで割り込み、I/O ニーズ、または優先度ベースのプロセスが発生したときの 2 つのプロセス P1 から P2 のコンテキスト スイッチングを表しています。

Linuxでスクリプトを実行する
オペレーティング システムのコンテキスト スイッチングとは何ですか

図からわかるように、最初は P1 プロセスがそのタスクを実行するために CPU 上で実行されており、同時に別のプロセス P2 が準備完了状態になっています。エラーや中断が発生した場合、またはプロセスで入出力が必要な場合、P1 プロセスは実行状態から待機状態に切り替わります。プロセス P1 の状態を変更する前に、コンテキスト スイッチングにより、プロセス P1 のコンテキストがレジスタおよびプログラム カウンタの形式で保存されます。 プリント基板1 。その後、P2 プロセスの状態を準備完了状態からロードします。 プリント基板2 実行状態にします。

プロセス P1 をプロセス 2 に切り替えるときは、次の手順が実行されます。

  1. まず、コンテキスト切り替えでは、実行状態にあるプロセス P1 の状態をプログラム カウンタとレジスタの形式で PCB (プログラム カウンタ ブロック) に保存する必要があります。
  2. 次に、PCB1 をプロセス P1 に更新し、プロセスを準備完了キュー、I/O キュー、待機キューなどの適切なキューに移動します。
  3. その後、別のプロセスが実行状態になるか、準備完了状態から実行する新しいプロセスを選択するか、そのプロセスがそのタスクを実行するための高い優先順位を持っています。
  4. ここで、選択したプロセス P2 の PCB (プロセス制御ブロック) を更新する必要があります。これには、プロセスの状態を準備完了状態から実行状態、またはブロック、終了、一時停止などの別の状態に切り替えることが含まれます。
  5. CPU がすでにプロセス P2 を実行している場合、システム割り込みが発生すると同時にプロセス P2 の実行を再開するには、プロセス P2 のステータスを取得する必要があります。

同様に、プロセス P2 は CPU からオフになり、プロセス P1 が実行を再開できるようになります。 P1 プロセスは PCB1 から実行状態にリロードされ、同じ時点でタスクを再開します。そうしないと、情報が失われ、プロセスが再度実行されると、初期レベルで実行が開始されます。