|
1 |
| -#include<stdio.h> |
2 |
| - |
3 |
| -int main() |
4 |
| -{ |
5 |
| - int i, limit, total = 0, x, counter = 0, time_quantum,j; |
6 |
| - |
7 |
| - int wait_time = 0, turnaround_time = 0,pos,z,p[10],prio[10], a_time[20], b_time[10], temp[10],b; |
8 |
| - |
9 |
| - float average_wait_time, average_turnaround_time; |
10 |
| - |
11 |
| - printf("\nEnter Total Number of Processes:"); |
12 |
| - |
13 |
| - scanf("%d", &limit); |
14 |
| - |
15 |
| - x = limit; |
16 |
| - for(i = 0; i < limit; i++) |
17 |
| - { |
18 |
| - p[i]=i+1; |
19 |
| - |
20 |
| - prio[i]=0; |
21 |
| - printf("\nEnter total Details of Process[%d]\n", i + 1); |
22 |
| - printf("Arrival Time:\t"); |
23 |
| - scanf("%d", &a_time[i]); |
24 |
| - printf("Burst Time:\t"); |
25 |
| - scanf("%d", &b_time[i]); |
26 |
| - temp[i] = b_time[i]; |
27 |
| - } |
28 |
| - |
29 |
| - printf("\nEnter the Time Quantum:"); |
30 |
| - scanf("%d", &time_quantum); |
31 |
| - printf("\nProcess ID\t\tBurst Time\t Turnaround Time\t Waiting Time\t Priority\n"); |
32 |
| - for(total = 0, i = 0; x != 0;) |
33 |
| - { |
34 |
| - |
35 |
| - for(z=0;z<limit;z++) |
36 |
| - { |
37 |
| - int temp1; |
38 |
| - pos=z; |
39 |
| - for(j=z+1;j<limit;j++) |
40 |
| - { |
41 |
| - if(prio[j]<prio[pos]) |
42 |
| - pos=j; |
43 |
| - } |
44 |
| - |
45 |
| - temp1=prio[z]; |
46 |
| - |
47 |
| - prio[z]=prio[pos]; |
48 |
| - |
49 |
| - prio[pos]=temp1; |
50 |
| - |
51 |
| - temp1=b_time[z]; |
52 |
| - b_time[z]=b_time[pos]; |
53 |
| - b_time[pos]=temp1; |
54 |
| - temp1=a_time[z]; |
55 |
| - a_time[z]=a_time[pos]; |
56 |
| - a_time[pos]=temp1; |
57 |
| - |
58 |
| - temp1=p[z]; |
59 |
| - p[z]=p[pos]; |
60 |
| - p[pos]=temp1; |
| 1 | +#include<stdio.h> |
61 | 2 |
|
62 |
| - temp1=temp[z]; |
63 |
| - temp[z]=temp[pos]; |
64 |
| - temp[pos]=temp1; |
65 |
| - } |
66 |
| - { |
67 |
| - } |
68 |
| - |
69 |
| - if(temp[i] <= time_quantum && temp[i] > 0) |
70 |
| - { |
71 |
| - total = total + temp[i]; |
72 |
| - temp[i] = 0; |
73 |
| - counter = 1; |
74 |
| - } |
75 |
| - |
76 |
| - else if(temp[i] > 0) |
77 |
| - { |
78 |
| - temp[i] = temp[i] - time_quantum; |
79 |
| - total = total + time_quantum; |
80 |
| - } |
| 3 | +struct process |
| 4 | +{ |
| 5 | + char process_name; |
| 6 | + int arrival_time, burst_time, ct, waiting_time, turnaround_time, priority; |
| 7 | + int status; |
| 8 | +}process_queue[10]; |
81 | 9 |
|
82 |
| - for(b=0;b<limit;b++) |
83 |
| - { |
84 |
| - if(b==i) |
85 |
| - prio[b]+=1; |
86 |
| - else |
87 |
| - prio[b]+=2; |
88 |
| - } |
| 10 | +int limit; |
89 | 11 |
|
90 |
| - if(temp[i] == 0 && counter == 1) |
91 |
| - { |
92 |
| - x--; |
93 |
| - printf("\nProcess[%d]\t\t%d\t\t %d\t\t %d\t\t%d", p[i], b_time[i], total - a_time[i], total - a_time[i] - b_time[i],prio[i]); |
94 |
| - wait_time = wait_time + total - a_time[i] - b_time[i]; |
95 |
| - turnaround_time = turnaround_time + total - a_time[i]; |
96 |
| - counter = 0; |
97 |
| - } |
98 |
| - if(i == limit - 1) |
99 |
| - { |
100 |
| - i = 0; |
101 |
| - |
102 |
| - } |
103 |
| - else if(a_time[i + 1] <= total) |
| 12 | +void Arrival_Time_Sorting() |
| 13 | +{ |
| 14 | + struct process temp; |
| 15 | + int i, j; |
| 16 | + for(i = 0; i < limit - 1; i++) |
| 17 | + { |
| 18 | + for(j = i + 1; j < limit; j++) |
104 | 19 | {
|
105 |
| - i++; |
106 |
| - |
107 |
| - } |
108 |
| - else |
| 20 | + if(process_queue[i].arrival_time > process_queue[j].arrival_time) |
| 21 | + { |
| 22 | + temp = process_queue[i]; |
| 23 | + process_queue[i] = process_queue[j]; |
| 24 | + process_queue[j] = temp; |
| 25 | + } |
| 26 | + } |
| 27 | + } |
| 28 | +} |
| 29 | + |
| 30 | +void main() |
| 31 | +{ |
| 32 | + int i, time = 0, burst_time = 0, largest; |
| 33 | + char c; |
| 34 | + float wait_time = 0, turnaround_time = 0, average_waiting_time, average_turnaround_time; |
| 35 | + printf("\nEnter Total Number of Processes:\t"); |
| 36 | + scanf("%d", &limit); |
| 37 | + for(i = 0, c = 'A'; i < limit; i++, c++) |
| 38 | + { |
| 39 | + process_queue[i].process_name = c; |
| 40 | + printf("\nEnter Details For Process[%C]:\n", process_queue[i].process_name); |
| 41 | + printf("Enter Arrival Time:\t"); |
| 42 | + scanf("%d", &process_queue[i].arrival_time ); |
| 43 | + printf("Enter Burst Time:\t"); |
| 44 | + scanf("%d", &process_queue[i].burst_time); |
| 45 | + printf("Enter Priority:\t"); |
| 46 | + scanf("%d", &process_queue[i].priority); |
| 47 | + process_queue[i].status = 0; |
| 48 | + burst_time = burst_time + process_queue[i].burst_time; |
| 49 | + } |
| 50 | + Arrival_Time_Sorting(); |
| 51 | + process_queue[9].priority = -9999; |
| 52 | + printf("\nProcess Name\tArrival Time\tBurst Time\tPriority\tWaiting Time"); |
| 53 | + for(time = process_queue[0].arrival_time; time < burst_time;) |
| 54 | + { |
| 55 | + largest = 9; |
| 56 | + for(i = 0; i < limit; i++) |
109 | 57 | {
|
110 |
| - i = 0; |
111 |
| - |
112 |
| - } |
113 |
| - } |
114 |
| - return 0; |
| 58 | + if(process_queue[i].arrival_time <= time && process_queue[i].status != 1 && process_queue[i].priority > process_queue[largest].priority) |
| 59 | + { |
| 60 | + largest = i; |
| 61 | + } |
| 62 | + } |
| 63 | + time = time + process_queue[largest].burst_time; |
| 64 | + process_queue[largest].ct = time; |
| 65 | + process_queue[largest].waiting_time = process_queue[largest].ct - process_queue[largest].arrival_time - process_queue[largest].burst_time; |
| 66 | + process_queue[largest].turnaround_time = process_queue[largest].ct - process_queue[largest].arrival_time; |
| 67 | + process_queue[largest].status = 1; |
| 68 | + wait_time = wait_time + process_queue[largest].waiting_time; |
| 69 | + turnaround_time = turnaround_time + process_queue[largest].turnaround_time; |
| 70 | + printf("\n%c\t\t%d\t\t%d\t\t%d\t\t%d", process_queue[largest].process_name, process_queue[largest].arrival_time, process_queue[largest].burst_time, process_queue[largest].priority, process_queue[largest].waiting_time); |
| 71 | + } |
| 72 | + average_waiting_time = wait_time / limit; |
| 73 | + average_turnaround_time = turnaround_time / limit; |
| 74 | + printf("\n\nAverage waiting time:\t%f\n", average_waiting_time); |
| 75 | + printf("Average Turnaround Time:\t%f\n", average_turnaround_time); |
115 | 76 | }
|
0 commit comments