OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6457|回复: 1

Ucos操作系统任务优先级分配原则

[复制链接]

25

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2017-8-3
在线时间
38 小时
发表于 2018-10-22 11:12:51 | 显示全部楼层 |阅读模式
       ucos是一个可剥夺性内核的操作系统。所以每一个任务都必须有一个优先级。ucos操作系统中任务的优先级使用一个8位整型数据来表示的。比如我们的0,1,2,3这些数,UCOS任务优先级的取值范围为 0 - OS_LOWEST_PRIO之间,数字越小,优先级越大。
静态优先级
  这个优先级被分配以后,它在任务的运行过程中,或者说在这个系统的运行过程中,它的优先级就不能变了,比如说,我们把这个优先级分配为2,那这个任务在运行过程中就一直为2,没办法变成其他的优先级。
动态优先级
  在任务的运行过程中,它本身是2这个优先级,但是在运行过程中,它还可以变成3,变成4,变成n这个数,那这个过程就被称为动态优先级,也就是说这个优先级在系统的运行过程中,会出现一个可以变化的过程,ucos是一个支持动态优先级的一个系统,也就是说,我们的ucos可以在系统运行的过程中,来更改一个任务的优先级,这点我们需要注意。
  对任务优先级分配首先需要做的有哪些事情呢?
  假设系统中有1,2,3,4,5,这5个任务,第一个任务对我们开关的输入信号进行扫描,第二个任务处理我们的按键,第三个任务处理我们的串口通信,第四个任务进行我们的系统逻辑处理,比如我们的开关量输出,第五个任务运行我们的LCD屏显示,假设我们对这5个任务分配优先级怎么分配呢?
  第一个我们必须把前3个任务的分配优先级要比后两个要高,为什么呢?
  因为从逻辑上来说,我们是首先进行开关量扫描,进行按键处理,进行串口通信,接下来,才进行逻辑处理,因为在逻辑处理当中,我们有可能用到开关量扫描,按键处理,和串口等等这些信息,所以说我们分配优先级的时候前3个任务的分配优先级要比后两个要高,对于这个输出和LCD屏显示,我们来看看这两个怎么处理,首先一般来说LCD屏显示是一个比较缓慢的过程,因为LCD屏显示是一个慢速的设备,那第四个逻辑处理和开关量输出运行速度比较快,那我们就把第四个的优先级要比第五个的高一点,那也就是说,对于一个任务,它运行的时间越短,分配的优先级越高,这是为什么呢?
  非常简单,因为我们刚刚说了ucos是一个可剥夺性内核,也就是说,如果有高任务在运行,那么这个低任务它是没办法运行的,那如果这个任务占用的时间比较少,我们就把它放到一个较高的任务上,那它就能很快的执行完毕,这样我们的CPU就可以较快的执行一些其他的任务了,这个是我们在使用优先级分配的一个问题,优先级的分配不是那么容易的,我们对一个比较好的操作系统要好好来考虑这个优先级的分配,如果优先级的分配的不好,就可能出现——优先级反转。
任务优先级分配的原则
  1、对于实时性要求高的任务应该分配较高的优先级。
  比如我们刚刚举例的串口运行任务,我们都知道当串口接收到一个数据以后,它需要在一定的时间内把这个数据处理完,并且返回到上位机,上位机是不可能一直等待这个数据的,所以说我们对这个串口的执行它就有一个时间的要求,也就是实时性要求较高,那对于这个任务,我们就要分配一个较高的优先级。
  2、对于运行速度较快的任务应该分配较高的优先级。
  3、任务在逻辑之前的要分配较高的优先级。
就是我们刚刚说的,我们首先是扫描开路,扫描按键,接下来我们才能进行逻辑的处理。所以说我们的扫描开路,扫描按键要比逻辑处理的优先级要高,否则的话,我们还没有进行开关量扫描,已经开始处理逻辑了,这个时候,就发生了一个错误。

原文链接:http://www.maiziedu.com/wiki/iot/ucospriority/

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

138

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2019-4-2
在线时间
3 小时
发表于 2019-4-18 09:05:19 | 显示全部楼层
感谢分享啊! 真是不错啊!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 23:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表