Round Robin Algorithm
Round Robin Algorithm
A Project
Submitted By:
Mr. Chetan Patil Roll No. 3122
Ms. Jayshree Khedkar Roll No. 3132
Ms. Shreya Wagh Roll No. 3139
Mr. Abhijeet Kulkarni Roll No. 3160
Mr. Krishna Ahire Roll No. 3164
GOVERNMENT POLYTECHNIC
NANDURBAR, DIST- NANDURBAR (MSBTE CODE: 1432)
YEAR 2022-23
1|Page
GOVERNMENT POLYTECHNIC, NANDURBAR, DIST - NANDURBAR (MS
CERTIFICATE
This is to certify that
Mr. Chetan Patil Roll No. 3122
Ms. Jayshree Khedkar Roll No. 3132
Ms. Shreya Wagh Roll No. 3139
Mr. Abhijeet Kulkarni Roll No. 3160
Mr. Krishna Ahire Roll No. 3164
Has satisfactorily completed project entitled
GUIDE H.O.D.
Prof. M. M. Goswami Prof. S. B. Thakre
EXAMINER PRINCIPAL
--------------- Dr. S. D. Pable
2|Page
GOVERNMENT POLYTECHNIC, NANDURBAR, DIST - NANDURBAR (M
CERTIFICATE OF APPROVAL
3|Page
INDEX
1. Abstract 05
2. Introduction 06
3. FCFS 07
1. FCFS
2. Use Case Diagram of FCFS
3. Data Flow Diagram of FCFS
4. 15
ROUND ROBIN
1. RR
2. Use Case Diagram of RR
3. Data Flow Diagram of RR
5. Comparisons 24
6. Conclusion 26
4|Page
ABSTRACT
Round Robin (RR) scheduling algorithm is the widely used scheduling algorithm in multitasking.
It ensures fairness and starvation free execution of processes. Choosing the time quantum in RR
algorithm is very crucial as small time slice results in large number of context switches and large
time quantum increases the response time. To overcome these problems of RR scheduling,
instead of static time slice dynamic time slice can be used to get optimal performance. The
objective of this paper is to modify RR algorithm by adjusting time slices of different rounds
depending on the remaining CPU bursts of currently running processes and considering their
waiting times until that round in respect of the other processes waiting times. Experimental
analysis reveals that the proposed algorithm produces better average turnaround time, average
waiting time and fewer number of context switches than existing algorithms.
5|Page
INTRODUCTION
Round Robin is a CPU scheduling algorithm where each process is assigned a fixed time slot in a
cyclic way. It is simple, easy to implement, and starvation-free as all processes get fair share of
CPU. One of the most commonly used technique in CPU scheduling as a core. It is preemptive
as processes are assigned CPU only for a fixed slice of time at most. The disadvantage of it is
more overhead of context switching.
FIFO simply queues processes in the order that they arrive in the ready queue. This is commonly
used for a task queue, for example as illustrated in this section.
6|Page
First Come, First Served (FCFS)
First Come First Serve is the simplest and easiest scheduling algorithm. In this algorithm, the
CPU is allocated to the processes in the order they request it. The implementation of FCFS is
easily done with a queue (a FIFO structure). When the first process enters the system, it starts its
execution immediately and runs till it completes its execution. As other processes enter the
system, they are put at the end of the queue and wait to get the CPU. When a process finishes
executing, it releases the CPU, is removed from the queue and the CPU is allocated to next
process at the head of the queue.
First come, first served (FCFS) is an operating system process scheduling algorithm and a
network routing management mechanism that automatically executes queued requests
and processes by the order of their arrival.
With first come, first served, what comes first is handled first; the next request in line will
be executed once the one before it is complete.
FCFS is also known as first-in, first-out (FIFO) and first come, first choice (FCFC).
Example:
P1 25
P2 4
P3 3
The processes arrive in the order P1, P2, P3 and are served as per the FCFS algorithm. The Gantt
chart is as shown:
P1 P2 P3
0 25 29 32
7|Page
The waiting time for P1 is 0 milliseconds, for P2 it is 25 milliseconds and 29
milliseconds for P3. Thus, average waiting time is (0+25+29)/3 = 18 milliseconds.\
Advantage:
o It is easy to understand and implement.
o Simple
o Easy
o First come, First serve
Disadvantage:
Implementation:
8|Page
5- Find turnaround time = waiting time + burst time
for all processes.
6- Find average waiting time =
total_waiting_time / no_of_processes.
7- Similarly, find average turnaround time =
total_turn_around_time / no_of_processes.
Code
// C++ program for implementation of FCFS
// scheduling
#include<iostream>
using namespace std;
9|Page
{
// calculating turnaround time by adding
// bt[i] + wt[i]
for (int i = 0; i < n ; i++)
tat[i] = bt[i] + wt[i];
}
10 | P a g e
cout << "Average waiting time = "
<< (float)total_wt / (float)n;
cout << "\nAverage turn around time = "
<< (float)total_tat / (float)n;
}
// Driver code
int main()
{
//process id's
int processes[] = { 1, 2, 3};
int n = sizeof processes / sizeof processes[0];
//Burst time of all processes
int burst_time[] = {10, 5, 8};
findavgTime(processes, n, burst_time);
return 0; }
}
Manual Output:
1 10 0 10
2 5 10 15
3 8 15 23
11 | P a g e
System Output:
12 | P a g e
Use case Diagram of FCFS
13 | P a g e
Data Flow Diagram for FCFS
14 | P a g e
Round Robin scheduling algorithm
Round Robin is a CPU scheduling algorithm where each process is assigned a fixed time slot in a
cyclic way.
It is simple, easy to implement, and starvation-free as all processes get fair share of CPU.
One of the most commonly used technique in CPU scheduling as a core.
It is preemptive as processes are assigned CPU only for a fixed slice of time at most.
The disadvantage of it is more overhead of context switching
Round-robin algorithm is a pre-emptive algorithm as the scheduler forces the process out
of the CPU once the time quota expires.
For example, if the time slot is 100 milliseconds, and job1 takes a total time of 250 ms to
complete, the round-robin scheduler will suspend the job after 100 ms and give other jobs
their time on the CPU. Once the other jobs have had their equal share (100 ms
each), job1 will get another allocation of CPU time and the cycle will repeat. This process
continues until the job finishes and needs no more time on the CPU.
15 | P a g e
Steps to find waiting times of all processes:
1) Create an array rem_bt[] to keep track of remaining
burst time of processes. This array is initially a
copy of bt[] (burst times array)
2) Create another array wt[] to store waiting times
of processes. Initialize this array as 0.
3) Initialize time : t = 0
4)Keep traversing the all processes while all
processes are not done. Do following for it’s
process if it is not done yet.
a- If rem_bt[i] > quantum
(i) t = t + quantum
(ii) bt_rem[i] -= quantum;
c- Else // Last cycle for this process
(i) t = t + bt_rem[i];
(ii) wt[i] = t - bt[i]
(ii) bt_rem[i] = 0; // This process is over
16 | P a g e
// burst times.
int rem_bt[n];
for (int i = 0 ; i < n ; i++)
rem_bt[i] = bt[i];
17 | P a g e
}
18 | P a g e
// calculating turnaround time by adding
// bt[i] + wt[i]
for (int i = 0; i < n ; i++)
tat[i] = bt[i] + wt[i];
}
19 | P a g e
cout << "Average waiting time = "
<< (float)total_wt / (float)n;
cout << "\nAverage turn around time = "
<< (float)total_tat / (float)n;
}
// Driver code
int main()
{
// process id's
int processes[] = { 1, 2, 3};
int n = size of processes / size of processes[0];
// Time quantum
int quantum = 2;
findavgTime(processes, n, burst_time, quantum);
return 0;
}
20 | P a g e
Manual Output
time
1 10 13 23
2 5 10 15
3 8 13 21
System output
21 | P a g e
Use case Diagram of Round Robin
22 | P a g e
Data flow diagram of Round Robin
23 | P a g e
Comparison
Comparison
24 | P a g e
CONCLUSION
Thus, we have performed various scheduling algorithms such as FCFS (First Come First Serve)
and Round Robin Algorithm. We have developed a C plus program to execute these algorithms.
We have calculated waiting time, turnaround time, burst time. We have created Use case and Data
Flow Diagram for both algorithms.
25 | P a g e
Weekly Work / Progress Report