1.任务队列
vxworks维护4个队列:
tick队列
ready队列
active队列
pend队列
一,tick队列
当执行taskDelay时,任务会被延长一段时间执行,此时,任务就会被加入到tick队列中,任务处于Delay状态,无权竞争CPU;
二,ready队列
有资格竞争CPU的队列,按照任务的优先级进行排队,队列头部是优先级最高的任务;
三,active队列
所有任务无论状态如何都会在这个队列中,这个队列维护着系统当前所有的任务,我们通过“i”可以看到所有的任务就是通过遍历active队列来实现的;
四,pend队列
当多个任务竞争一个资源时,如果资源不可得,任务就会被设置为pend状态,进入pend队列中;
函数taskSpawn创建任务,新建任务会放到active队列,此时还不能竞争CPU,taskSpawn最后一步就是把任务放到ready队列中,就可以竞争CPU了。
2.任务优先级
Vxworks共有256个优先级(0~255),0表示优先级最高,255表示优先级最低。taskSpawn创建任务时指定任务优先级,taskPrioritySet可以再创建完成后修改任务优先级。
Vxwork