diff --git a/CPP/FCFS_CPU_Scheduling_algo.cpp b/CPP/FCFS_CPU_Scheduling_algo.cpp new file mode 100644 index 0000000..ee4d54d --- /dev/null +++ b/CPP/FCFS_CPU_Scheduling_algo.cpp @@ -0,0 +1,63 @@ +/* C++ program for implementation of FCFS scheduling algorithm */ + +/* Given n processes with their Burst times, we find the average waiting time +and average turnaround time using FCFS CPU scheduling Algorithm */ + +#include +using namespace std; + +void findWaitingTime(int processes[], int n, + int bt[], int wt[]) +{ + wt[0] = 0; + for (int i = 1; i < n; i++) + { + wt[i] = bt[i - 1] + wt[i - 1]; + } +} + +void findTurnAroundTime(int processes[], int n, + int bt[], int wt[], int tat[]) +{ + for (int i = 0; i < n; i++) + { + tat[i] = bt[i] + wt[i]; + } +} + +void findavgTime(int processes[], int n, int bt[]) +{ + int wt[n], tat[n], total_wt = 0, total_tat = 0; + findWaitingTime(processes, n, bt, wt); + findTurnAroundTime(processes, n, bt, wt, tat); + + cout << "Processes " + << " Burst time " + << " Waiting time " + << " Turn around time\n"; + + for (int i = 0; i < n; i++) + { + total_wt = total_wt + wt[i]; + total_tat = total_tat + tat[i]; + cout << " " << i + 1 << "\t\t" << bt[i] << "\t " + << wt[i] << "\t\t " << tat[i] << endl; + } + + cout << "Average waiting time = " + << (float)total_wt / (float)n; + cout << "\nAverage turn around time = " + << (float)total_tat / (float)n; +} + +// Driver code +int main() +{ + int processes[] = {1, 2, 3}; + int n = sizeof processes / sizeof processes[0]; + + int burst_time[] = {9, 4, 7}; + + findavgTime(processes, n, burst_time); + return 0; +} \ No newline at end of file