オペレーティングシステムにおけるコンテキストスイッチとは何ですか?

Context Switching では、プロセスのコンテキストまたは状態を保存して、必要なときに再ロードして、以前と同じポイントから実行を再開できるようにします。 これはマルチタスクOSの機能であり、1つのCPUを複数のプロセスで共有することができます。

コンテキスト切り替えを示す図は以下のとおりです。 割り込みやシステムコールにより、プロセス1が切り替わり、プロセス2が切り替わる。 コンテキストスイッチは、PCB1 にプロセス 1 の状態を保存し、PCB2 からプロセス 2 の状態をロードすることを含みます。 しばらくすると、再びコンテキストスイッチが発生し、プロセス 2 がスイッチアウトされ、プロセス 1 が再びスイッチインされます。 これには、プロセス 2 の状態を PCB2 に保存し、プロセス 1 の状態を PCB1 からロードします。

Context Switching Triggers

コンテキストスイッチには、3 つの主要なトリガーがあります。 これらは次のように与えられます –

  • Multitasking: マルチタスク環境では、あるプロセスが CPU から切り替わり、別のプロセスを実行できるようになります。 古いプロセスの状態は保存され、新しいプロセスの状態はロードされます。 プリエンプティブシステムでは、スケジューラによってプロセスが切り替わることがあります。

  • Interrupt Handling: 割り込みが発生すると、ハードウェアはコンテキストの一部を切り換える。 これは自動的に行われます。

  • User and Kernel Mode Switching: オペレーティングシステムでユーザーモードとカーネルモードの間の移行が必要な場合、コンテキストスイッチが行われることがあります。

Context Switching Steps

コンテキスト・スイッチに関わるステップは以下のとおりです –

  • 現在 CPU で実行中のプロセスのコンテキストを保存します。 プロセス制御ブロックおよびその他の重要なフィールドを更新します。
  • 上記のプロセスのプロセス制御ブロックを、レディキュー、I/Oキューなどの関連するキューに移動します。 これは、プロセス状態をrunningに更新することを含みます。
  • 必要に応じてメモリ管理データ構造を更新します。
  • プロセッサに再びロードされたとき、以前に実行されていたプロセスのコンテキストをリストアします。 これは、プロセス制御ブロックとレジスタの以前の値をロードすることで行われます。

Context Switching Cost

コンテキスト スイッチングは、TLB フラッシュ、複数のタスク間のキャッシュ共有、タスク スケジューラーの実行などのためにオーバーヘッド コストが発生します。 同じプロセスの 2 つのスレッド間のコンテキスト・スイッチングは、スレッドが同じ仮想メモリ・マップを持っているため、2 つの異なるプロセス間よりも高速です。 このため、TLBフラッシュは必要ありません。

raja

公開日:2018/09/28 15:31:15

広告:
掲載

Leave a Reply