操作系统的调度方法有很多种,这里主要介绍主流的调度算法,像EDF这种调度算法就不表述了。目前几乎所有的商业实时操作系统的调度理论都基于RMS理论.
以下是基于RMS的一些假设理论:
1 各个任务之间没有资源共享,没有忙等,没有mutex, 也没有semaphore.
2 每个任务的最后期限是周期性的。
3 基于优先级抢占的,即高优先级任务一旦就绪的话,会立马抢占低优先级任务。
4 任务优先级的分配原则是,周期越短的任务,优先级越高。
5 任务切换以及纯内核任务的消耗忽略不计对于这个理论模型。
以下的公式是,基于RMS 的一个基础理论:
U 代表了系统的cpu 使用率,C 是任务的运行具体时间,T 是周期性的任务最后期限,n是有多少个任务,等式右边是理论上的可实时调度率,可以看到可调度率只和任务的个数有关,任务越多,可实时调度率越少。
可以看到等式右边:
可以看到当任务接近无穷大的时候,可调度率是69%了。从这个公式可以近似任务系统中69%的任务是可以实时调度的,即能在最后的期限中完成运行。还有大概31%的任务是非实时的。这样的理论模型在实际应用中是完全可行的。
接下来看一个实际的例子:
假设有3个任务P1, P2, P3,运行的时间以及周期如上图。
根据公式可以算出系统的cpu 使用率。
理论上的可实时调度率为
可以看到0.725 <= 0.77976, 所以这3个任务都是可以实时调度的。
RMS理论主要是基于任务优先级的,对于指导分配任务的优先级有很大的实战价值,其核心是根据任务的最后期限(deadline)和周期的时间来分配任务优先级。周期越短的任务优先级越高,这在优先级分配上是一个有趣的开始。