Let us learn how to implement the Round Robin scheduling program in C language with its explanation, output, advantages, disadvantages and much more.
What is Round Robin Scheduling Algorithm?
Before beginning with the C program implementation, let us first understand the conceptual theory of the Round Robin Scheduling Algorithm.
- The Round robin algorithm is a pre-emptive process scheduling algorithm. Here, every job request in the queue is associated with a fixed execution time called quantum.
- A pre-emptive process enables the job scheduler to pause a process under execution and move to the next process in the job queue.
- The job scheduler saves the current state of the job and moves to another job in the queue as soon as a particular process/job is executed for a given time quantum.
- The context switch saves the current state of the process. This algorithm is beneficial in terms of its response time.
- In the round robin algorithm, every process gets an equal time of execution which is defined by the quantum time.
- Therefore, no process will be able to hold the CPU for a longer time period.
- The round-robin job scheduling algorithm is, therefore, used in a multi-user, time-sharing or multi-tasking operating systems.
- As a result, it is probably the best scheduling algorithm in operating systems for distributed terminal response time.
- Furthermore, the efficiency of this algorithm is totally dependent on the size of the time quantum and the number of context switches that occur.
- The decision making overhead is very low.
- Equal priority is given to each job within the queue, unlike other scheduling algorithms.
- Hence, starvation does not occur so frequently.
- The throughput in the round-robin algorithm is highly dependent on the quantum length.
- If the quantum is less, then the process switching occurs frequently which decreases the efficiency.
- If the quantum is more, the system may become unresponsive.
The RR scheduling algorithm is quite simple to implement, and the overhead in decision-making is very low. This algorithm is good evenly distributes the terminal response time.
Some of the famous scheduling algorithms in C programs that you must know are:
- SCAN Disk Scheduling Algorithm in C
- C Program For FCFS Algorithm
- Preemptive Shortest Job First Algorithm in C Programming
- C Program For Shortest Remaining Time First Algorithm
- Multi-Level Feedback Queue Algorithm C Program
- C SCAN Scheduling Algorithm C Program
- C Program For Preemptive Priority Algorithm
- Non-Preemptive Priority Scheduling C Program
- C Program For Shortest Seek Time First Algorithm
Note: This round robin scheduling program in C language using arrival time and an Array data structure is compiled with GNU GCC compiler using Linux terminal on Linux Ubuntu operating system.
Round Robin Scheduling Program in C
int i, limit, total = 0, x, counter = 0, time_quantum;
int wait_time = 0, turnaround_time = 0, arrival_time, burst_time, temp;
float average_wait_time, average_turnaround_time;
printf("\nEnter Total Number of Processes:\t");
x = limit;
for(i = 0; i < limit; i++)
printf("\nEnter Details of Process[%d]\n", i + 1);
temp[i] = burst_time[i];
printf("\nEnter Time Quantum:\t");
printf("\nProcess ID\t\tBurst Time\t Turnaround Time\t Waiting Time\n");
for(total = 0, i = 0; x != 0;)
if(temp[i] <= time_quantum && temp[i] > 0)
total = total + temp[i];
temp[i] = 0;
counter = 1;
else if(temp[i] > 0)
temp[i] = temp[i] - time_quantum;
total = total + time_quantum;
if(temp[i] == 0 && counter == 1)
printf("\nProcess[%d]\t\t%d\t\t %d\t\t\t %d", i + 1, burst_time[i], total - arrival_time[i], total - arrival_time[i] - burst_time[i]);
wait_time = wait_time + total - arrival_time[i] - burst_time[i];
turnaround_time = turnaround_time + total - arrival_time[i];
counter = 0;
if(i == limit - 1)
i = 0;
else if(arrival_time[i + 1] <= total)
i = 0;
average_wait_time = wait_time * 1.0 / limit;
average_turnaround_time = turnaround_time * 1.0 / limit;
printf("\n\nAverage Waiting Time:\t%f", average_wait_time);
printf("\nAvg Turnaround Time:\t%f\n", average_turnaround_time);
If you have any doubts about the implementation of the round robin scheduling program in C language, let us know about it in the comment section. Find more about it on Wikipedia.