嵌入式OS入门笔记-以RTX为案例:九.关于优先度-翻转,继承和天花板
当调度涉及优先度的时候,会出现不少问题,本文关于优先度调度的主要问题和一些应付的策略。主要有以下几个概念:优先度翻转(priority inversion),优先度继承(priority inheritance)策略和优先度天花板(priority ceiling)策略。
1.优先度翻转(priority inversion)
大部分的RTOS都支持给不同进程分配优先度,一定程度上能够让调度和时间管理灵活性更大。但是当涉及到一些代码临界区(critical section)的时候,可能就会出现问题。优先度翻转就是这样一个典型的问题。为了解释这个概念,我们先来看一个实际例子:
首先我们考虑三个进程,T1,T2,T3。T3的优先度大于T2,T2的优先度大于T1,采用的调度算法是优先度高的可以打断优先度低的进程,临界区等待可以阻断高优先度的进程。 考虑在一个时间轴上,以下事件依次发生:
- T1被创造
- T1要求进入资源R临界区
- T2被创建
- T3被创建
- T3要求进入资源R临界区
光看文字可能会比较抽象,我们把每个事件都画在下图: