本文へ移動

オペレーティングシステムにおけるプロセス切替遅延

プロセス切替遅延とは、オペレーティングシステムが一つのプロセスから別のプロセスへ実行を切り替える際に生じる遅延である。状態の保存・復元、メモリやキャッシュの影響を含み、ハードウェアとカーネル設計によって異なる。

概要

プロセス切替遅延とは、オペレーティングシステムが一つのプロセスの実行を停止し、別のプロセスの実行を開始するまでに必要な時間である。これはコンテキストスイッチに伴う測定可能な遅延を指す。現代のハードウェアでは短時間であることが多いが、この遅延は応答性、スループット、およびリアルタイム保証に直接影響する。

主な構成要素

総遅延は、タスク切替時にカーネルが実行する複数の処理から成る。一般的な構成要素には、次のものがある。

  • 切り替え前のプロセス状態(レジスタ、プログラムカウンタ、フラグ)の保存。
  • 切り替え後のプロセス状態の読み込みと、スケジューラ管理情報の更新。
  • ページテーブルの有効化、TLBの無効化または再読み込みなどのメモリ管理処理。
  • キャッシュへの影響。切替後には命令キャッシュおよびデータキャッシュでキャッシュミスが発生することがある。
  • 切替を実行するために必要なアカウンティング処理とカーネルモード遷移。

遅延に影響する要因

遅延はソフトウェアとハードウェアの双方に依存する。ソフトウェア側の要因には、カーネル設計(モノリシックカーネルかマイクロカーネルか)、コンテキストの保存・復元コードパス、スレッド間の切替か完全なプロセス間の切替かが含まれる。ハードウェア側の要因には、CPUキャッシュ容量、トランスレーション・ルックアサイド・バッファ(TLB)の挙動、同時マルチスレッディングの対応、特権遷移のコストがある。

測定と分類

測定では、タスクが自発的に実行権を譲るかブロックする自発的切替と、非自発的なプリエンプションを区別する。ベンチマークでは、反復的な実行権譲渡の時間を計測したり、カーネルトレーシングツールを用いて切替1回当たりのコストを推定したりする。実システムでは、一回の計測遅延には、再開されたタスクのキャッシュミス率上昇などの二次的なペナルティも隠れている。

遅延の削減

切替コストを低減する一般的な方策には、次のものがある。

  • アドレス空間を共有するスレッドまたは軽量タスクを用い、完全なMMU変更を回避する。
  • カーネルの処理経路を最適化し、レジスタおよび状態の保存領域を最小化する。
  • より大きなキャッシュ、TLBタグ付け(PCID)、ハードウェアスレッド対応などのハードウェア機能を利用する。
  • 不要なプリエンプションを減らし、関連する処理を同じコア上に維持するスケジューラ方針を採用する。

重要性と区別

プロセス切替遅延は、デスクトップの応答性、対話型サービス、とりわけ最悪時遅延が重要となるリアルタイムシステムにとって重要である。これは、割込み処理を開始するまでの時間である割込み遅延や、カーネルモードへの移行・復帰のコストであるシステムコールのオーバーヘッドとは異なる。こうした違いを理解することは、遅延と分離性のトレードオフに基づき、プロセス、カーネルスレッド、ユーザーレベルスレッド、イベント駆動設計のうち適切な抽象化を選ぶ助けとなる。

関連項目

著者

AlegsaOnline.com オペレーティングシステムにおけるプロセス切替遅延

URL: https://ja.alegsaonline.com/art/79323

共有