如题,请教一下,这两者的区别,我看代码里面都是比较当前运行任务优先级和任务就绪表里最高优先级,那怎么从高优先级的任务切换到低优先级的任务呢?
回复 楼主xiaoqzq 的帖子
关于这个问题我只能把自己的想法解释一下
1.高优先级的人人牢牢的占据CUP,低优先级的任务当然不能运行。但是这不是OS的问题,是用户开发设计的问题,搞优先级的任务做完了份内的事,应该做的是吧自己阻塞起来,主动放弃CPU,程序是你自己编写的,是自己不懂OS才让它优先级高还死占着CPU的。阻塞的方法很多种,有延时、挂起、信号量等等,这些都是RTOS的核心内容。
2.在中断中调度任务运行我认为是当中断发生的时候,例如串口接收到了有效的数据,转而让用户程序去处理,用UCOS可以成功的完成这个动作,只要简单的POST信号量,如果裸奔的话就不可避免的ISR中加长代码或在用于程序中查询变量。
淘宝小店:http://brightpoint.taobao.com
是这样 ucos的任务设计有一条准则 就是无论优先级多高的任务,都要在合适的地方加延时,以使cpu可以去执行别的任务。再者就是 当高优先级任务等待事件时,会挂起,让出cpu。 所以我们自己创建任务最后一定要加延时