この記事では、ラウンドロビンスケジューリングアルゴリズムと呼ばれるスケジューリングアルゴリズムについて学習します。ラウンドロビンとは何ですか。プログラムの書き方は?など始めましょう。
c ++名前空間とは
ラウンドロビンスケジューリングとは何ですか?
Round Robin Schedulingは、システムがCPU使用率をスケジュールするために使用するスケジューリングアルゴリズムです。これはプリエンプティブアルゴリズムです。クォンタムと呼ばれる各リクエストに関連付けられた固定タイムスライスが存在します。ジョブスケジューラは、現在実行されているジョブの進行状況を保存し、特定のプロセスが特定のタイムクォンタムで実行されると、キューにある次のジョブに移動します。
CPUを長時間保持するプロセスはありません。この切り替えは、コンテキストスイッチと呼ばれます。これはおそらく最高のスケジューリングアルゴリズムの1つです。このアルゴリズムの効率は、量子値に依存します。
ラウンドロビンスケジューリングアルゴリズム
- 最初に、プロセスが先着順で配置されるキューがあります。
- 各プロセスを実行するためにクォンタム値が割り当てられます。
- 最初のプロセスは、クォンタム値が終了するまで実行されます。この後、割り込みが生成され、状態が保存されます。
- その後、CPUは次のプロセスに移動し、同じ方法が実行されます。
- すべてのプロセスが終了するまで、同じ手順が繰り返されます。
サンプルコードを検討してください
#include int main(){int i、limit、total = 0、x、counter = 0、time_quantum int wait_time = 0、turnaround_time = 0、arrival_time [10]、burst_time [10]、temp [10] floataverage_wait_time、average_turnaround_time printf( 'nEnter Total Number of Processes:t')scanf( '%d'、&limit)x = limit for(i = 0 i0){temp [i] = temp [i] --time_quantum total = total + time_quantum} if(temp [i] == 0 && counter == 1){x-- printf( 'nProcess [%d] tt%dtt %dttt%d '、i + 1、burst_time [i]、total --arrival_time [i]、total --arrival_time [i] --burst_time [i])wait_time = wait_time + total --arrival_time [i] --burst_time [i] turnaround_time = turnaround_time + total --arrival_time [i] counter = 0} if(i == limit --1){i = 0} else if(arrival_time [i + 1]<= total) { i++ } else { i = 0 } } average_wait_time = wait_time * 1.0 / limit average_turnaround_time = turnaround_time * 1.0 / limit printf('nnAverage Waiting Time:t%f', average_wait_time) printf('nAvg Turnaround Time:t%fn', average_turnaround_time) return 0 }
出力:
説明:
上記のコードでは、プロセスの数と、各プロセスの到着時間とバースト時間を入力するようにユーザーに求めています。次に、ラウンドロビンアルゴリズムを使用して、待機時間とターンアラウンドタイムを計算します。
ここでの主要な部分は、ターンアラウンドタイムと待機時間を計算することです。所要時間は、合計所要時間を加算し、到着時間を差し引くことによって計算されます。
待機時間は、合計から到着時間とバースト時間を減算し、待機時間にt0を加算することによって計算されます。これは、ラウンドロビンスケジューリングが行われる方法です。
利点:
- 意思決定のための低いオーバーヘッド。
- 他のアルゴリズムとは異なり、すべてのプロセスに同じ優先順位を与えます。
- このプロセスで飢餓が発生することはめったにありません。
短所:
- 頻繁な切り替えが行われるため、量子値が低いと、システムの効率が低下します。
- 量子値が高いと、システムが応答しなくなる可能性があります。
これで、この記事は終わりです。
この有益でお役に立てば幸いです。同様のトピックに関するその他のチュートリアルにご期待ください。トレーニングプログラムもご覧ください。o jQueryとそのさまざまなアプリケーションに関する深い知識を得るには、次のことができます。 24時間年中無休のサポートと生涯アクセスを備えたライブオンライントレーニング用。上記のコードをさまざまな文字列と変更で実装します。これで、ポインターに関連するすべての重要な概念を十分に理解できました。
python__init__とは
質問がありますか?このブログのコメントセクションでそれらに言及してください。折り返しご連絡いたします。