FCFSスケジューリングのためのCプログラム
n個のプロセス、つまりP1、P2、P3、.......、Pnとそれに対応するバースト時間が与えられます。タスクは、FCFSCPUスケジューリングアルゴリズムを使用して平均待機時間と平均ターンアラウンド時間を見つけることです。
待機時間と所要時間とは何ですか?
-
所要時間は、プロセスの送信から完了までの時間間隔です。
所要時間=プロセスの完了–プロセスの提出
-
待機時間は、ターンアラウンドタイムとバーストタイムの差です
待機時間=所要時間–バースト時間
FCFSスケジューリングとは何ですか?
First Come、First Served(FCFS)はFirst In、First Out(FIFO)とも呼ばれ、CPUがレディキューにキューイングされた順序でプロセスに割り当てられるCPUスケジューリングアルゴリズムです。
FCFSは、非プリエンプティブスケジューリングに従います。つまり、CPUがプロセスに割り当てられると、プロセスが終了しないか、I/O割り込みが原因で停止するまでCPUを離れません。
例
次の表に示すように、P2、P3、P1としてシーケンスに到着する4つのプロセスがあり、対応する実行時間があるとします。また、到着時間を0にします。
プロセス | 到着順 | 実行時間(ミリ秒) |
---|---|---|
P1 | 3 | 15 |
P2 | 1 | 3 |
P3 | 2 | 3 |
システム内のプロセスP1、P2、およびP3の待機時間を示すガントチャート
上に示したように、
プロセスP2の待機時間は0です
プロセスP3の待機時間は3です
プロセスP1の待機時間は6です
平均時間=(0 + 3 + 6)/ 3=3ミリ秒。
到着時間を0としたので、所要時間と完了時間は同じになります。
例
Input-: processes = P1, P2, P3 Burst time = 5, 8, 12 Output-: Processes Burst Waiting Turn around 1 5 0 5 2 8 5 13 3 12 13 25 Average Waiting time = 6.000000 Average turn around time = 14.333333>
アルゴリズム
Start Step 1-> In function int waitingtime(int proc[], int n, int burst_time[], int wait_time[]) Set wait_time[0] = 0 Loop For i = 1 and i < n and i++ Set wait_time[i] = burst_time[i-1] + wait_time[i-1] End For Step 2-> In function int turnaroundtime( int proc[], int n, int burst_time[], int wait_time[], int tat[]) Loop For i = 0 and i < n and i++ Set tat[i] = burst_time[i] + wait_time[i] End For Step 3-> In function int avgtime( int proc[], int n, int burst_time[]) Declare and initialize wait_time[n], tat[n], total_wt = 0, total_tat = 0; Call waitingtime(proc, n, burst_time, wait_time) Call turnaroundtime(proc, n, burst_time, wait_time, tat) Loop For i=0 and i<n and i++ Set total_wt = total_wt + wait_time[i] Set total_tat = total_tat + tat[i] Print process number, burstime wait time and turnaround time End For Print "Average waiting time =i.e. total_wt / n Print "Average turn around time = i.e. total_tat / n Step 4-> In int main() Declare the input int proc[] = { 1, 2, 3} Declare and initialize n = sizeof proc / sizeof proc[0] Declare and initialize burst_time[] = {10, 5, 8} Call avgtime(proc, n, burst_time) Stop
例
#include <stdio.h> // Function to find the waiting time for all processes int waitingtime(int proc[], int n, int burst_time[], int wait_time[]) { // waiting time for first process is 0 wait_time[0] = 0; // calculating waiting time for (int i = 1; i < n ; i++ ) wait_time[i] = burst_time[i-1] + wait_time[i-1] ; return 0; } // Function to calculate turn around time int turnaroundtime( int proc[], int n, int burst_time[], int wait_time[], int tat[]) { // calculating turnaround time by adding // burst_time[i] + wait_time[i] int i; for ( i = 0; i < n ; i++) tat[i] = burst_time[i] + wait_time[i]; return 0; } //Function to calculate average time int avgtime( int proc[], int n, int burst_time[]) { int wait_time[n], tat[n], total_wt = 0, total_tat = 0; int i; //Function to find waiting time of all processes waitingtime(proc, n, burst_time, wait_time); //Function to find turn around time for all processes turnaroundtime(proc, n, burst_time, wait_time, tat); //Display processes along with all details printf("Processes Burst Waiting Turn around \n"); // Calculate total waiting time and total turn // around time for ( i=0; i<n; i++) { total_wt = total_wt + wait_time[i]; total_tat = total_tat + tat[i]; printf(" %d\t %d\t\t %d \t%d\n", i+1, burst_time[i], wait_time[i], tat[i]); } printf("Average waiting time = %f\n", (float)total_wt / (float)n); printf("Average turn around time = %f\n", (float)total_tat / (float)n); return 0; } // main function int main() { //process id's int proc[] = { 1, 2, 3}; int n = sizeof proc / sizeof proc[0]; //Burst time of all processes int burst_time[] = {5, 8, 12}; avgtime(proc, n, burst_time); return 0; }
出力
Processes Burst Waiting Turn around 1 5 0 5 2 8 5 13 3 12 13 25 Average Waiting time = 6.000000 Average turn around time = 14.333333
-
優先スケジューリングのためのC++プログラム
n個のプロセス、つまりP1、P2、P3、.......、Pnと、各プロセスに関連付けられた対応するバースト時間と優先度が与えられます。タスクは、優先CPUスケジューリングアルゴリズムを使用して、平均待機時間、平均ターンアラウンドタイム、およびプロセス実行のシーケンスを見つけることです。 待機時間と所要時間とは何ですか? 所要時間 プロセスの送信から完了までの時間間隔です。 所要時間=プロセスの完了–プロセスの提出 待機時間 ターンアラウンドタイムとバーストタイムの差です 待機時間=所要時間–バースト時間 優先スケジューリングとは何ですか? 優先度スケジューリングでは、すべての
-
簡単なスケジューリングに最適なタイムゾーンコンバータ
これまで以上にリモートで作業している世界では、お互いのタイムゾーンを知ることがこれまで以上に重要になっています。多くの労働者は、GMT、PDT、PST、およびその他のタイムゾーンの頭字語に慣れ始めています。同僚が世界中に広がるのは素晴らしいことですが、少し問題になることもあります。これらのタイムゾーンコンバータは非常に役立ちます。 1。 TimeAndDate(Web、iOS、Android) TimeAndDateタイムゾーンコンバーターを使用すると、最大11の都市の現在、過去、および将来の日付を追加して変換できます。都市、国、または時間で時間を整理できる「並べ替え」オプションがあります。