このチュートリアルでは、CPU プロセス スケジューリング アルゴリズムの重要な概念を学びます。重要な概念名は First Come First Serve です。これは、CPU プロセス スケジューリング アルゴリズムの基本をすべて理解するためにすべての学生が学ばなければならない基本的なアルゴリズムです。
先着順は、他のアルゴリズムを理解するための道を開きます。このアルゴリズムには多くの欠点がある可能性があります。しかし、これらの欠点により、非常に新しく効率的なアルゴリズムが作成されました。したがって、先着順サービスの CPU プロセス スケジューリング アルゴリズムについて学ぶのは私たちの責任です。
重要な略語
- CPU - - - > 中央処理装置
- FCFS - - - > 先着順
- AT - - - > 到着時刻
- BT - - - > バーストタイム
- WT - - - > 待ち時間
- TAT - - - > 所要時間
- CT - - - > 完了時間
- FIFO - - - > 先入れ先出し
早い者勝ち
FCFS とも呼ばれる先着順 CPU スケジューリング アルゴリズムは、CPU プロセス スケジューリング アルゴリズムの最初のアルゴリズムです。先着順アルゴリズムでは、プロセスを線形に実行できるようにします。
Ubuntu の ipconfig
これは、最初に準備完了キューに入ったプロセスが最初に実行されることを意味します。これは、先着順サービス アルゴリズムが先入れ先出し (FIFO) 原則に従っていることを示しています。
先着順アルゴリズムは、プリエンプティブまたは非プリエンプティブ方式で実行できます。例に入る前に、CPU プロセス スケジューリングにおけるプリエンプティブ アプローチと非プリエンプティブ アプローチとは何なのかを理解しましょう。
先制的アプローチ
このプリエンプティブ プロセス スケジューリングのインスタンスでは、OS は、あらかじめ決められた期間、プロセスにリソースを割り当てます。プロセスは、リソース割り当て中に実行状態から準備完了状態に、または待機状態から準備完了状態に遷移します。この切り替えは、CPU が他のプロセスに優先順位を割り当て、現在アクティブなプロセスを優先度の高いプロセスに置き換えることがあるために発生します。
非先制的アプローチ
この非プリエンプティブ プロセス スケジューリングの場合、プロセスの実行が終了する前にリソースをプロセスから取り消すことはできません。実行中のプロセスが終了して待機状態に移行すると、リソースが切り替わります。
先着順の護送船団効果 (FCFS)
護送船団効果は、先着順サービス (FCFS) というスケジューリング アルゴリズムで発生する現象です。先着順スケジューリング アルゴリズムは、非プリエンプティブな方法で実行されます。
非プリエンプティブな方法とは、プロセスまたはジョブの実行が開始された場合、オペレーティング システムがそのプロセスまたはジョブを完了する必要があることを意味します。プロセスまたはジョブがゼロになるまで、新しいまたは次のプロセスまたはジョブは実行を開始しません。オペレーティング システムに関するノン プリエンプティブ スケジューリングの定義は、最初に開始されたプロセスまたはジョブが終了するまで中央処理装置 (CPU) が完全に専用となり、新しいプロセスまたはジョブは古いプロセスまたはジョブが終了した後にのみ実行されることを意味します。仕事。
場合によっては、中央処理装置 (CPU) が過剰な時間を割り当てる可能性があります。これは、先着順スケジューリング アルゴリズムの非プリエンプティブ アプローチでは、プロセスまたはジョブがシリアルな順序で選択されるためです。このため、大きなプロセスまたはジョブの背後にある短いジョブまたはプロセスは、実行を完了するまでに時間がかかりすぎます。このため、待ち時間、所要時間、完了時間が非常に長くなります。
ここで、最初のプロセスが大きいか、完了時間が長すぎると、先着順アルゴリズムにおけるこの護送船団効果が発生します。
より長いジョブが完了するまでに無限の時間がかかると仮定します。その後、残りのプロセスは同じ無限時間待機する必要があります。より長いジョブによって発生するこの護送船団効果により、待機中のプロセスの飢餓が非常に急速に増加します。これは、FCFS CPU プロセス スケジューリングの最大の欠点です。
FCFS CPUプロセススケジューリングの特徴
FCFS CPU プロセス スケジューリングの特徴は次のとおりです。
- 実装は簡単です。
- 使用中に人身事故を引き起こすことはありません
- 非先制的および先制的戦略を採用しています。
- 各プロシージャは受信した順に実行されます。
- 到着時刻は手続きの選択基準として使用されます。
FCFS CPU プロセス スケジューリングの利点
FCFS CPU プロセス スケジューリングの利点は次のとおりです。
- プロセスを割り当てるために、先入れ先出しキューを使用します。
- FCFS CPU スケジューリング プロセスは単純で実装が簡単です。
- FCFS 状況のプリエンプティブ スケジューリングでは、プロセスが枯渇する可能性はありません。
- プロセスの優先順位を考慮しないため、公平なアルゴリズムです。
FCFS CPU プロセス スケジューリングの欠点
FCFS CPU プロセス スケジューリングの欠点は次のとおりです。
- FCFS CPU スケジューリング アルゴリズムの待ち時間が長い
- FCFS CPU スケジューリングでは、入力または出力操作よりも CPU が優先されます。
- FCFSでは護送船団効果が発生する可能性がある
- FCFS は非常に単純なため、多くの場合あまり効果的ではありません。これには待機期間の延長も伴います。 CPU が時間のかかる 1 つの注文の処理で忙しい場合、他のすべての注文はアイドル状態のままになります。
先着順の CPU スケジューリング アルゴリズムの問題
例
S. No Process ID Process Name Arrival Time Burst Time _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1 P 1 A 0 9 2 P 2 B 1 3 3 P 3 C 1 2 4 P 4 D 1 4 5 P 5 E 2 3 6 P 6 F 3 2
非先制的アプローチ
ここで、非プリエンプティブ アプローチにおける先着順サービスというスケジューリング アルゴリズムを利用して、この問題を解決してみましょう。
上記の例 1 のガント チャートは次のとおりです。
scan.nextstring Java
所要時間 = 完了時間 - 到着時間
待ち時間 = ターンアラウンドタイム - バーストタイム
上記の質問の解決例 1
はい・いいえ | プロセスID | 到着時刻 | バーストタイム | 完了時間 | ターンアラウンドタイム | 待ち時間 | |
---|---|---|---|---|---|---|---|
1 | P1 | あ | 0 | 9 | 9 | 9 | 0 |
2 | P2 | B | 1 | 3 | 12 | 十一 | 8 |
3 | P3 | C | 1 | 2 | 14 | 13 | 十一 |
4 | P4 | D | 1 | 4 | 18 | 17 | 13 |
5 | P5 | そして | 2 | 3 | 21 | 19 | 16 |
6 | P6 | F | 3 | 2 | 23 | 二十 | 18 |
平均完了時間は次のとおりです。
平均 CT = ( 9 + 12 + 14 + 18 + 21 + 23 ) / 6
平均CT = 97 / 6
平均CT = 16.16667
平均待ち時間は次のとおりです。
平均 WT = ( 0 + 8 + 11 + 13 + 16 + 18 ) /6
平均重量 = 66 / 6
平均重量 = 11
平均所要時間は次のとおりです。
平均TAT = ( 9 + 11 + 13 + 17 + 19 +20 ) / 6
平均TAT = 89 / 6
平均TAT = 14.83334
これは、非先取りアプローチで FCFS を解決する方法です。
では、先制的アプローチでこれらをどのように解決できるかを理解しましょう
先制的アプローチ
ここで、先制アプローチにおける先着順サービスという名前のスケジューリング アルゴリズムを利用して、この問題を解決してみましょう。
プリエンプティブアプローチでは、利用可能な最適なプロセスを検索します。
if-else Java
上記の例 1 のガント チャートは次のとおりです。
はい・いいえ | プロセスID | 到着時刻 | バーストタイム | 完了時間 | ターンアラウンドタイム | 待ち時間 | |
---|---|---|---|---|---|---|---|
1 | P1 | あ | 0 | 9 | 23 | 23 | 14 |
2 | P2 | B | 1 | 3 | 8 | 7 | 4 |
3 | P3 | C | 1 | 2 | 3 | 2 | 0 |
4 | P4 | D | 1 | 4 | 15 | 14 | 10 |
5 | P5 | そして | 2 | 3 | 十一 | 9 | 7 |
6 | P6 | F | 3 | 2 | 5 | 2 | 0 |
次へ→ ← 前へ ウェイクアップ信号の無駄の問題を解決するために、ダイクストラはすべてのウェイクアップ コールを保存するアプローチを提案しました。ダイクストラ氏は、コンシューマに直接ウェークアップ コールを与える代わりに、プロデューサはウェークアップ コールを変数に格納できると述べています。消費者は誰でも、必要なときにいつでもそれを読むことができます。 セマフォは、プロデューサーからコンシューマーに転送されるウェイクアップ コール全体を格納する変数です。これは、カーネル モードで読み取り、変更、更新が自動的に行われる変数です。 2 つ以上のプロセスが変数に同時にアクセスしようとすると競合状態が常に発生する可能性があるため、セマフォはユーザー モードでは実装できません。実装するには常にオペレーティング システムのサポートが必要です。 状況の需要に応じて、セマフォは 2 つのカテゴリに分類できます。
それぞれについて詳しく説明します。 |