オペレーティングシステムにおけるプリエンプティブスケジューリングとノンプリエンプティブスケジューリングの違いプリエンプティブスケジューリングやノンプリエンプティブスケジューリングなどのスケジューリングモデルに基づいて、

Anonim

プリエンプティブなどのスケジューリングモデルに基づいて、プロセッサスケジューリング (または CPUスケジューリング )は、CPUに割り当てられ、CPUから削除されるプロセスを決定します(999)協調スケジューリング <! - 1 - > 古いシステムは単純なスタンドアロンモードで動作することができますが、応答性の高い柔軟なシステム、仮想化の必要性、マルチプロセッシングの管理により、すべてのタスク処理要求に対する効率的な応答が効率的に提供される スケジューリングユニットは

タスク

と呼ばれることが多く、スケジューラの仕事必要に応じてこれらのタスクを実行および管理するために、スケジューラは、削除され、処理のためにCPUに割り当てられるタスクを選択します。使用されているスケジューリングモデルへの移行。

<! - 2 - > スケジューラはどのタスクが優先されるのかをどのように知っていますか? スケジューラは、可変で動的な処理要求を考慮し、CPUサイクルを最大限に活用して、公平で効率的な選択プロセスを実行する必要があります。

タスクが処理中に2つの状態になることができます。

CPUがタスクを処理するための計算を実行している

CPUバースト

(CPUバーストの期間はタスクごとに異なります。プログラムをプログラムする)。

  1. 入力/出力(I / O)バースト(999)は、データがシステムから受信または送信されるのを待つ。 <! - 3 - > CPUがアイドル状態になると、スケジューラは
  2. レディキュー を読み取り、実行する次のタスクを選択します。それから、CPUの選択されたタスク制御を与えるのは Dispatcher
です。したがって速くする必要があります!ディスパッチャが占める時間は、

ディスパッチ待ち時間 と呼ばれます。 レディキュー と、スケジューリングプロセスの複雑さを管理するために使用できるいくつかの方法を定義するための構造とカスタムパラメータがあります。 スケジューラは、以下のステージのうちの1つで決定する必要があります。 タスクが 実行中

(例えば、I / O要求中に待機する) 待機状態 に遷移する。

タスクが

実行中

  1. から 準備完了 (たとえば、割り込みに応答する)に変更されたとき。 タスクが 待機中
  2. から 待機中 に変更された場合(たとえば、I / O要求が完了した場合) タスク
  3. ステージ1または4がCPUの完全使用を確実にするために行われ、ステージ2およびステージ3の両方で新しいタスクが選択されなければならない場合、タスクは継続して実行されるか、選択された。 タスクの処理方法を理解した後、CPU割り込みを扱う2つのスケジューリングモデルを見てみましょう。 非プリエンプティブスケジューリング は、タスクが停止(自発的に)または終了するまで実行されるときです。 非タスクは、タスク、タスク状態、キュー、および優先順位(静的または動的) Windows®はWindows 3.xまで非プリエンプティブスケジューリングを行い、その後Windows 95からPreemptiveに変更しました。
  4. プリエンプティブスケジューリング は、非プリエンプティブとは異なり、CPU割り込みによってタスクを強制的に中断できる場所です。タスクは、CPUの制御を解除するまで実行されます。

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

非プリエンプティブシステム内のタスクは、完了するまで実行されます。

スケジューラはすべてのタスクの状態をチェックし、

  • 準備完了 状態の次に優先順位の高いタスクをスケジュールします。非プリエンプティブスケジューリングでは、タスクがCPUに割り当てられると、短いタスクがより長いタスクが完了するのを待たなければならない場合でも、それを取り除くことはできない。
  • すべてのタスクのスケジューリング管理は「公平」であり、応答時間は予測可能であり、優先度の高いタスクは待っているタスクを待ち行列にさらに追い込むことができない。 スケジューラは、各タスクがCPUのシェアを獲得し、どのようなタスクでも遅延を避けることを保証します。 CPUに割り当てられる「時間量」は、タスクが完了するのにかかる時間に依存するため、必ずしも等しいとは限りません。プリエンプティブスケジューリング

このスケジューリングモデルは、「完了まで実行」アプローチを有する非プリエンプティブスケジューリングとは対照的に、タスクが中断されることを可能にする。

外部呼び出しから開始される割込みはスケジューラを呼び出して実行中のタスクを一時停止し、優先度の高い別のタスクを管理し、CPUの制御を先取りすることができます。

準備完了状態の中で最も優先度の高いタスクが実行され、リアルタイムイベントへの迅速な応答が可能になる。プリエンプティブスケジューリングの問題点のいくつかは、割り込みを使用するときのリソースのオーバーヘッドの増加を伴い、共有データ構造の更新中に中断され、データの整合性に悪影響を及ぼす可能性があるため、データを共有する2つのタスクで問題が発生する可能性があります。一方、重要である可能性のある別のタスクを管理するためにタスクを一時停止することができるのが実用的です。要約 すべてのタスク(同じ優先度を持つ)が1回実行される "ラウンドロビンポリシー[i]"

を使用するなど、さまざまなポリシーの多くの差異や依存関係を定義できます。次のサイクルのために待ち行列の終わりに置かれる。

先入先出

最短ジョブ - 最初

最短ジョブ - 次

、 最短残時間 など。

履歴データの分析は、新しいタスクが到着する速度、CPUおよびI / Oバーストなどの側面に関する情報を提供することができ、確率分布はタスクの待機時間の特性を計算し、スケジューリングモデルを定義するための関連データを持つ管理者。