オペレーティングシステムの第2章-3レベルのスケジューリングとCPUのスケジューリングアルゴリズム

1つのCPUの3レベルのスケジューリング

:からのリファレンス  と、この

  • 高度なスケジューリング

  • 中間スケジューリング

  • 低レベルのスケジューリング

1.1高度なスケジューリング

高度なスケジューリング:つまり、特定の戦略に従って、選択したディスク上のプログラムがメモリに読み込まれ、プロセスが確立されます。(マルチチャネルバッチシステムに存在)

ここでは、ジョブとプロセスの違いと関係を説明します

ジョブは、コンパイル、リンク、ロード、実行の4つのジョブステップに分割できます。

ジョブがメモリにジョブスケジューリング(高度なスケジューリング)を選択して置かれたとき、実行に時間を、オペレーティング・システムは、エンドユーザーが作業することを自分のコンピューティングタスクを完了するために、ユーザー・プロセスを生成します。

プロセスは、サブミットされて実行するように選択されたジョブ(プログラム)の実行エンティティです。また、リソースをシステムに適用して割り当て、ジョブタスクを完了するための基本単位でもあります。実行中、準備完了、待機中などの状態です。

要約すると:

  • ジョブはタスクエンティティであり、プロセスはタスクを完了する実行エンティティです

  • ジョブタスクがない場合、プロセスは何もする必要がありません。プロセスがない場合、ジョブタスクは完了できません。

  • ジョブの概念はバッチオペレーティングシステムでより多く使用され、プロセスはさまざまなマルチプログラミングシステムで使用されます

 

1.2中間スケジューリング

中間スケジューリング:交換スケジューリング、特定の戦略による内部ストレージと外部ストレージ間のデータ交換。

メモリリソースが不足している場合、一時的に操作できないプロセスはメモリからスワップアウトされます。このとき、プロセスは「一時停止」状態であり、低レベルのスケジューリングには参加していません。プロセスに操作条件があり、メモリリソースが豊富な場合、プロセスはメモリにリコールされます。仕事。

短期的なシステムロードバランシングの役割を果たし、メモリ使用率とシステムスループットを完全に改善します。

 

1.3低レベルのスケジューリング

低レベルのスケジューリング:つまり、CPUスケジューリング(プロセススケジューリング)、実行可能なプロセスを選択する特定の戦略に従って、実行するCPUを占有します。

特定の原則に従って、準備完了キュー内のどのプロセス/スレッドがプロセッサを取得するかを決定し、プロセッサを彼に転送します。

低レベルのスケジューリングは、さまざまなオペレーティングシステムの不可欠な機能であり、高レベルのスケジューリングは、通常、純粋なタイムシェアリングオペレーティングシステムまたはリアルタイムオペレーティングシステムでは必要ありません。

 

グラフィック参照:this

 

1.プロセススケジューリングのみ(低レベルスケジューリング)

 

2.低レベルおよび高レベルのスケジューリングのみ

 

3. 3レベルのスケジューリングアルゴリズム

 

 

2.1バッチ処理システム

バッチ処理システムのユーザー操作は多くありませんが、このシステムでは、スケジューリングアルゴリズムの目的は、スループットとターンアラウンド時間(投入から終了までの時間)を確保することです。

1先着順サービス先着順サーバー(FCFS)

2最短のジョブが最初(SJF)

3最短残り時間の優先度(SRTN)

4最初に最も高い応答率(HSRF)

5タイムスライスローテーション

6優先スケジューリング

7マルチレベルフィードバックキュー

2.1.1先着順サービス先着順サーバー(FCFS)

奪われないスケジューリングアルゴリズム。

要求された順序でスケジュールします。

ジョブがシステムのバックアップジョブキューに入力される順序に従ってジョブを選択します。最初に入力されたジョブが最初にメモリに選択され、ユーザープロセスが作成されます

これは長いジョブには適していますが、短いジョブには適していません。短いジョブは、前の長いジョブが実行される前に完了するのを常に待機する必要があり、長いジョブを長時間実行する必要があるため、短いジョブの待機時間が長すぎるためです。

 

2.1.2最短ジョブ優先(SJF)

奪われないスケジューリングアルゴリズム。

