Type a branch, a subject or a topic — “round robin”, “paging”, “civil”.

First Come First Served (FCFS)

The simplest scheduler there is — and a live demonstration of the convoy effect.

Skip to the animation

First Come First Served runs processes in the exact order they arrived, and never interrupts one — the scheduling equivalent of a single queue at a counter.

How it works

The ready queue is a plain FIFO queue. A process arriving is pushed on the back; when the CPU frees up, the process at the front is dispatched and runs until it finishes or blocks. There is no priority, no estimate, no preemption — nothing to compute, which is why it is the easiest scheduler to implement and the baseline everything else is compared to.

The vocabulary

Arrival time
When the process shows up in the ready queue. The scheduler cannot pick something that has not arrived yet — that single rule decides most exam answers.
Burst time
How long this process needs the CPU for, uninterrupted, before it would block or finish. Also called CPU burst.
Ready queue
Every process that could run right now but does not have the CPU. Scheduling is entirely the question of who gets pulled out of here next.
Preemptive vs non-preemptive
A non-preemptive scheduler cannot take the CPU back — once dispatched, a process runs until it blocks or finishes. A preemptive one can interrupt it mid-burst.
Context switch
Saving one process's registers and loading another's. Pure overhead: real work stops while it happens, typically a few microseconds.
Starvation
A process that stays runnable but never gets picked, because something more attractive keeps arriving. The classic fix is ageing — slowly raising the priority of anything that has waited a long time.

The convoy effect

FCFS has one serious flaw, and it is worth being able to state precisely: average waiting time depends heavily on the order of arrival, and one long job at the front penalises everyone behind it.

Take three processes all arriving at t = 0 — P1 with a burst of 24, P2 with 3, P3 with 3. In the order P1, P2, P3:

ProcessBurstCompletionTurnaroundWaiting
P12424240
P23272724
P33303027

Average waiting time is (0 + 24 + 27) ÷ 3 = 17. Now run exactly the same processes in the order P2, P3, P1: waiting times become 0, 3 and 6, an average of 3. Same work, same machine, nearly six times better — purely because the short jobs went first.

That pile-up of short jobs behind one long one is the convoy effect. In a real system it is worse than the numbers suggest: the I/O devices sit idle while the CPU-bound job hogs the processor, then everything stampedes at once.

Where it is actually used

Never on its own in an interactive system — a single long job would freeze the machine. It survives as the tie-breaking rule *inside* other schedulers (processes of equal priority are usually served FCFS) and in batch settings where throughput matters and nobody is waiting at a screen.

The numbers you will be asked for

Turnaround time

completion − arrival

Total time the process spent in the system, from the moment it arrived to the moment it finished.

Waiting time

turnaround − burst

The part of that which was pure waiting. It is the only part a scheduler can actually change — the burst is fixed work.

Response time

first run − arrival

How long until the process gets the CPU for the first time. This is what an interactive user actually feels.

Throughput

processes ÷ total time

How much work the machine completes per unit of time.

Advantages and disadvantages

Advantages

  • Trivial to implement — one FIFO queue, no bookkeeping.
  • Perfectly fair in the arrival-order sense, and completely free of starvation: everyone eventually reaches the front.
  • No context switch overhead beyond the unavoidable minimum.

Disadvantages

  • Average waiting time is high and swings wildly with arrival order.
  • The convoy effect: one long job blocks every short job behind it.
  • Terrible response time, so it is unusable for interactive work.
  • Non-preemptive, so an urgent process cannot jump ahead no matter what.

Watch it work

loading visualisation…

Check yourself

question 1 / 4

One question at a time. Pick an answer to see why it is right or wrong, then move on — there is no score to keep and nothing is saved.

The animation runs P1 (burst 24), P2 (3) and P3 (3), all arriving at time 0. What is the average waiting time?
The convoy effect is:
Reversing the order to P2, P3, P1 changes the average waiting time from 17 to 3. What does that tell you?
Why is FCFS a poor fit for an interactive system?

0 / 4

4 still unanswered — the dots above jump straight to them.