4.FreeRTOS_任务调度算法

可抢占调度与合作调度模式

在FreeRTOS中,可以配置相应的宏configUSE_PREEMPTION来设置调度的模式。

含义

可抢占调度模式:

高优先级的任务可以打断低优先级的任务,只有当高优先级的任务进入阻塞或挂起时,低优先级的任务才可以执行。

合作调度模式:

禁止抢占,不论优先级高低,都遵循谁先来到,谁运行。前面的任务不进入阻塞或挂起,后面的任务就不能够执行。

宏开关

在FreeRTOSConfig.h中,设置宏开关。具体操作如下:

当这个宏为1时,设置为可抢占调度模式。

当这个宏为0时,设置为合作调度模式。

在FreeRTOS中,常用的设置为可抢占调度模式。

时间片轮转

在FreeRTOS中,可以配置相应的宏configUSE_TIME_SLICING来设置是否进行时间片轮转。

含义

时间片轮转对应的是同级别优先级的任务,这需要先设置为可抢占调度模式。

允许时间片轮转:

同级别的优先级的任务交替执行,交替执行的周期可以设置,默认为1ms。交替执行的周期设置可以查看博文“FreeRTOS_任务管理”中的“多任务交替执行的原理”章节,下面是博文链接:

FreeRTOS_任务管理-CSDN博客

禁止时间片轮转:

同级别的优先级的任务禁止交替执行,遵循谁先来到,谁运行。前面的任务不进入阻塞或挂起,后面的任务就不能够执行。

这时如果存在高优先级抢断,在高优先级运行完成之后,会进行一次任务调度。这时同级别优先级会切换下一个任务。模型如下:

宏开关

在FreeRTOSConfig.h中,设置宏开关。具体操作如下:

当这个宏为1时,设置为允许时间片轮转。

当这个宏为0时,设置为禁止时间片轮转。

在FreeRTOS中,常用的设置为允许时间片轮转。

空闲任务礼让

在FreeRTOS中,可以配置相应的宏configIDLE_SHOULD_YIELD来设置空闲任务是否礼让。

含义

空闲任务礼让对应的是   优先级为0的任务   与   空闲任务   之间的时间片流转关系,这需要先设置为可抢占调度模式和允许时间片流转。

空闲任务礼让:

空闲任务与其他任务一样,任务处理函数中也是一个while(1)。当使能礼让时,空闲任务只执行一次就触发一次调度,这样就将更多的时间分配给了其他的任务。

空闲任务不礼让:

设置为不礼让时,空闲任务与其他优先级为0的任务没有任何区别,正常的进行交替运行。

宏开关

在FreeRTOSConfig.h中,设置宏开关。具体操作如下:

当这个宏为1时,设置为允许空闲任务礼让。

当这个宏为0时,设置为禁止空闲任务礼让。

在FreeRTOS中,常用的设置为允许空闲任务礼让。

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值