Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.40 KB | None | 0 0
  1. #include<stdio.h>
  2.  
  3. int find_turnaround(int arrival_time, int completion);
  4. int find_waiting_time(int turnaround, int burst_time);
  5. void copyArray(int a[],int burstTime[],int number_of_processes);
  6.  
  7. int main()
  8. {
  9. int choice;
  10. int number_of_processes, total_time, remain, completed = 0, id = 0;
  11. int total_wait_time = 0,total_turnaround_time = 0;
  12. int ids[10][10], fcfs_bt_queue[10];
  13.  
  14. int arrival_time[] = {0,10,20,30,40};
  15. int ascendingBurstTime[] = {10,12,33,45,57};
  16. int descendingBurstTime[] = {57,45,33,12,10};
  17. int remaining_time[10], arrival_time_copy[10];
  18. int time_quantum;
  19. int fcfs_waiting_time = 0;
  20. int fcfs_turnaround_time = 0;
  21.  
  22. int length = sizeof(arrival_time) / sizeof(arrival_time[0]);
  23. number_of_processes = length;
  24. int burst_time[number_of_processes];
  25.  
  26. printf("Press 1 for ascending workload or Press 2 for descending workload\n");
  27. printf("Enter your choice :");
  28. scanf("%d",&choice);
  29.  
  30. if(choice == 1)
  31. {
  32. //assign burst time with ascending order workload
  33. copyArray(ascendingBurstTime,burst_time,number_of_processes);
  34. }
  35. else
  36. {
  37. //assign burst time with descending order workload
  38. copyArray(descendingBurstTime,burst_time,number_of_processes);
  39. }
  40.  
  41. printf("Enter a suitable time quantum :");
  42. scanf("%d",&time_quantum);
  43.  
  44. for(int i = 0; i < length; i++)
  45. {
  46. remaining_time[i] = burst_time[i];
  47. }
  48.  
  49. printf(" _________________________________________________________________________________\n");
  50. printf("| | | | | |\n");
  51. printf("|%s |%14s |%13s |%14s |%17s |\n"," Processes","Arrival Time","Burst time","Waiting time","Turn around time");
  52. printf("|___________|________________|________________|________________|__________________|\n");
  53. printf("| | | | | |\n");
  54.  
  55. total_time = arrival_time[0];
  56.  
  57. for(int i = 0, flag = 0, waiting_time = 0; i < number_of_processes; i++) {
  58.  
  59. ids[i+1][0] = arrival_time[i];
  60. ids[i+1][1] = burst_time[i];
  61.  
  62. if(remaining_time[i] <= time_quantum)
  63. {
  64. total_time += remaining_time[i];
  65. fcfs_bt_queue[i] = 0;
  66. int turnaround = find_turnaround(arrival_time[i], total_time);
  67. int waiting = find_waiting_time(turnaround, burst_time[i]);
  68. ids[i+1][2] = waiting + waiting_time;
  69. ids[i+1][3] = turnaround;
  70. total_wait_time += waiting + waiting_time;
  71. total_turnaround_time += turnaround;
  72. waiting_time += remaining_time[i];
  73. }
  74. else
  75. {
  76. int remaining = remaining_time[i] - time_quantum;
  77. total_time += time_quantum;
  78. fcfs_bt_queue[i] = remaining;
  79. }
  80. if(arrival_time[i + 1] >= total_time)
  81. {
  82. total_time += arrival_time[i+1] - total_time;
  83. }
  84. }
  85.  
  86. for(int i = 0, waiting_time = 0; i < number_of_processes; i++)
  87. {
  88. if(fcfs_bt_queue[i] > 0)
  89. {
  90. total_time += fcfs_bt_queue[i];
  91. ids[i+1][2] = total_time - arrival_time[i] - remaining_time[i];
  92. ids[i+1][3] = total_time - arrival_time[i];
  93. total_wait_time += total_time - arrival_time[i] - remaining_time[i];
  94. total_turnaround_time += total_time - arrival_time[i];
  95. }
  96. }
  97.  
  98. for(int i = 1; i <= number_of_processes; i++) {
  99. printf("| %d |",i);
  100. printf("%9d |", ids[i][0]);
  101. printf("%10d |", ids[i][1]);
  102. printf("%10d |",ids[i][2]);
  103. printf("%10d |\n",ids[i][3]);
  104. }
  105.  
  106. printf("|___________|________________|________________|________________|__________________|\n");
  107.  
  108. printf("\nAverage Waiting Time= %f", (float)total_wait_time/number_of_processes);
  109. printf("\nAvg Turnaround Time = %f", (float)total_turnaround_time/number_of_processes);
  110. printf("\nThroughput = %f\n", (float) number_of_processes / total_time);
  111.  
  112. return 0;
  113. }
  114.  
  115. int find_turnaround(int arrival_time, int completion){
  116. int turnaround = completion - arrival_time;
  117. return turnaround;
  118. }
  119.  
  120. int find_waiting_time(int turnaround, int burst_time){
  121. int waiting_time = (turnaround - burst_time);
  122. return waiting_time;
  123. }
  124.  
  125. //function to copy elements of an array to another array
  126. void copyArray(int a[],int burstTime[],int number_of_processes)
  127. {
  128. for (int i=0 ;i<number_of_processes ;i++)
  129. {
  130. burstTime[i] = a[i];
  131. }
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement