Round Robin

 #include <stdio.h>

main()

{

int i,x=-1,k[10],m=0,n,t,s=0;

int a[50],temp,b[50],p[10],bur[10],bur1[10];int 

wat[10],tur[10],ttur=0,twat=0,j=0; float awat,atur;

printf("Enter no. of process : ");scanf("%d", &n);

for(i=0; i<n; i++)

{

printf("Burst time for process P%d : ", (i+1));scanf("%d", &bur[i]);

bur1[i] = bur[i];

}

printf("Enter the time slice (in ms) : ");

scanf("%d", &t);

for(i=0; i<n; i++)

{

b[i] = bur[i] / t;

if((bur[i]%t) != 0)

b[i] += 1;

m += b[i];

}

printf("\n\t\tRound Robin Scheduling\n");

printf("\nGANTT Chart\n");for(i=0; i<m; i++)

printf(" ----------------- ");

printf("\n");

a[0] = 0;

while(j < m)

{

if(x == n-1)x = 0;

else

x++;

if(bur[x] >= t)

{

bur[x] -= t;

a[j+1] = a[j] + t;

if(b[x] == 1)

{

p[s] = x;

k[s] = a[j+1];s++;

}

j++;

b[x] -= 1;

printf(" P%d |", x+1);

}

else if(bur[x] != 0)

{

a[j+1] = a[j] + bur[x];bur[x] = 0;

if(b[x] == 1)

{

p[s] = x;

k[s] = a[j+1];s++;

}

j++;

b[x] -= 1;

printf(" P%d |",x+1);

}

}

printf("\n"); for(i=0;i<m;i++)

printf(" ----------------- ");

printf("\n");

for(j=0; j<=m; j++) printf("%d\t", a[j]);

for(i=0; i<n; i++)

{

for(j=i+1; j<n; j++)

{

if(p[i] > p[j])

{

temp = p[i]; p[i] = p[j]; p[j] =

temp;

temp = k[i]; k[i] = k[j]; k[j] =

temp;

}

}

}

for(i=0; i<n; i++)

{

wat[i] = k[i] - bur1[i];tur[i] = k[i];

}

for(i=0; i<n; i++)

{

ttur += tur[i];twat += wat[i];

}

printf("\n\n"); for(i=0; i<30; i++)

printf("-"); printf("\nProcess\tBurst\tTrnd\tWait\n"); for(i=0; i<30; i++)

printf("-"); for (i=0; i<n; i++)

printf("\nP%-4d\t%4d\t%4d\t%4d", p[i]+1, bur1[i],tur[i],wat[i]);

printf("\n"); for(i=0; i<30; i++)

printf("-");

awat = (float)twat / n;atur = (float)ttur / n;

printf("\n\nAverage waiting time: %.2f ms", awat);printf("\nAverage turn around time :

%.2f ms\n", atur);

}

Comments

Popular posts from this blog

Start system call

Implementation