推定実行時間の短い順にスケジュールします。

短所:1.ジョブが必要とするCPUの実行時間を事前に知る必要があるため、正確に見積もることが難しい。

2.ジョブの待機時間を無視すると、長いジョブの待機時間が長くなります

3.剥奪メカニズムの欠如は、タイムシェアリングとリアルタイム処理には理想的ではありません。

 

2.1.3最短残り時間の優先度(SRTN)

奪われたスケジューリングアルゴリズム。

推定残り時間の短い順にスケジュールします。

 

2.1.4最初に最も高い応答率(HSRF)

奪われないスケジューリングアルゴリズム。

計算された最高の応答率が最も小さい順にスケジュールします。

短時間の仕事を優先的に扱いますが、空腹は起こりません。

短所:各ジョブの応答率の計算ごとに、一定の時間オーバーヘッドが発生します。

(1)ジョブの待機時間が同じである場合、サービスに必要な時間が短いほど優先順位が高くなるため、アルゴリズムは短いジョブを助長します。

(2)必要なサービス時間が同じ場合、ジョブの優先度は待機時間で決まり、待機時間が長いほど優先度が高くなるため、先着順で実装されます。

(3)長いジョブの場合、待ち時間の増加に応じてジョブの優先度を上げることができ、待ち時間が長い場合は優先度を高くしてプロセッサを取得することもできます。要するに、アルゴリズムは短いジョブとジョブの到着順序の両方を処理し、長いジョブが長時間サービスされないままになることはありません。したがって、アルゴリズムはより良い妥協を実現します。もちろん、このアルゴリズムを使用する場合、スケジューリングの前に応答率を計算する必要があります。これにより、システムのオーバーヘッドが増加します。

 

2.2インタラクティブシステム

インタラクティブシステムには多数のユーザーインタラクションがあり、このシステムのアルゴリズムをスケジュールする目的は、迅速に応答することです。

 

2.2.1タイムスライスローテーション

1)基本原則

アーリータイムスライスローテーション方式では、システムはすべての準備完了プロセスを先着順の原則に従ってキューに配置します。スケジューリングのたびに、CPUがチームリーダープロセスに割り当てられ、タイムスライスの実行が許可されます。タイムスライスのサイズは、数ミリ秒から数百ミリ秒の範囲です。実行タイムスライスが使い果たされると、タイマーがクロック割り込み要求を発行し、スケジューラはこの信号に基づいてプロセスの実行を停止し、それをレディキューの最後に送信します;次に、プロセッサはレディに割り当てられますキュー内の新しいチームリーダープロセスでは、タイムスライスを実行することもできます。このようにして、レディキュー内のすべてのプロセスが、所定の時間内にタイムスライスのプロセッサ実行時間を取得できるようにすることができます。つまり、システムは一定時間内にすべてのユーザー要求に応答できます。

FCFSの原則に従って、準備ができたすべてのプロセスがキューに配置され、スケジューリングのたびに、CPU時間がチームリーダープロセスに割り当てられ、プロセスはタイムスライスを実行できます。タイムスライスがなくなると、タイマーはクロック割り込みを発行し、スケジューラーはプロセスの実行を停止し、CPUタイムをプロセスの先頭に割り当て続けながら、それをレディキューの最後に送信します。

 

タイムスライス回転アルゴリズムの効率は、タイムスライスのサイズと大きな関係があります。

  • プロセスの切り替えではプロセス情報を保存して新しいプロセス情報を読み込む必要があるため、タイムスライスが小さすぎると、プロセスの切り替えが頻繁になりすぎ、プロセスの切り替えに時間がかかりすぎます。

  • タイムスライスが長すぎると、リアルタイムのパフォーマンスは保証されません。

 

2.2.2優先度スケジューリング

各プロセスに優先順位を割り当て、優先順位に従ってスケジュールします。

システムは、戦略を奪われないまたは奪われないように事前定義できます。

優先度の低いプロセスがスケジューリングを待機しないようにするために、待機中のプロセスの優先度を時間をかけて上げることができます。

