First-come First-served Scheduling (FCFS)
First-come First-served Scheduling follow first in first out method. As
each process becomes ready, it joins the ready queue. When the current
running process ceases to execute, the oldest process in the Ready
queue is selected for running. That is first entered process among the
available processes in the ready queue.The average waiting time for
FCFS is often quite long. It is non-preemptive.
TURNAROUND TIME=WAITING TIME + SERVICE TIME
Advantages
Better for long processes
Simple method (i.e., minimum overhead on processor)
No starvation
Disadvantages
Convoy effect occurs. Even very small process should wait for its
turn to come to utilize the CPU. Short process behind long process
results in lower CPU utilization.
Throughput is not emphasized.
Shortest Job First Scheduling (SJF)
This algorithm associates ith each process the length of the next CPU
burst. Shortest-job-first scheduling is also called as shortest process next
(SPN). The process with the shortest expected processing time is
selected for execution, among the available processes in the ready
queue. Thus, a short process will jump to the head of the queue over
long jobs. If the next CPU bursts of two processes are the same then
FCFS scheduling is used to break the tie.SJF scheduling algorithm is
probably optimal. It gives the minimum average time for a given set of
processes. It cannot be implemented at the level of short term CPU
scheduling. There is no way of knowing the shortest CPU burst.
SJF can be preemptive or non-preemptive.
A preemptive SJF algorithm will preempt the currently executing process
if the next CPU burst of newly arrived process may be shorter than what
is left to the currently executing process.
A Non-preemptive SJF algorithm will allow the currently running process
to finish. Preemptive SJF Scheduling is sometimes called Shortest
Remaining Time First algorithm.
Advantages
It gives superior turnaround time performance to shortest process
next because a short job is given immediate preference to a
running longer job.
Throughput is high.
Disadvantages
Elapsed time (i.e., execution-completed-time) must be recorded, it
results an additional overhead on the processor.
Starvation may be possible for the longer processes.
Priority Scheduling
The SJF is a special case of general priority scheduling algorithm.
A Priority (an integer) is associated with each process. The CPU is
allocated to the process with the highest priority. Generally smallest
integer is considered as the highest priority. Equal priority processes are
scheduled in First Come First serve order. It can be preemptive or Non-
preemptive.
Non-preemptive Priority Scheduling
In this type of scheduling the CPU is allocated to the process with the
highest priority after completing the present running process.
Advantage
Good response for the highest priority processes.
Disadvantage
Starvation may be possible for the lowest priority processes.
Preemptive Priority Scheduling
In this type of scheduling the CPU is allocated to the process with the
highest priority immediately upon the arrival of the highest priority
process. If the equal priority process is in running state, after the
completion of the present running process. CPU is allocated to this even
though one more equal priority process is to arrive.
Advantage
Very good response for the highest priority process over non-
preemptive version of it.
Disadvantage
Starvation may be possible for the lowest priority processes.
Round-Robin Scheduling
This type of scheduling algorithm is basically designed for time sharing
system. It is similar to FCFS with preemption added. Round-Robin
Scheduling is also called as time-slicing scheduling and it is a preemptive
version based on a clock. That is a clock interrupt is generated at
periodic intervals usually 10-100ms. When the interrupt occurs, the
currently running process is placed in the ready queue and the next
ready job is selected on a First-come, First-serve basis. This process is
known as time-slicing, because each process is given a slice of time
before being preempted.
One of the following happens:
The process may have a CPU burst of less than the time quantum
or
CPU burst of currently executing process be longer than the time
quantum. In this case a context switch occurs the process is put at
the tail of the ready queue.
In round-robin scheduling, the principle design issue is the length of the
time quantum or time-slice to be used. If the quantum is very short,
then short processes will move quickly.
Advantages
Round-robin is effective in a general-purpose, times-sharing
system or transaction-processing system.
Fair treatment for all the processes.
Overhead on processor is low.
Overhead on processor is low.
Good response time for short processes.
Disadvantages
Care must be taken in choosing quantum value.
Processing overhead is there in handling clock interrupt.
Throughput is low if time quantum is too small.
Performance of RR Scheduling
If there are n processes in the ready queue and time quantum is
q, then each process gets 1/n of the CPU time in chunks of at
most q time units at once.
No process waits for more than (n-1)*q time units until the next
time quantum.
The performance of RR depends on time slice. If it is large then it
is the same as FCFS. If q is small then overhead is too high.
Multilevel Feedback Queue Scheduling
In this algorithm dynamic priority mechanism is used i.e., when a
process first enters in to the system, it is placed in RQ0 when it returns
to the Ready State after its first execution, it is placed in RQ1. After each
subsequent execution, it is moved to the next lower priority queue. This
is depicted in the figure below:
A shorter process will complete quickly, without migrating to the lower
levels of the hierarchy. The scheduler first executes all processes
present in the queue RQ0. Processes present in queue RQ1 will execute
only when no processes is present in RQ0. Similarly RQ2, RQ3 and so on
will execute.
For a quantum of one unit, the behavior is somewhat similar to round
robin scheduling.
Disadvantage
It is possible for starvation, if new jobs are continuously entering.
To compensate this vary the preemption times. That is RQ0 is allowed to
execute for 1 time unit and then process is preempted to RQ1. A
process scheduled for RQ1 is allowed to execute 2 time units and so on.
In general a process scheduled from RQ1 is allowed to execute 2i time
units before preemption from that queue. The next figure is showing the
multilevel feedback queue scheduling with time quantum = 2n.
Longer processes may still suffer with starvation. For overcoming this
problem promote a process to a higher-priority queue after it spends a
certain amount of time in waiting for execution.
Multilevel Queue Scheduling
The ready queue is partitioned into number of ready queues. Each ready
queue should have certain priority and can have its own scheduling
algorithm. This is created for situations in which processes are easily
classified into groups:
Foreground(Interactive) processes
Background(Batch) processes
These two types of process have different response time requirements
and thus different scheduling requirements. The processes are
permanently assigned to one queue based on some property of the
process (e.g. memory size, priority type). Each queue has its own
scheduling algorithm. For e.g. the foreground process might be
scheduled by an RR algorithm while the background queue is scheduled
by a FCFS algorithm. There must be scheduling between the queues
commonly implemented as fixed priority preemptive scheduling i.e.
foreground process have absolute priority over the background process.
It could also use a time slice algorithm where each queue gets a certain
amount of CPU time which it can schedule among its processes.
Eg. 80% to foreground queue for RR and 20% to background queue for
FCFS.