为任务分配优先级:
当具有不同相对期限的任务数量大于操作系统支持的优先级时,则某些任务共享相同的优先级值。但是,为任务分配优先级的确切方法会充分影响处理器的利用率。
如果随机选择任务以共享相同的优先级,则处理器的利用率将降低。需要系统地选择任务以共享优先级,以便可以实现的可调度利用率更高。
当任务共享相同的优先级时,可以使用几种优先级分配方法。一些最常用的方法是:
1.统一优先级分配:
在这种分配方法中,所有任务均在可用优先级之间进行统一分配。如果优先级的数量完全划分了任务数,则可以轻松完成优先级之间的统一划分任务。
例如,如果要计划20个任务,并且操作系统支持4个优先级,则为每个优先级分配5个任务。
如果不可能进行统一划分,即有N个任务和p个优先级并且N%p> 0,则将floor(N / p)个任务分配给每个级别,并将其余任务分配给较低的优先级。
例如,如果要调度10个任务,并且操作系统支持4个优先级,则首先设置floor(10/4),即将2个任务分配给每个优先级,将其余2个任务分配给每个优先级以降低优先级水平。
2.算术优先级分配:
在这种分配方法中,算术级数由分配给每个优先级的任务数量形成。
例如,
如果N是任务数,p是优先级数,则
N = a + 2a + 3a + 4a + ... + pa
将“ a”任务分配给最高优先级,
“ 2a”任务被分配到下一个最高优先级,依此类推。
3.几何优先级分配:
在这种分配方法中,几何级数由分配给每个优先级的任务数量形成。
例如,
如果N是任务数,p是优先级数,则
N = a + a^2 + a^3 + a^4 + ... + a^p
将“ a”任务分配给最高优先级,
将“ a ^ 2”任务分配给下一个最高优先级,依此类推。
3.对数优先级分配:
在这种分配方法中,较短时间的任务会尽可能地分配不同的优先级,而较低优先级的任务(周期较长的任务)会组合在一起并分配给相同的优先级,因此不会影响较高优先级的任务。为此,任务按其周期的递增顺序进行安排。
如果p max是所有任务的最大周期,而p min是所有任务的周期中的最小周期,并且p是优先级数,则,
k = (pmax/pmin )^(1/p) is calculated,
并将周期最多为k的任务分配给最高优先级,将周期从k到k ^ 2的任务分配给下一个最高优先级,将周期从k ^ 2到k ^ 3的任务分配给下一个最高优先级,依此类推。