Round-robin (RR) is one of the algorithms employed by process and network schedulers in computing. As the term is generally used, time slices are assigned to each process in equal portions and in circular order, handling all processes without priority (also known as cyclic executive). Round-robin scheduling is simple, easy to implement, and starvation-free. Round-robin scheduling can also be applied to other scheduling problems, such as data packet scheduling in computer networks. It is an Operating System concept.
The name of the algorithm comes from the round-robin principle known from other fields, where each person takes an equal share of something in turn.
/* IMPLEMENTATION OF ROUND ROBIN SCHEDULING ALGORITHM
AIM
To write a c program to implement the round robin scheduling algorithm
ALGORITHM
1. Start the process
2. Declare the array size
3. Get the number of elements to be inserted
4. Get the value
5. Set the time sharing system with preemption
6. Define quantum is defined from 10 to 100ms
7. Declare the queue as a circular
8. Make the CPU scheduler goes around the ready queue allocating CPU to each process
for the time interval specified
9. Make the CPU scheduler picks the first process and sets time to interrupt after quantum
expired dispatches the process
9. If the process have burst less than the time quantum than the process release the CPU
10. If the process have bust greater then time quantum then time will go off and cause
interrupt to OS and the process put into the tail of ready queue and the schedule select
next process
11. Display the results
12. Stop the process
*/
PROGRAM:
#include<stdio.h>
int ttime,i,j,temp;
main()
{
int pname[10],btime[10],pname2[10],btime2[10];
int n,x,z;
printf("Enter the no. of process:");
scanf("%d",&n);
printf("Enter the process name and burst time for the process\n");
for(i=0;i<n;i++)
{
printf("Enter the process name:");
scanf("%d",&pname2[i]);
printf("Enter burst time for the process %d:",pname2[i]);
scanf("%d",&btime2[i]);
}
printf("PROCESS NAME \t\t BURST TIME\n");
for(i=0;i<n;i++)
printf("%d\t\t\t %d\n",pname2[i],btime2[i]);
z=1;
while(z==1)
{
ttime=0;
for(i=0;i<n;i++)
{
pname[i]=pname2[i];
btime[i]=btime2[i];
}
printf ("PRESS 1.ROUND ROBIN 2.EXIT\n");
scanf("%d",&x);
switch(x)
{
case 1:
rrobin(pname,btime,n);
break;
case 2:
exit(0);
break;
default:
printf("Invalid option");
break;
}
printf("\n\n If you want to continue press 1:");
scanf("%d",&z);
}
}
rrobin(int pname[],int btime[],int n)
{
int tslice;
j=0;
printf("\n\t ROUND ROBIN SCHEDULING \n\n");
printf("Enter the time slice:\n");
scanf("%d",&tslice);
printf("PROCESS NAME \t REMAINING TIME\t TOTAL TIME");
while(j<n)
{
for(i=0;i<n;i++)
{
if(btime[i]>0)
{
if(btime[i]>=tslice)
{
ttime+=tslice;
btime[i]=btime[i]-tslice;
printf("\n%d\t\t %d \t\t %d",pname[i],btime[i],ttime);
if(btime[i]==0)
j++;
}
else
{
ttime+=btime[i];
btime[i]=0;
printf("\n%d\t\t %d \t\t %d",pname[i],btime[i],ttime);
}
}
}
}
}
/*
OUTPUT:
Enter the no. of process: 4
Enter the process name and burst time for the process
Enteer the process name: 1
Enter burst time for the process 1: 8
Enteer the process name: 2
Enter burst time for the process 2: 3
Enteer the process name: 3
Enter burst time for the process 3: 6
Enteer the process name: 4
Enter burst time for the process 4: 1
PROCESS NAME BURST TIME
1 8
2 3
3 6
4 1
PRESS 1.ROUND ROBIN 2.EXIT
1
ROUND ROBIN SCHEDULING
Enter the time slice:
2
PROCESS NAME REMAINING TIME TOTAL TIME
1 6 2
2 1 4
3 4 6
4 0 7
1 4 9
2 0 10
3 2 12
1 2 14
3 0 16 */
Comments
Post a Comment