Solution (source code)

= Solution

In a cooperative scheduler, a permanently runnable background <operating-system process> that never yields can monopolize the <CPU>. The timer service, smoothing <operating-system process>, and display may then fail to run even when their messages are ready. Correct <message passing> alone does not supply <process scheduling>.

Use \b[timer-driven <scheduling preemption>], so an <interrupt> can force a <context switch> without cooperation. To give the measurement and display work bounded response despite background computation, use <priority scheduling> with the background <operating-system process> below the responsive services, or an explicit reservation policy. <Round-robin scheduling> gives CPU access among a fixed finite runnable set, but meeting a particular deadline additionally requires bounded service execution and sufficient CPU capacity.