OPERATING SYSTEM PERFORMANCE:
The scheduling policy does not tell us all that we would like to know
about the performance of a real system running processes. Our analysis of
scheduling policies makes some simplifying assumptions:
1. We have assumed that context switches require zero
time. Although it is often reasonable to neglect context switch time when it is
much smaller than the process execution time, context switching can add
significant delay in some cases.
2. We have assumed that we know the execution time of
the processes. In fact, we learned in Section 5.6 that program time is not a
single number, but can be bounded by worst-case and best-case execution times.
3. We probably determined worst-case or best-case
times for the processes in isolation. But, in fact, they interact with each
other in the cache. Cache conflicts among processes can drastically degrade
process execution time.
context switch assumption used in the analysis of RMS is not correct—we must
execute instructions to save and restore context, and we must execute
additional instructions to implement the scheduling policy. On the other hand,
context switching can be implemented efficiently—context switching need not
effects of nonzero context switching time must be carefully analyzed in the
context of a particular implementation to be sure that the predictions of an
ideal scheduling policy are sufficiently accurate.
real-time operating systems, a context switch requires only a few hundred
instructions, with only slightly more overhead for a simple real-time scheduler
like RMS. When the overhead time is very small relative to the task periods,
then the zero-time context switch assumption is often a reasonable
approximation. Problems are most likely to manifest themselves in the
highest-rate processes, which are often the most critical in any case.
checking that all deadlines will be met with nonzero context switching time
requires checking all possible schedules for processes and including the
context switch time at each preemption or process initiation. However, assuming
an average number of context switches per process and computing CPU utilization
can provide at least an estimate of how close the system is to CPU capacity.