プリエンプション

プリエンプション

プリエンプション

英語表記: Preemption

概要

プリエンプション(Preemption)とは、オペレーティングシステム(OS)のスケジューリング機能において、現在CPUを使用しているプロセスを、そのプロセスの意思とは無関係に強制的に中断させ、他のプロセスにCPUの利用権を割り当てる仕組みを指します。これは、現代のマルチタスクOSにおける公平性や応答性を保証するために不可欠な機能であり、プロセス管理の根幹をなす要素です。プリエンプションの発生は、必ずコンテキストスイッチというOSの処理をトリガーします。


【この概念は、OSの基本機能(プロセス管理)の「スケジューリング」ポリシーを実現する手段として非常に重要です。】

詳細解説

プリエンプションは、OSのプロセス管理における「公平性」と「応答性」を確保する上で、最も重要な機能の一つです。もしプリエンプションがなければ、一つのプロセスがCPUを独占し続け、他のプロセス(例えば、ユーザーの入力待ちのアプリケーション)が永遠に待たされる事態が発生してしまいます。

1. プリエンプションの目的と背景

かつてのOS(特に初期のMac OSやWindows 3.xなど)では、「ノンプリエンプション」(協調的マルチタスク)が主流でした。これは、プロセス自身が「もう十分CPUを使ったので、他のプロセスに譲ります」と自発的にCPUを解放するのを待つ方式です。しかし、悪意のある、あるいは単にバグのあるプロセスがCPUを解放しない場合、システム全体がフリーズするという致命的な欠陥がありました。

プリエンプションが導入されたOS(プリエンプティブマルチタスクOS)では、この問題をOS自身が解決します。OSはスケジューラを通じて、以下の二つの主要な要因に基づき、実行中のプロセスを強制的に中断させます。

  1. タイムスライス (時間割当て) の終了: プロセスに割り当てられた短い実行時間(タイムスライス)が終了した場合。
  2. 高優先度プロセスの出現: 待機キューに、現在実行中のプロセスよりも緊急性の高いプロセスが出現した場合。

2. プリエンプションとコンテキストスイッチの関係

プリエンプションは、あくまで「強制中断の決定」です。この決定が下された後、実際にCPUの制御を他のプロセスに移すための機械的な作業が必要となります。これがコンテキストスイッチです。

プリエンプションの発生からコンテキストスイッチ完了までの流れは以下の通りです。

  1. プリエンプションの決定: スケジューラが、タイマー割り込みや優先度変更などのシグナルを受け取り、「現在のプロセスを中断させるべき」と判断します。
  2. 実行状態の保存: 現在実行中のプロセス(P1)のレジスタ値、プログラムカウンタ、スタックポインタなどの実行状態(コンテキスト)が、P1のプロセス制御ブロック(PCB)に保存されます。
  3. 状態のロード: 次に実行されるプロセス(P2)のPCBに保存されていた過去の実行状態(コンテキスト)がレジスタなどにロードされます。
  4. CPU制御の移行: P2が中断された場所から実行を再開します。

このように、プリエンプションはスケジューリングの決定事項であり、その結果としてコンテキストスイッチという具体的な処理(オーバーヘッド)が発生する、という関係性をしっかり理解することが、プロセス管理の全体像を掴む鍵となります。


【プリエンプションによって、システムは常に公平性を保ち、ユーザーの操作に対する応答性を高めることができるのです。この仕組みがあるからこそ、私たちは動画を見ながら、裏でファイルをダウンロードし、同時にチャットアプリを使う、といったマルチタスクが可能になっているのですから、本当にありがたい機能ですよね。】

具体例・活用シーン

プリエンプションは、現代OSの動作において常に発生している基本的な動作ですが、その重要性を理解するための具体的な例を挙げます。

1. 交通整理のアナロジー

プリエンプションを理解するための最も分かりやすい比喩は、「交通整理を行う信号機と警察官」の例です。

CPUを交通量の多い交差点、プロセスを交差点を通過したい車だと想像してください。

  • ノンプリエンプション(協調的)OS: 信号機がありません。各ドライバー(プロセス)は、交差点に入った後、「もう十分走ったから、そろそろ道を譲ろう」と自発的に判断して停止します。もし一台の大型トラック(計算量の多いプロセス)が「まだ終わっていない!」と交差点の真ん中で止まり続けた場合、他の車は永遠に待たされ、交差点全体が麻痺してしまいます。
  • プリエンプションOS: 警察官(OSのスケジューラ)とタイマー付きの信号機があります。トラックが交差点に入っても、警察官はタイマー(タイムスライス)が切れたら容赦なく信号を赤に変えます。トラックがまだ通過途中であっても、強制的に停止させ、「次に青になるまで待ちなさい」と指示します。そして、次に待機していた緊急車両(高優先度プロセス)がいれば、即座に青信号を与えます。

