RTOS Multitasking
RTOS Multitasking
✔ Allocates CPU time to the processes based on the order in which they enters the
‘Ready’ queue
✔ The first entered process is serviced first
✔ It is same as any real world application where queue systems are used; E.g.
Ticketing
Drawbacks:
✔ Favors monopoly of process. A process, which does not contain any I/O
operation, continues its execution until it finishes its task
✔ In general, FCFS favors CPU bound processes and I/O bound processes may have to
wait until the completion of CPU bound process, if the currently executing process is a
CPU bound process. This leads to poor device utilization.
✔ The average waiting time is not minimal for FCFS scheduling algorithm
Designing with RTOS
Non-preemptive scheduling – First Come First Served (FCFS)/
First In First Out (FIFO) Scheduling
• Three processes with process IDs P1, P2, P3 with estimated completion time
10, 5, 7 milliseconds respectively enters the ready queue together in the order
P1, P2, P3. Calculate the waiting time and Turn Around Time (TAT) for each
process and the Average waiting time and Turn Around Time (Assuming there
is no I/O waiting for the processes).
The sequence of execution of the processes by the CPU is represented as
Assuming the CPU is readily available at the time of arrival of P1, P1 starts
executing without any waiting in the ‘Ready’ queue. Hence the waiting time for
P1 is zero.
Designing with RTOS
Non-preemptive scheduling – First Come First Served (FCFS)/
First In First Out (FIFO) Scheduling
Waiting Time for P1 = 0 ms (P1 starts executing first)
Waiting Time for P2 = 10 ms (P2 starts executing after completing P1)
Waiting Time for P3 = 15 ms (P3 starts executing after completing P1 and P2)
Average waiting time = (Waiting time for all processes) / No. of Processes
= (Waiting time for (P1+P2+P3)) / 3
= (0+10+15)/3 = 25/3 = 8.33 milliseconds
Turn Around Time (TAT) for P1 = 10 ms (Time spent in Ready Queue + Execution Time)
Turn Around Time (TAT) for P2 = 15 ms (-Do-)
Turn Around Time (TAT) for P3 = 22 ms (-Do-)
Average Turn Around Time= (Turn Around Time for all processes) / No. of Processes
= (Turn Around Time for (P1+P2+P3)) / 3
= (10+15+22)/3 = 47/3
= 15.66 milliseconds
Average Turn Around Time (TAT) is the sum of average waiting time and average execution time.
The average Execution time = (Execution time for all processes)/No. of processes
= (Execution time for (P1+P2+P3))/3
= (10+5+7)/3 = 22/3 = 7.33 milliseconds
Average Turn Around Time = Average Waiting time + Average execution time
= 8.33 + 7.33
= 15.66 milliseconds
Designing with RTOS
Non-preemptive scheduling – Last Come First Served (LCFS)/
Last In First Out (LIFO) Scheduling
✔ Allocates CPU time to the processes based on the order in which they are
entered in the ‘Ready’ queue
✔ The last entered process is serviced first
✔ LCFS scheduling is also known as Last In First Out (LIFO) where the process,
which is put last into the ‘Ready’ queue, is serviced first
Drawbacks:
✔ Favors monopoly of process. A process, which does not contain any I/O
operation, continues its execution until it finishes its task
✔ In general, LCFS favors CPU bound processes and I/O bound processes may
have to wait until the completion of CPU bound process, if the currently
executing process is a CPU bound process. This leads to poor device utilization.
✔ The average waiting time is not minimal for LCFS scheduling algorithm
Designing with RTOS
Non-preemptive scheduling – Last Come First Served (LCFS)/
Last In First Out (LIFO) Scheduling
• Three processes with process IDs P1, P2, P3 with estimated completion time 10, 5, 7 milliseconds
respectively enters the ready queue together in the order P1, P2, P3 (Assume only P1 is present in
the ‘Ready’ queue when the scheduler picks up it and P2, P3 entered ‘Ready’ queue after that). Now
a new process P4 with estimated completion time 6ms enters the ‘Ready’ queue after 5ms of
scheduling P1. Calculate the waiting time and Turn Around Time (TAT) for each process and the
Average waiting time and Turn Around Time (Assuming there is no I/O waiting for the
processes).Assume all the processes contain only CPU operation and no I/O operations are involved.
Initially there is only P1 available in the Ready queue and the scheduling sequence will be P1, P3, P2.
P4 enters the queue during the execution of P1 and becomes the last process entered the ‘Ready’
queue. Now the order of execution changes to P1, P4, P3, and P2 as given below.
Designing with RTOS
Non-preemptive scheduling – Last Come First Served (LCFS)/
Last In First Out (LIFO) Scheduling
The waiting time for all the processes are given as
Turn Around Time (TAT) for P1 = 10 ms (Time spent in Ready Queue + Execution Time)
Turn Around Time (TAT) for P4 = 11 ms (Time spent in Ready Queue + Execution Time = (Execution Start Time – Arrival
Time) + Estimated Execution Time = (10-5) + 6 = 5 + 6)
Turn Around Time (TAT) for P3 = 23 ms (Time spent in Ready Queue + Execution Time)
Turn Around Time (TAT) for P2 = 28 ms (Time spent in Ready Queue + Execution Time)
Average Turn Around Time = (Turn Around Time for all processes) / No. of Processes
= (Turn Around Time for (P1+P4+P3+P2)) / 4
= (10+11+23+28)/4 = 72/4
= 18 milliseconds
Designing with RTOS
Non-preemptive scheduling – Shortest Job First (SJF) Scheduling
✔ Allocates CPU time to the processes based on the execution completion time
for tasks
✔ The average waiting time for a given set of processes is minimal in SJF
scheduling
✔ Optimal compared to other non-preemptive scheduling like FCFS
Drawbacks:
✔ A process whose estimated execution completion time is high may not get a
chance to execute if more and more processes with least estimated execution
time enters the ‘Ready’ queue before the process with longest estimated
execution time starts its execution
✔ May lead to the ‘Starvation’ of processes with high estimated completion time
✔ Difficult to know in advance the next shortest process in the ‘Ready’ queue for
scheduling since new processes with different estimated execution time keep
entering the ‘Ready’ queue at any point of time.
Designing with RTOS
Non-preemptive scheduling – Shortest Job First (SJF) Scheduling
• Three processes with process IDs P1, P2, P3 with estimated completion time 10, 5, 7 milliseconds
respectively enters the ready queue together in the order P1, P2, P3 (Assume only P1 is present in
the ‘Ready’ queue when the scheduler picks up it and P2, P3 entered ‘Ready’ queue after that). Now
a new process P4 with estimated completion time 6ms enters the ‘Ready’ queue after 5ms of
scheduling P1. Calculate the waiting time and Turn Around Time (TAT) for each process and the
Average waiting time and Turn Around Time (Assuming there is no I/O waiting for the
processes).Assume all the processes contain only CPU operation and no I/O operations are involved.
Initially there is only P1 available in the Ready queue and the scheduling sequence will be P1, P3, P2.
P4 enters the queue during the execution of P1 and becomes the last process entered the ‘Ready’
queue. Now the order of execution changes to P1, P4, P3, and P2 as given below.
Designing with RTOS
Non-preemptive scheduling – Shortest Job First (SJF) Scheduling
Turn Around Time (TAT) for P1 = 10 ms (Time spent in Ready Queue + Execution Time)
Turn Around Time (TAT) for P4 = 11 ms (Time spent in Ready Queue + Execution Time = (Execution Start Time – Arrival
Time) + Estimated Execution Time = (10-5) + 6 = 5 + 6)
Turn Around Time (TAT) for P3 = 23 ms (Time spent in Ready Queue + Execution Time)
Turn Around Time (TAT) for P2 = 28 ms (Time spent in Ready Queue + Execution Time)
Average Turn Around Time = (Turn Around Time for all processes) / No. of Processes
= (Turn Around Time for (P1+P4+P3+P2)) / 4
= (10+11+23+28)/4 = 72/4
= 18 milliseconds
Designing with RTOS
Non-preemptive scheduling – Priority based Scheduling
• Three processes with process IDs P1, P2, P3 with estimated completion time 10, 5, 7 milliseconds
and priorities 0, 3, 2 (0- highest priority, 3 lowest priority) respectively enters the ready queue
together. Calculate the waiting time and Turn Around Time (TAT) for each process and the
Average waiting time and Turn Around Time (Assuming there is no I/O waiting for the processes)
in priority based scheduling algorithm.
• The scheduler sorts the ‘Ready’ queue based on the priority and schedules the process with the
highest priority (P1 with priority number 0) first and the next high priority process (P3 with
priority number 2) as second and so on. The order in which the processes are scheduled for
execution is represented as
Designing with RTOS
Non-preemptive scheduling – Priority based Scheduling
The waiting time for all the processes are given as
Average waiting time = (Waiting time for all processes) / No. of Processes
= (Waiting time for (P1+P3+P2)) / 3
= (0+10+17)/3 = 27/3
= 9 milliseconds
Turn Around Time (TAT) for P1 = 10 ms (Time spent in Ready Queue + Execution Time)
Turn Around Time (TAT) for P3 = 17 ms (-Do-)
Turn Around Time (TAT) for P2 = 22 ms (-Do-)
Average Turn Around Time = (Turn Around Time for all processes) / No. of Processes
= (Turn Around Time for (P1+P3+P2)) / 3
= (10+17+22)/3 = 49/3
= 16.33 milliseconds
Designing with RTOS
Non-preemptive scheduling – Priority based Scheduling
Drawbacks:
✔ Similar to SJF scheduling algorithm, non-preemptive priority based algorithm
also possess the drawback of ‘Starvation’ where a process whose priority is low
may not get a chance to execute if more and more processes with higher
priorities enter the ‘Ready’ queue before the process with lower priority starts
its execution.
✔ ‘Starvation’ can be effectively tackled in priority based non-preemptive
scheduling by dynamically raising the priority of the low priority task/process
which is under starvation (waiting in the ready queue for a longer time for
getting the CPU time)
✔ The technique of gradually raising the priority of processes which are waiting in
the ‘Ready’ queue as time progresses, for preventing ‘Starvation’, is known as
‘Aging’.
Designing with RTOS
Preemptive scheduling
• Three processes with process IDs P1, P2, P3 with estimated completion time 10, 5, 7 milliseconds
respectively enters the ready queue together. A new process P4 with estimated completion time
2ms enters the ‘Ready’ queue after 2ms. Assume all the processes contain only CPU operation and
no I/O operations are involved.
• At the beginning, there are only three processes (P1, P2 and P3) available in the ‘Ready’ queue
and the SRT scheduler picks up the process with the Shortest remaining time for execution
completion (In this example P2 with remaining time 5ms) for scheduling. Now process P4 with
estimated execution completion time 2ms enters the ‘Ready’ queue after 2ms of start of execution
of P2. The processes are re-scheduled for execution in the following order
Designing with RTOS
Non-preemptive scheduling – Preemptive SJF Scheduling
The waiting time for all the processes are given as
Waiting Time for P2 = 0 ms + (4 -2) ms = 2ms (P2 starts executing first and is interrupted by P4 and has to wait till the completion of
P4 to get the next CPU slot)
Waiting Time for P4 = 0 ms (P4 starts executing by preempting P2 since the execution time for completion of P4 (2ms) is less than
that of the Remaining time for execution completion of P2 (Here it is 3ms))
Waiting Time for P3 = 7 ms (P3 starts executing after completing P4 and P2)
Waiting Time for P1 = 14 ms (P1 starts executing after completing P4, P2 and P3)
Average waiting time = (Waiting time for all the processes) / No. of Processes
= (Waiting time for (P4+P2+P3+P1)) / 4
= (0 + 2 + 7 + 14)/4 = 23/4
= 5.75 milliseconds
Turn Around Time (TAT) for P2 = 7 ms (Time spent in Ready Queue + Execution Time)
Turn Around Time (TAT) for P4 = 2 ms
(Time spent in Ready Queue + Execution Time = (Execution Start Time – Arrival Time) + Estimated Execution Time = (2-2) + 2)
Turn Around Time (TAT) for P3 = 14 ms (Time spent in Ready Queue + Execution Time)
Turn Around Time (TAT) for P1 = 24 ms (Time spent in Ready Queue + Execution Time)
Average Turn Around Time = (Turn Around Time for all the processes) / No. of Processes
= (Turn Around Time for (P2+P4+P3+P1)) / 4
= (7+2+14+24)/4 = 47/4
= 11.75 milliseconds
Designing with RTOS
Preemptive scheduling – Round Robin (RR) Scheduling
• Three processes with process IDs P1, P2, P3 with estimated completion time 6, 4, 2 milliseconds
respectively, enters the ready queue together in the order P1, P2, P3. Calculate the waiting time and
Turn Around Time (TAT) for each process and the Average waiting time and Turn Around Time
(Assuming there is no I/O waiting for the processes) in RR algorithm with Time slice= 2ms.
• The scheduler sorts the ‘Ready’ queue based on the FCFS policy and picks up the first process P1
from the ‘Ready’ queue and executes it for the time slice 2ms. When the time slice is expired, P1 is
preempted and P2 is scheduled for execution. The Time slice expires after 2ms of execution of P2.
Now P2 is preempted and P3 is picked up for execution. P3 completes its execution within the time
slice and the scheduler picks P1 again for execution for the next time slice. This procedure is
repeated till all the processes are serviced. The order in which the processes are scheduled for
execution is represented as
Designing with RTOS
Non-preemptive scheduling – Round Robin Scheduling
The waiting time for all the processes are given as
Waiting Time for P1 = 0 + (6-2) + (10-8) = 0+4+2= 6ms (P1 starts executing first and waits for two time slices to get
execution back and again 1 time slice for getting CPU time)
Waiting Time for P2 = (2-0) + (8-4) = 2+4 = 6ms (P2 starts executing after P1 executes for 1 time slice and waits for two
time slices to get the CPU time)
Waiting Time for P3 = (4 -0) = 4ms (P3 starts executing after completing the first time slices for P1 and P2 and completes its
execution in a single time slice.)
Average waiting time = (Waiting time for all the processes) / No. of Processes
= (Waiting time for (P1+P2+P3)) / 3
= (6+6+4)/3 = 16/3
= 5.33 milliseconds
Turn Around Time (TAT) for P1 = 12 ms (Time spent in Ready Queue + Execution Time)
Turn Around Time (TAT) for P2 = 10 ms (-Do-)
Turn Around Time (TAT) for P3 = 6 ms (-Do-)
Average Turn Around Time= (Turn Around Time for all the processes) / No. of Processes
= (Turn Around Time for (P1+P2+P3)) / 3
= (12+10+6)/3 = 28/3
= 9.33 milliseconds
Designing with RTOS
Preemptive scheduling – Priority based Scheduling
✔ Same as that of the non-preemptive priority based scheduling except for the
switching of execution between tasks
✔ In preemptive priority based scheduling, any high priority process entering the
‘Ready’ queue is immediately scheduled for execution whereas in the
non-preemptive scheduling any high priority process entering the ‘Ready’
queue is scheduled only after the currently executing process completes its
execution or only when it voluntarily releases the CPU
✔ The priority of a task/process in preemptive priority based scheduling is
indicated in the same way as that of the mechanisms adopted for
non-preemptive multitasking
Designing with RTOS
Preemptive scheduling – Priority based Scheduling
• Three processes with process IDs P1, P2, P3 with estimated completion time 10, 5, 7 milliseconds
and priorities 1, 3, 2 (0- highest priority, 3 lowest priority) respectively enters the ready queue
together. A new process P4 with estimated completion time 6ms and priority 0 enters the ‘Ready’
queue after 5ms of start of execution of P1. Assume all the processes contain only CPU operation
and no I/O operations are involved.
• At the beginning, there are only three processes (P1, P2 and P3) available in the ‘Ready’ queue
and the scheduler picks up the process with the highest priority (In this example P1 with priority
1) for scheduling. Now process P4 with estimated execution completion time 6ms and priority 0
enters the ‘Ready’ queue after 5ms of start of execution of P1. The processes are re-scheduled for
execution in the following order
Designing with RTOS
Preemptive scheduling – Priority based Scheduling
The waiting time for all the processes are given as
Waiting Time for P1 = 0 + (11-5) = 0+6 =6 ms (P1 starts executing first and gets preempted by P4 after 5ms and
again gets the CPU time after completion of P4)
Waiting Time for P4 = 0 ms (P4 starts executing immediately on entering the ‘Ready’ queue, by preempting P1)
Waiting Time for P3 = 16 ms (P3 starts executing after completing P1 and P4)
Waiting Time for P2 = 23 ms (P2 starts executing after completing P1, P4 and P3)
Average waiting time = (Waiting time for all the processes) / No. of Processes
= (Waiting time for (P1+P4+P3+P2)) / 4
= (6 + 0 + 16 + 23)/4 = 45/4
= 11.25 milliseconds
Turn Around Time (TAT) for P1 = 16 ms (Time spent in Ready Queue + Execution Time)
Turn Around Time (TAT) for P4 = 6ms (Time spent in Ready Queue + Execution Time = (Execution Start Time –
Arrival Time) + Estimated Execution Time = (5-5) + 6 = 0 + 6)
Turn Around Time (TAT) for P3 = 23 ms (Time spent in Ready Queue + Execution Time)
Turn Around Time (TAT) for P2 = 28 ms (Time spent in Ready Queue + Execution Time)
Average Turn Around Time = (Turn Around Time for all the processes) / No. of Processes
= (Turn Around Time for (P2+P4+P3+P1)) / 4
= (16+6+23+28)/4 = 73/4
= 18.25 milliseconds
Designing with RTOS
Preemptive scheduling – Priority based Scheduling
Summary:
✔ Priority based preemptive scheduling gives real time attention to high priority
tasks
✔ Priority based preemptive scheduling is adopted in systems which demands
‘Real Time’ behavior
✔ Most of the RTOSs implements the preemptive priority based scheduling
algorithm for process/task scheduling
✔ Preemptive priority based scheduling also possess the same drawback of
non-preemptive priority based scheduling – ‘Starvation’
✔ This can be eliminated by the ‘Aging’ technique (Temporarily boosting the
priority of a task which is ‘starving’ for a long time
Multitasking and Task Scheduling
Learning Summary
✔ The ability of a system to execute multiple processes/tasks simultaneously is known as multiprocessing,
whereas the ability of an operating system to hold multiple processes in memory and switch the
processor (CPU) from executing one process to another process is known as multitasking.
✔ Multitasking involves Context Switching, Context Saving and Context Retrieval
✔ Co-operative multitasking, Preemptive multitasking and Non-preemptive multitasking are the three
important types of multitasking which exist in the Operating system context
✔ CPU utilization, Throughput, Turn Around Time (TAT), Waiting Time and Response Time are the
important criterions that need to be considered for the selection of a scheduling algorithm for task
scheduling
✔ A good scheduling algorithm provides high CPU utilization, minimum Turn Around Time (TAT),
maximum throughput and least response time.
✔ Job queue, Ready queue and Device queue are the important queues maintained by an operating system
in association with CPU scheduling
✔ First Come First Served (FCFS)/First in First Out (FIFO), Last Come First Served (LCFS)/Last in First
Out (LIFO), Shortest Job First (SJF), priority based scheduling etc are examples for Non-preemptive
scheduling,
✔ Preemptive SJF Scheduling/ Shortest Remaining Time (SRT), Round Robin (RR) scheduling and
priority based scheduling are examples for preemptive scheduling