This course is run at the The University of Nottingham within the School of Computer Science & IT. The course is run by Graham Kendall (EMAIL : gxk@cs.nott.ac.uk)
An obvious scheduling algorithm is to execute the processes in the order they
arrive and to execute them to completion. In fact, this simply implements a
non-preemptive scheduling algorithm.
It is an easy algorithm to implement. When a process becomes ready it is added
to the tail of ready queue. This is achieved by adding the Process Control Block
(PCB) to the queue.
When the CPU becomes free the process at the head of the queue is removed,
moved to a running state and allowed to use the CPU until it is completed.
The problem with FCFS is that the average waiting time can be long. Consider
the following processes
Process | Burst Time |
P1 | 27 |
P2 | 9 |
P3 | 2 |
P1 will start immediately, with a waiting time of 0 milliseconds (ms). P2 will have to wait 27ms. P3 will have to wait 36ms before starting. This gives us an average waiting time of 21ms (i.e. (0 + 27 + 36) /3 ).
Now consider if the processes had arrived in the order P2, P3, P1. The average
waiting time would now be 6.6ms (i.e. (0 + 9 + 11) /3).
This is obviously a big saving and all due to the fact the way the jobs arrived.
It can be shown that FCFS is not generally minimal, with regard to average waiting
time and this figure varies depending on the process burst times.
The FCFS algorithm can also have other undesirable effects. A CPU bound job
may make the I/O bound (once they have finished the I/O) wait for the processor.
At this point the I/O devices are sitting idle.
When the CPU bound job finally does some I/O, the mainly I/O processes use
the CPU quickly and now the CPU sits idle waiting for the mainly CPU bound job
to complete its I/O.
Although this is a simplistic example, you can appreciate that FCFS can lead to I/O devices and the CPU both being idle for long periods.
Last Page | Back to Main Index | Next Page |
Last Updated : 13/01/2002