第七章 多任务2 - 从协作式到抢占式
第五章中,内核建立了最基本的任务调度机制,任务可以在运行过程中选择主动挂起,由调度机制把执行权转移给其它任务。也就是说,调度是由任务自愿和主动发起的,所有任务通过这种友好协作,共同保证系统整体能够有效的运行下去,当时的调度机制称为协作式。但是现实情况并不总是那么理想,任务本身逻辑的设计可能存在这样那样的缺陷,任务运行中可能遭遇各种意外而行为异常,又或者任务自己认为自身很重要,需要占用更多的计算资源,但从系统整体来看,情况并非如此。从现实经验来看,由任务自己来决定调度的问题往往是不适合的,这样的调度缺乏全局视野,也缺乏最基本的运行保障,因此协作式调度的适应场景范围是非常窄的。
本章,我们将在第五章调度框架的基础上,为内核引入抢占式调度机制。抢占式是以系统为主进行调度,任务配合完成的调度方法,在适当的条件下,当前任务的执行权会被剥夺,由系统转给当前更应该获得运行机会的任务,由此保证整个系统的正常运行能力。