推奨されます, 2021

エディターズチョイス

OSにおけるプリエンプティブスケジューリングと非プリエンプティブスケジューリングの違い

CPUがアイドル状態にあるときはいつでもCPUにプロセスを割り当てるのはCPUスケジューラの責任です。 CPUスケジューラはレディキューからプロセスを選択し、そのプロセスをCPUに割り当てます。 プロセスが実行状態から準備完了状態に、または待機状態から準備完了状態に切り替わるときに行われるスケジューリングは、 プリエンプティブスケジューリングと呼ばれます。 一方で、プロセスが終了するか、実行から待機状態に切り替わるときに行われるスケジューリングこの種のCPUスケジューリングは、 ノンプリエンプティブスケジューリングと呼ばれます。 プリエンプティブスケジューリングと非プリエンプティブスケジューリングの基本的な違いは、その名前自体にあります。 これはプリエンプティブスケジューリングが優先される可能性があることです。 プロセスはスケジュールすることができます。 ノンプリエンプティブスケジューリングでは、プロセスをスケジュールすることはできません。

以下に示す比較表を使用して、プリエンプティブスケジューリングと非プリエンプティブスケジューリングの違いを簡単に説明しましょう。

比較表

比較基準プリエンプティブスケジューリング非プリエンプティブスケジューリング
基本リソースは限られた時間の間プロセスに割り当てられます。リソースがプロセスに割り当てられると、プロセスはバースト時間が完了するまで待機するか、待機状態に切り替わります。
割り込み途中で処理が中断されることがあります。プロセスは、終了するか待機状態に切り替わるまで中断できません。
飢餓優先順位の高いプロセスが実行可能キューに頻繁に到着すると、優先順位の低いプロセスが不足する可能性があります。バースト時間が長いプロセスがCPUを実行している場合、CPUバースト時間が短い別のプロセスが枯渇する可能性があります。
オーバーヘッドプリエンプティブスケジューリングはプロセスのスケジューリングにオーバーヘッドがあります。非プリエンプティブスケジューリングにはオーバーヘッドがありません。
柔軟性プリエンプティブスケジューリングは柔軟です。非プリエンプティブスケジューリングは厳格です。
コストプリエンプティブスケジューリングはコストに関連しています。非プリエンプティブスケジューリングはコストアソシアティブではありません。

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

プリエンプティブスケジューリングは、プロセスが実行状態から準備完了状態に、または待機 状態から準備完了状態に切り替わるときに実行 できるものです 。 ここでは、リソース(CPUサイクル)が限られた時間の間プロセスに割り当てられてから取り除かれ、まだCPUバースト時間が残っている場合、プロセスは再び作動可能キューに戻されます。 プロセスは、次に実行する機会が得られるまで、準備完了キューに留まります。

優先順位の高いプロセスがレディキューに到着した場合、現在のプロセスがバースト時間を完了するのを待つ必要はありません。 代わりに、現在のプロセスは実行の途中で中断され、優先順位の高いプロセスがCPUサイクルを利用するまでレディキューに置かれます。 このように、レディキュー内の各プロセスは、CPUを実行するための時間がかかります。 プリエンプティブスケジューリングは柔軟になりますが、プロセスを実行状態から準備完了状態に変更して万が一になった場合のオーバーヘッドが増加します。

プリエンプティブスケジューリングに取り組むアルゴリズムはラウンドロビンです。 最短ジョブ優先(SJF)および優先順位スケジューリングは、プリエンプティブスケジューリングの対象になる場合とされない場合があります。

下の図を見て、プリエンプティブスケジューリングの例を見てみましょう。 P0、P1、P2、P3という4つのプロセスがあります。 そのうち、P2は時間0に到着します。そのため、キューに他のプロセスがないため、CPUはプロセスP2に割り当てられます。 その間、P2は実行中であり、P3は時間1に到達し、今やプロセスP2の残り時間(5ミリ秒)であり、これはP3によって必要とされる時間(4ミリ秒)より大きい。 そのため、CPUはプロセッサP3に割り当てられます。

その間、P3は実行され、プロセスP1は時間2に到達する。今やP3の残り時間(3ミリ秒)は、プロセスP1(4ミリ秒)およびP2(5ミリ秒)によって必要とされる時間よりも短い。 そのため、P3は続行を許可されています。 P3がプロセス3を継続している間に、P0が時間3に到着するが、今やP3の残り時間(2ミリ秒)はP0によって必要とされる時間(2ミリ秒)に等しい。 それでP3は継続し、P3が終了した後、CPUは他よりバースト時間が少ないのでP0に割り当てられる。 P0が終了すると、CPUはP1に割り当てられ、次にP2に割り当てられます。

非プリエンプティブスケジューリングの定義

非プリエンプティブスケジューリングは、プロセスが終了したとき、またはプロセスが実行中から待機状態に切り替わったときに適用できるものです。 非プリエンプティブスケジューリングでは、リソース(CPU)がプロセスに割り当てられると、プロセスは終了するか待機状態になるまでCPUを保持します。

プリエンプティブスケジューリングとは異なり、非プリエンプティブスケジューリングは実行の途中でCPUを実行しているプロセスを中断しません。 代わりに、プロセスがCPUバースト時間を完了するのを待ってから、CPUを別のプロセスに割り当てます。

ノンプリエンプティブスケジューリングでは、長いCPUバースト時間を持つプロセスが実行中の場合、他のプロセスは長時間待機する必要があるため、レディキュー内のプロセスの平均待機時間が長くなります。 ただし、非プリエンプティブスケジューリングでは、プロセスをレディキューからCPUに切り替えるオーバーヘッドはありませんが、実行中のプロセスが優先順位の高いプロセスでも横取りされないため、スケジューリングが困難になります。

上記のスケジューリング例を非プリエンプティブ方式で解決しましょう。 最初にプロセスP2が時間0に到着すると、CPUはプロセスP2に割り当てられ、実行には6ミリ秒かかります。 すべてのプロセスの間で、すなわちP0、P1、P3はレディキューに到着する。 しかし、プロセスP2がそのCPUバースト時間を完了するまで、すべて待機します。 その後、P2の後に到着したプロセス、つまりP3は、バースト時間が終了するまでCPUに割り当てられます。 同様に、P1が実行され、後でCPUは​​プロセスP0に渡されます。

プリエンプティブスケジューリングと非プリエンプティブスケジューリングの主な違い

  1. プリエンプティブスケジューリングと非プリエンプティブスケジューリングの基本的な違いは、プリエンプティブスケジューリングではCPUが限られた時間の間プロセスに割り当てられることです。 ノンプリエンプティブスケジューリングでは、CPUはプロセスが終了する待機状態に切り替わるまでプロセスに割り当てられます。
  2. プリエンプティブスケジューリングの実行プロセスは実行の途中で中断されますが、非プリエンプティブスケジューリングの実行プロセスは実行の途中で中断さません
  3. プリエンプティブスケジューリングには、プロセスを実行可能状態から実行状態に切り替えること、万が一に備えて、実行可能キューを維持することのオーバーヘッドがあります。 一方、非プリエンプティブスケジューリングでは、プロセスを実行状態から準備完了状態に切り替えるオーバーヘッドはありません
  4. プリエンプティブスケジューリングでは、優先順位の高いプロセスが実行可能キューに頻繁に到着すると、優先順位の低いプロセスは長い間待たなければならず、飢餓状態になる可能性があります。 一方、非プリエンプティブスケジューリングでは、CPUがより大きなバースト時間を持つプロセスに割り当てられている場合、小さなバースト時間を持つプロセスが不足する可能性があります。
  5. 重要なプロセスは、実行中のプロセスに関係なく、レディキューに到着したときにCPUにアクセスできるため、プリエンプティブスケジューリングは非常に柔軟です。 クリティカルなプロセスがレディキューに入っても、CPUを実行しているプロセスが妨害されないため、非プリエンプティブスケジューリングは厳密です。
  6. プリエンプティブスケジューリングは、非プリエンプティブスケジューリングの場合とは異なり、共有データの整合性を維持する必要があるため、コスト結合です。

結論:

プリエンプティブスケジューリングが非プリエンプティブスケジューリングや万力逆転より優れているというわけではありません。 すべてスケジューリングがプロセスの平均待機時間を最小化し、CPU使用率を最大化する方法に依存します。

Top