> 文章列表 > 操作系统基础知识介绍之PFP调度协议(包含时间分区PFP)

操作系统基础知识介绍之PFP调度协议(包含时间分区PFP)

操作系统基础知识介绍之PFP调度协议(包含时间分区PFP)

一、算法思想

PFP算法是一种在RTOS中实现抢占式固定优先级调度的方法。它的基本思想是:

对于每个任务,根据其最坏情况执行时间和截止时间,计算其优先级。
在运行时,根据任务的到达时间和优先级,将任务放入一个就绪队列。
每当有一个任务完成或者有一个新的任务到达时,从就绪队列中选择优先级最高的任务执行。
如果有一个新的任务到达,且其优先级高于当前执行的任务,则发生抢占,即暂停当前任务,执行新的任务。

二、优先级分配

对于每个任务,根据其最坏情况执行时间和截止时间,计算其优先级。一般来说,截止时间越短,最坏情况执行时间越长,优先级越高。
这种优先级分配策略称为截止时间单调优先级分配(DMPA),它是一种最优的策略,即如果有一组任务可以被另一种策略调度,那么它也可以被DMPA调度。
DMPA适用于周期性或偶发性的任务,且满足以下条件:所有任务的截止时间小于等于其最小到达间隔(或周期),所有任务的最坏情况执行时间小于等于其截止时间,所有任务是独立的,不会相互阻塞(例如访问互斥的共享资源),没有任务主动挂起自己,存在一个临界时刻,所有任务同时准备执行,调度开销(从一个任务切换到另一个任务)为零,所有任务的释放抖动(从任务到达到准备执行的时间)为零。
如果放松某些条件,例如允许截止时间大于周期,或者允许有释放抖动,那么可以使用其他的算法来找到最优的优先级分配,例如Audsley的最优优先级分配算法。

三、优缺点

PFP算法的优点是:
它可以保证任务的截止时间满足,即如果一组任务是可调度的,那么它一定可以被PFP算法调度。
它可以简单地计算任务的优先级,只需要知道任务的最坏情况执行时间和截止时间。
它可以适用于不同的实时系统模型,如周期性任务模型、偶发任务模型和混合任务模型。
它可以利用分布式计算框架,如Apache Hadoop和Spark,来提高数据挖掘的效率和可扩展性。

PFP算法的缺点是:
它需要事先知道任务的最坏情况执行时间和截止时间,这些参数可能不容易获得或者不准确。
它不能适应任务的动态变化,例如任务的到达时间、执行时间或者截止时间发生变化。
它可能导致优先级反转的问题,即低优先级的任务阻塞了高优先级的任务,从而降低了系统的性能。
它可能导致优先级继承的问题,即高优先级的任务继承了低优先级的任务的资源,从而增加了系统的开销。

四、时间分区 PFP 系统

时间分区 PFP 系统是指一种实时系统的调度方法,它将系统的运行时间划分为若干个固定长度的时间片,每个时间片对应一个不同的任务集合,这些任务集合可以有不同的关键性等级和优先级。在每个时间片内,系统采用固定优先级调度算法(PFP)来调度任务,即按照任务的优先级从高到低依次执行。在每个时间片之间,系统可以根据当前的状态和需求进行模式切换,从而切换到不同的任务集合。这种方法可以实现多重关键性等级任务的混合调度,同时保证系统的可预测性和灵活性。

时间分区 PFP 系统的主要优点是:
可以有效地隔离不同关键性等级任务之间的干扰,保证高关键性等级任务的时效性和可靠性。
可以利用固定优先级调度算法的成熟理论和工具来进行可调度性分析和优先级分配。
可以根据系统的实际需求动态地调整时间分区的长度和任务集合,提高系统的适应性和资源利用率。

时间分区 PFP 系统的主要缺点是
需要对系统的运行时间进行精确地划分和规划,增加了系统设计和维护的复杂度。
需要在每个时间片之间进行模式切换,可能引入额外的开销和延迟。
需要为每个时间片内的任务分配合适的优先级,避免出现优先级反转或者优先级倒置的问题。