单处理器系统调度算法详解
1. 调度基础与可调度性测试
在实际应用中,对于给定的任务集和约束条件,判断是否存在可行的调度方案至关重要。如果存在满足任务集和约束条件的调度,那么该任务集在这些约束下就是可调度的。对于许多应用来说,可调度性测试非常关键。精确测试在很多情况下是NP难问题,因此通常采用充分性和必要性测试。
- 充分性测试 :检查保证调度存在的充分条件,但可能会在有调度方案时误判为无法保证调度。
- 必要性测试 :基于检查必要条件,可用于表明不存在调度,但存在通过测试却无调度方案的情况。
2. 单处理器独立作业调度
2.1 最早截止日期优先(EDD)算法
当所有作业同时到达时,为了最小化延迟,可采用EDD算法。根据三元表示法,这种情况为(1| |Lmax)。Jackson在1955年发现了一个简单规则:给定一组有截止日期的n个独立作业,任何按截止日期非递减顺序执行作业的算法在最小化最大延迟方面都是最优的。
- 算法复杂度 :EDD算法需要按截止日期对所有作业进行排序,复杂度为O (n log(n))。
- 最优性证明 :假设存在一个非EDD调度S,其中存在作业Ja和Jb,Ja的截止日期早于Jb,但Jb先执行。通过交换Ja和Jb的执行顺序得到调度S′,可以证明S′的最大延迟小于S的最大延迟。因此,任何非EDD调度都可以通过有限次交换转换为EDD调度,且最大延迟只会减小,所以EDD算法是最优的。