この警察官による強制的な割り込みこそがプリエンプションであり、これにより交通(CPUリソース)の流れが滞りなく、公平に保たれるのです。

2. 応答性の確保

例えば、あなたがPCで巨大な動画ファイルのエクスポート処理(長時間かつ高負荷のプロセス)を実行しているとします。

もしプリエンプションがない場合、エクスポート処理が完了するまで、マウスカーソルの移動やキーボード入力といった他のプロセスがCPUを使うことができません。結果として、マウスカーソルがカクカクしたり、キーボード入力が数秒遅れたりする「フリーズ」状態になります。

プリエンプションがある場合、OSはエクスポート処理に0.01秒程度のタイムスライスを与え、時間が来たら強制的に中断させます。そして、その次の短い時間でマウスカーソルの描画やキーボード入力の受け付けといった高優先度かつ短いプロセスを実行させます。これにより、ユーザーは裏で重い処理が走っているにもかかわらず、システムがスムーズに動いていると感じるのです。


【私たちがPCを使う上で「応答性が良い」と感じる裏側には、このプリエンプションによる細切れのCPU時間管理が常に働いているというわけです。】

資格試験向けチェックポイント

プリエンプションは、ITパスポート試験(IP)、基本情報技術者試験(FE)、応用情報技術者試験(AP)のいずれにおいても、OSの基本機能(プロセス管理)の分野で頻出する重要テーマです。特にスケジューリング方式コンテキストスイッチとの関連が問われます。

| 試験レベル | 重点的に問われるポイント |
| :— | :— |
| ITパスポート (IP) | プリエンプションの定義と、ノンプリエンプションとの違い。マルチタスクを実現するための基本的な考え方。 |
| 基本情報技術者 (FE) | プリエンプティブなスケジューリング方式(例:ラウンドロビン、優先度スケジューリング)と、ノンプリエンプティブな方式(例:FCFS)の区別。プリエンプションがコンテキストスイッチのオーバーヘッドを発生させるという知識。 |
| 応用情報技術者 (AP) | プリエンプションがリアルタイムOS(RTOS)の応答性にどのように影響するか。優先度に基づくプリエンプションや、デッドロック回避など、より複雑なプロセス制御との関連性。プリエンプションの頻度がシステム性能(スループット)に与える影響。 |

押さえておくべき知識と言葉

  1. ノンプリエンプションとの対比: 「強制的に中断できる」のがプリエンプション、「自発的な解放を待つ」のがノンプリエンプション(協調的マルチタスク)です。この対比は必ず問われます。
  2. タイムスライス: プリエンプションのトリガーの一つ。時間ベースで強制中断を行うためにプロセスに割り当てる短い時間単位です。
  3. オーバーヘッド: プリエンプションが発生するたびにコンテキストスイッチが発生し、CPUが実際の処理ではない「状態の保存と復元」に時間を費やすことになります。この無駄な時間(切り替えコスト)をオーバーヘッドと呼びます。プリエンプションは応答性を高めますが、オーバーヘッドが増えるため、システム全体のスループットはわずかに低下します。このトレードオフ関係が問われることがあります。

【FEやAPでは、プリエンプションがトリガーとなってコンテキストスイッチが発生し、その結果オーバーヘッドが生じる、という一連の流れを正確に説明できるように準備してください。】

関連用語

  • タイムスライス
  • コンテキストスイッチ
  • スケジューリング
  • ノンプリエンプション
  • プロセス制御ブロック (PCB)
  • 情報不足

【関連用語に関する詳細な説明は、現在の入力材料には含まれておりません。特に「ノンプリエンプション」との比較や、「コンテキストスイッチ」の具体的な手順について、別途詳細な情報があれば、読者の理解がさらに深まるでしょう。】

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

両親の影響を受け、幼少期からロボットやエンジニアリングに親しみ、国公立大学で電気系の修士号を取得。現在はITエンジニアとして、開発から設計まで幅広く活躍している。

目次