嵌入式操作系统内核原理和开发(抢占式优先级调度)
上一篇 / 下一篇 2012-06-14 09:23:57 / 个人分类:杂谈
)gM%_7iDA(H0 现在,我们打算重新换一种方法。假设三个小孩的优先级分别是1、2、3,其中年龄越小优先级越高,3代表高优先级。接着,我们按照优先级给三个小孩安排时间片,分别是1、2、3。同时,这个时间片不光代表了当前可用的剩余时间,还代表了小孩此时的临时优先级。51Testing软件测试网$|L vq6m6E
51Testing软件测试网)KEri gApM6`(1)首先王先生给老三喂饭,时间片降低1,即临时优先级为2;51Testing软件测试网 X MacN8{~6Vy
#Eu-U2C y/E|lq(ddE K0 (2)接着王先生判断当前优先级最高的仍为老三,毕竟老二的优先级也没有超过老三,所以老三的时间片降1,临时优先级为1;
D A5H$^ ts0H h x;[}6\0 (3)王先生获知当前优先级最高的为老二,老二获得时间片;51Testing软件测试网 x5q;} c#}(?nK5P${
*H+CVs6G b0 (4)此时王先生发现三个孩子的临时优先级都一样,那么就会按照固定优先级的大小依次对老三、老二、老大进行喂饭。
lqik1g ]xm051Testing软件测试网GE;p `*^7k*w我们发现,这中间受益最大的就是老二。当然,我们可以做进一步推论,如果老王的孩子越多,那么优先级处于中间的孩子在时间片的分配上将更加均匀,响应也会更加及时,交互性也会变得很好。51Testing软件测试网'v)["[g8L?]$F2xJ }
iFa?pN0 根据以上的想法,我们重新改写了优先级调度算法,修改为抢占式优先级调度算法,51Testing软件测试网'K;HLbh"T8j{-`
PaF5{ c5F B0
w,EPd#kaG$~_l0$d&|7gJ^6@0int find_next_thread() -N:AT#`"M9Cs%f0 for(index = choice -1; index >= 0; index --) 1e,Z9v}%ke!~
\,y9D0 if(0 == value) |