任务切换又叫作任务上下文切换。当操作系统需要运行其他的任务时,操作系统首先会
保存和当前任务相关的寄存器的内容到当前任务的栈中,然后从将要被加载的任务的栈中取
出之前保存的全部寄存器的内容并加载到相关的寄存器中,从而继续运行被加载的任务,这
个过程叫作任务切换。
时间片 和 优先级 是任务的两个重要参数,分别描述了任务竞争处理器资源的能力和持有
处理器时间长短的能力。这两者同时是任务抢占的重要参数。因任务时间片运行完毕而引起
的任务调度可以理解为时间片调度,而因为操作系统中最高就绪优先级的变化而引起的调度
则为优先级调度。
基于优先级的时间片调度算法吸收了以上两种算法的优点,同时又解决了它们的不足。
这种算法为每个任务都安排了优先级和时间片。在不同优先级的任务间采用优先级调度算
法,在相同优先级的任务间使用时间片调度算法。任务调度策略首先考虑任务的优先级,优
先级高的任务必定会抢占低优先级的任务。相同优先级的任务则按照时间片长度比例共享处
理器时间。这样既保证了能够尽快响应紧急任务,又保证相同优先级的任务都有机会轮流占
有处理器。
有两种经典的防止优先级反转的算法:
1.优先级继承策略(Priority inheritance):当一个任务占有了资源并且随后阻塞了
其他申请该资源的任务时,该任务将临时改变它的优先级为所有申请该资源的任务中
的最高优先级,并以这个临时优先级在临界区执行。当任务释放资源后,则恢复它原有的优
先级。从行为上看,占有资源的任务的优先级将是“水涨船高”式的多次改变,因为
它的优先级最高,所以它不会被曾经比它优先级高的那些任务抢占。操作系统从优先
级角度安排它尽快执行,尽快释放资源,但是这样做操作系统却牺牲了中等优先级任
务的调度机会。
2.优先级天花板策略(Priority ceilings):将申请(占有)资源的任务的优先级提升到
可能访问该资源的所有任务的最高优先级(这个最高优先级称为该资源的优先级天
花板)
形象地说,优先级继承策略是“【水涨船高】”,而优先级天花板策略则是“【一次到位】”。
保存和当前任务相关的寄存器的内容到当前任务的栈中,然后从将要被加载的任务的栈中取
出之前保存的全部寄存器的内容并加载到相关的寄存器中,从而继续运行被加载的任务,这
个过程叫作任务切换。
时间片 和 优先级 是任务的两个重要参数,分别描述了任务竞争处理器资源的能力和持有
处理器时间长短的能力。这两者同时是任务抢占的重要参数。因任务时间片运行完毕而引起
的任务调度可以理解为时间片调度,而因为操作系统中最高就绪优先级的变化而引起的调度
则为优先级调度。
基于优先级的时间片调度算法吸收了以上两种算法的优点,同时又解决了它们的不足。
这种算法为每个任务都安排了优先级和时间片。在不同优先级的任务间采用优先级调度算
法,在相同优先级的任务间使用时间片调度算法。任务调度策略首先考虑任务的优先级,优
先级高的任务必定会抢占低优先级的任务。相同优先级的任务则按照时间片长度比例共享处
理器时间。这样既保证了能够尽快响应紧急任务,又保证相同优先级的任务都有机会轮流占
有处理器。
有两种经典的防止优先级反转的算法:
1.优先级继承策略(Priority inheritance):当一个任务占有了资源并且随后阻塞了
其他申请该资源的任务时,该任务将临时改变它的优先级为所有申请该资源的任务中
的最高优先级,并以这个临时优先级在临界区执行。当任务释放资源后,则恢复它原有的优
先级。从行为上看,占有资源的任务的优先级将是“水涨船高”式的多次改变,因为
它的优先级最高,所以它不会被曾经比它优先级高的那些任务抢占。操作系统从优先
级角度安排它尽快执行,尽快释放资源,但是这样做操作系统却牺牲了中等优先级任
务的调度机会。
2.优先级天花板策略(Priority ceilings):将申请(占有)资源的任务的优先级提升到
可能访问该资源的所有任务的最高优先级(这个最高优先级称为该资源的优先级天
花板)
形象地说,优先级继承策略是“【水涨船高】”,而优先级天花板策略则是“【一次到位】”。