-
Notifications
You must be signed in to change notification settings - Fork 0
/
rr.c
87 lines (86 loc) · 2.3 KB
/
rr.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include<stdio.h>
int q[100];
int f = -1;
int r = -1;
void insert (int n)
{
if (f==-1)
f=0;
r = r+1;
q[r] = n;
}
int delete ()
{
int n;
n = q[f];
f = f+1;
if (f==r)
f=r=-1;
return n;
}
int main()
{
int p, tq, n, i, t=0,ct;
float twt = 0, ttat = 0;
printf ("\nEnter how many processes: ");
scanf ("%d", &n);
int a[10][6], bt[10], exist[10] = {0};
printf ("\n Enter arrival time & burst time of each process:");
for (i=0; i<n; i++)
{
printf ("\nProcess ID: ");
scanf ("%d", &a[i][0]);
printf ("\nA.T of process %d: ", a[i][0]);
scanf ("%d", &a[i][1]);
printf ("\nB.T of process %d: ", a[i][0]);
scanf ("%d", &a[i][2]);
bt[i] = a[i][2];
}
printf ("\nEnter time quantum: ");
scanf ("%d", &tq);
insert (0);
exist[0] = 1;
t = a[0][1];
while (f<=r && f>=0)
{
p = delete ();
if (a[p][2]>=tq)
{
a[p][2]-=tq;
t+=tq;
}
else
{
t+=a[p][2];
a[p][2] = 0;
}
for (i=0; i<n; i++)
{
if (exist[i]==0 && a[i][1]<=t)
{
insert (i);
exist[i]=1;
}
}
if (a[p][2]==0)
{
a[p][5] = t;
a[p][4]=a[p][5]-a[p][1];
a[p][3]=a[p][4]-bt[p];
ttat+=a[p][4];
twt+=a[p][3];
}
else
{
insert (p);
}
}
printf("\nP.No.\tAT\tBT\tTAT\tWT\tCT");
for (i=0; i<n; i++)
{
printf("\n%d\t%d\t%d\t%d\t%d\t%d", a[i][0], a[i][1], bt[i], a[i][4], a[i][3],a[i][5]);
}
printf ("\nAverage Turnaround time = %f", ttat/n);
printf ("\nAverage Waiting time = %f", twt/n);
return 0;
}