優先度スケジューリングアルゴリズム:プリエンプティブ、非プリエンプティブ

⚡ スマートサマリー

優先度スケジューリングは、優先度に基づいてプロセスを選択し、優先度の高いタスクを優先的に実行するCPUスケジューリング方式です。プリエンプティブ方式と非プリエンプティブ方式があり、優先度が同じプロセスは先着順またはラウンドロビン方式で処理されます。

  • 🎯 定義: プロセスは優先順位に基づいてスケジュールされ、優先順位の高いタスクが優先順位の低いタスクよりも先に実行されます。
  • 🔢 優先順位番号: 数字が小さいほど、通常は優先度が高いことを意味します。
  • ⏸️ 先制攻撃: 優先度の高い到着は、現在実行中の優先度の低いプロセスを中断させる可能性があります。
  • 非優先的: 実行中のプロセスは、終了するかコンテキストが切り替わるまでCPUを占有します。
  • 利点: 重要な処理は迅速に実行され、その重要度に応じてCPU時間が配分されます。
  • ⚠️ 欠点: 優先度の低いプロセスは、処理が停止して無期限に待機状態になる可能性があります。

優先スケジューリングアルゴリズム

優先スケジュールとは何ですか?

優先スケジューリング 優先度に基づいてプロセスをスケジュールする方法です。 このアルゴリズムでは、スケジューラは優先度に従って作業するタスクを選択します。

優先度の高いプロセスが最初に実行される必要がありますが、同じ優先度のジョブはラウンドロビンまたは FCFS ベースで実行されます。 優先順位はメモリ要件、時間要件などによって異なります。

優先スケジュールの種類

優先順位スケジューリングは、主に2つのタイプに分けられます。

プリエンプティブ スケジューリング

プリエンプティブ スケジューリングでは、ほとんどのタスクには優先順位が割り当てられます。 場合によっては、たとえ優先度の低いタスクがまだ実行中であっても、優先度の高いタスクを別の優先度の低いタスクの前に実行することが重要である場合があります。 優先度の低いタスクはしばらく保持され、優先度の高いタスクの実行が終了すると再開されます。

ノンプリエンプティブなスケジューリング

このスケジューリング方式では、CPUは特定のプロセスに割り当てられます。CPUを占有しているプロセスは、コンテキストを切り替えるか、終了することでCPUを解放します。この方式は、プリエンプティブスケジューリングのように特別なハードウェア(例えばタイマー)を必要としないため、様々なハードウェアプラットフォームで使用できる唯一の方式です。

優先スケジューリングの特徴

  • 優先度に基づいてプロセスをスケジュールする CPU アルゴリズム。
  • それはで使用されています Operaバッチ処理を実行するためのシステム。
  • 同じ優先度を持つ XNUMX つのジョブが READY の場合、そのジョブは XNUMX つのジョブで動作します。 早い者勝ち 基本。
  • 優先度スケジューリングでは、各プロセスに優先度を示す番号が割り当てられます。
  • 数値が小さいほど、優先順位が高くなります。
  • このタイプのスケジューリングアルゴリズムでは、現在実行中のプロセスよりも優先度の高い新しいプロセスが到着した場合、現在実行中のプロセスはプリエンプトされます。

優先スケジューリングの例

次の5つのプロセスP1~P5を考えてみましょう。各プロセスは、それぞれ固有の優先度、バースト時間、到着時間を持っています。

プロセス 優先 バースト時間 到着時刻
P1 1 4 0
P2 2 3 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

ステップ0) 時刻 0 に、プロセス P1 と P2 が到着します。P1 は P2 よりも優先度が高いです。実行はプロセス P1 から開始され、P1 のバースト時間は 4 です。

優先スケジューリング

ステップ1) 時刻 1 において、新たなプロセスは到着しない。実行は P1 で継続される。

優先スケジューリング

ステップ2) 時間 2 では、新しいプロセスは到着しないため、P1 を続行できます。 P2 は待機キューにあります。

優先スケジューリング

ステップ3) 時刻3では、新しいプロセスは到着しないため、P1の処理を続行できます。P2プロセスはまだ待機キューにあります。

優先スケジューリング

ステップ4) 時刻 4 で、P1 は実行を終了します。 P2 が実行を開始します。

優先スケジューリング

ステップ5) 時刻=5の時点で、新しいプロセスは到着しないため、P2の処理を続行します。

優先スケジューリング

ステップ6) 時刻 6 に P3 が到着します。P3 は優先度 (1) が高く、優先度 (2) の P2 よりも高いです。P2 はプリエンプトされ、P3 の実行が開始されます。

プロセス 優先 バースト時間 到着時刻
P1 1 4 0
P2 2 1 件中 3 件が保留中 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

優先スケジューリング

ステップ7) 時刻7において、新たなプロセスが到着しなかったため、P3の処理を続行します。P2は待機キューに入っています。

優先スケジューリング

ステップ8) 時刻 = 8 の時点で新しいプロセスは到着しないため、P3 の処理を​​続行できます。

優先スケジューリング

ステップ9) 時刻=9の時点で新しいプロセスは発生しないため、P3の処理を続行できます。

優先スケジューリング

ステップ10) 時間間隔10では新しいプロセスは発生しないため、P3の処理を継続します。

優先スケジューリング

ステップ11) 時刻11において、優先度4のP4が到着する。P3の方が優先度が高いため、実行を継続する。

プロセス 優先 バースト時間 到着時刻
P1 1 4 0
P2 2 1 件中 3 件が保留中 0
P3 1 2 件中 7 件が保留中 6
P4 3 4 11
P5 2 2 12

優先スケジューリング

ステップ12) 時刻12でP5が到着する。P3の方が優先度が高いため、実行が継続される。

優先スケジューリング

ステップ13) 時刻 13 で、P3 の実行が完了します。準備完了キューには P2、P4、P5 があります。P2 と P5 の優先順位は同等です。P2 の到着時刻は P5 より前なので、P2 が実行を開始します。

プロセス 優先 バースト時間 到着時刻
P1 1 4 0
P2 2 1 件中 3 件が保留中 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

優先スケジューリング

ステップ14) 時刻14において、プロセスP2の実行が完了しました。P4とP5は待機状態です。P5が最も高い優先度を持ち、実行を開始します。

優先スケジューリング

ステップ15) 時刻15において、P5は実行を継続する。

優先スケジューリング

ステップ16) 時刻16において、プロセスP5の実行が完了しました。残っているプロセスはP4のみです。P4は実行を開始します。

優先スケジューリング

ステップ17) 時刻 20 において、P4 の実行が完了し、プロセスは残っていません。

優先スケジューリング

ステップ18) 上記の例における平均待ち時間を計算してみましょう。

待機時間 = 開始時間 – 到着時間 + 次のバーストの待機時間

P1 = 0 - 0 = 0
P2 = 4 - 0 + 7 = 11
P3 = 6 - 6 = 0
P4 = 16 - 11 = 5
Average Waiting time = (0 + 11 + 0 + 5 + 2)/5 = 18/5 = 3.6

優先スケジューリングの利点

優先順位付け方式を採用するメリット/利点は以下のとおりです。

  • 使いやすいスケジュール管理方法。
  • 処理は優先度に基づいて実行されるため、優先度の高い処理は長時間待つ必要がなく、時間の節約につながります。
  • この方法は、各プロセスの相対的な重要性を正確に定義できる優れた仕組みを提供する。
  • 時間とリソースの要件が変動するアプリケーションに適しています。

優先スケジュールのデメリット

優先順位スケジューリングのデメリットは以下のとおりです。

  • 最終的にシステムがクラッシュすると、優先度の低いプロセスがすべて失われます。
  • 優先度の高いプロセスが多くの CPU 時間を消費すると、優先度の低いプロセスが枯渇し、無期限に延期される可能性があります。
  • このスケジューリング アルゴリズムにより、一部の優先度の低いプロセスが無期限に待機したままになる場合があります。
  • プロセスは、実行の準備ができてもブロックされますが、現在他のプロセスが実行されているため、CPU を待つ必要があります。
  • 新しい優先度の高いプロセスが準備完了キューに入り続ける場合、待機状態にあるプロセスは長時間待機する必要がある可能性があります。

よくあるご質問

飢餓状態とは、優先度の高いプロセスが次々と到着するため、優先度の低いプロセスがいつまでも待機状態になる現象です。エイジングは、長時間待機しているプロセスの優先度を徐々に上げていくことでこの問題を解決し、最終的にすべてのプロセスが実行されるようにします。

ほとんどのオペレーティングシステムでは、優先度番号が小さいほど優先度が高くなります。例えば、優先度1のプロセスは、優先度3のプロセスよりも先に実行されます。ただし、システムによってはこの順序が逆になる場合もあるため、常に使用されている規則を確認してください。

優先度は、メモリ使用量、処理時間、CPUバーストなどの要素を用いて内部的に割り当てることも、重要度、コスト、期限などに基づいてユーザーまたは管理者が外部的に割り当てることもできます。優先度は静的(固定)にも動的(実行時に変更)にも設定可能です。

AIは、ワークロードのパターンと締め切りを学習することで、プロセスの優先順位を動的に割り当て、調整することができます。これにより、重要なジョブを時間通りに完了させ、処理能力の低下リスクを軽減し、複雑で変化の激しいシステムにおける全体的なスループットと応答性を向上させることができます。

はい。AIは待ち時間を監視し、待ち時間の長い処理の優先度を自動的に上げることで、スマートエイジングのように機能します。混雑を予測することで、固定ルールよりも公平性とパフォーマンスのバランスをうまく取り、優先度の低い処理がいつまでも遅延することを防ぎます。