-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSJF
51 lines (50 loc) · 1.5 KB
/
SJF
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
#include <stdio.h>
int main()
{
int AT[10], BT[10], var[10];
int k, MIN, counter = 0, tim, totalp;
double WT = 0, TAT = 0, CT;
float AVG_WT, AVG_TAT;
printf("\n\t\t\t**********SHORTEST JOB FIRST ALGORITHM (PREEMPTIVE)**********");
printf("\n\n\n\nEnter Total Number of Processes to be taken:\t");
scanf("%d", &totalp);
printf("\nEnter Burst Time for all processes ::\n" );
for(k = 0; k < totalp; k++)
{
printf(" P%d -\t",k+1);
scanf("%d", &BT[k]);
var[k] = BT[k];
}
printf("\nEnter Arrival Time for all processes ::\n");
for(k = 0; k < totalp; k++)
{
printf(" P%d -\t",k+1);
scanf("%d", &AT[k]);
}
BT[20] = 10000;
for(tim = 0; counter != totalp; tim++)
{
MIN = 20;
for(k = 0; k < totalp; k++)
{
if(AT[k] <= tim && BT[k] < BT[MIN] && BT[k] > 0)
{
MIN = k;
}
}
BT[MIN]--;
if(BT[MIN] == 0)
{
counter++;
CT = tim + 1;
WT = WT + CT - AT[MIN] - var[MIN];
TAT = TAT + CT - AT[MIN];
}
}
AVG_WT = WT / totalp;
AVG_TAT = TAT / totalp;
printf("\nThe results are::");
printf("\nAverage WaitingTime(AVG_WT):\t%f\n", AVG_WT);
printf("Average TurnAroundTime(AVG_TAT):\t\t%f\n", AVG_TAT);
return 0;
}