このようにして、システムは実行のために最高の優先順位を持つプロセスにもプロセッサを割り当てます。ただし、その実行中、優​​先順位の高い別のプロセスが表示されている限り、プロセススケジューラは現在のプロセス(優先順位が最も高いプロセス)の実行を直ちに停止し、新しく到着した優先順位にプロセッサを再割り当てします。最高のプロセス。したがって、このスケジューリングアルゴリズムを採用すると、システムに新しい準備ができたプロセスiが出現するたびに、その優先度Piが実行中のプロセスjの優先度Pjと比較されます。Pi≦Pjの場合、元のプロセスPjは実行を継続しますが、Pi> Pjの場合は、Pjの実行をすぐに停止し、プロセス切り替えを実行して、iプロセスが実行されるようにします。明らかに、このプリエンプティブな優先度スケジューリングアルゴリズムは緊急操作の要件をより適切に満たすことができるため、厳しい要件のあるリアルタイムシステムや、高いパフォーマンス要件のあるバッチ処理およびタイムシェアリングシステムでよく使用されます。

2.2.3マルチレベルフィードバックキュー

プロセスは100個のタイムスライスを実行する必要があり、タイムスライスのラウンドロビンスケジューリングアルゴリズムを使用する場合は、100回交換する必要があります。

マルチレベルキューは、このプロセスで複数のタイムスライスを継続的に実行する必要があると見なされます。1、2、4、8、...などの異なるタイムスライスサイズを持つ複数のキューをセットアップします。プロセスは最初のキューでは実行されず、次のキューに移動されます。この方法では、前のプロセスを7回交換するだけで済みます。

各キューの優先度も異なり、最高の優先度が一番上になります。したがって、現在のキューのプロセスは、前のキューにキューに入れられているプロセスがない場合にのみスケジュールできます。

このスケジューリングアルゴリズムは、タイムスライス回転スケジューリングアルゴリズムと優先度スケジューリングアルゴリズムの組み合わせと見なすことができます。

(1)複数のレディキューをセットアップし、各キューに異なる優先順位を与える必要があります。最初のキューが最も高い優先度を持ち、2番目のキューが次に来て、残りのキューの優先度が1つずつ減少します。このアルゴリズムは、各キューに異なるサイズのプロセス実行タイムスライスを割り当てます。優先度が高いほど、各プロセスに指定される実行タイムスライスは小さくなります。たとえば、2番目のキューのタイムスライスは最初のキューのタイムスライスの2倍です。i+ 1番目のキューのタイムスライスはi番目のキューのタイムスライスの2倍です。

(2)新しいプロセスがメモリに入ると、最初のプロセスは最初のキューの最後に置かれ、FCFS原則に従ってスケジューリングのためにキューに入れられます。プロセスを実行する番になると、タイムスライス内に完了できる場合は、システムを退避する準備をすることができます。タイムスライスの最後に完了しない場合、スケジューラはプロセスを2番目のキューの最後に転送し、次に同様に、FCFSの原則に従ってスケジュールされた実行を待ちます。2番目のキューでタイムスライスを実行しても完了しない場合は、3番目のキューに順番に入れます。つまり、最初のジョブから長いジョブ(プロセス)が開始されます。順次のキューダウンNキュー、最初のn個の キューラウンドロビン動作により取られます。

(3)最初のキューがアイドル状態の場合にのみ、スケジューラは2番目のキューのプロセスをスケジュールし、最初から(i-1)のキューが空の場合のみ、i番目のキューのプロセスをスケジュールします。プロセッサがi番目のキューのプロセスにサービスを提供しており、新しいプロセスが優先度の高いキュー(最初のキューから(i-1)のキュー)に入ると、新しいプロセスは実行中のプロセスをプリエンプトします。プロセスのプロセッサ、つまりスケジューラは、実行中のプロセスをi番目のキューの最後に戻し、新しく到着した優先度の高いプロセスにプロセッサを割り当てます。

 

2.3リアルタイムシステム

リアルタイムシステムでは、リクエストが特定の時間内に応答される必要があります。

前者はハードリアルタイムとソフトリアルタイムに分けられ、絶対的な期限を満たさなければならず、後者は特定のタイムアウトを許容できます。

元の記事519件を公開 賞賛された69件 50,000件以上の表示

おすすめ

転載: blog.csdn.net/qq_41286356/article/details/105200621