FreeRTOS基础知识(1)(任务调度和任务状态)

学习目标:

FreeRTOS基础知识(任务调度和任务状态)

参考资料:

正点原子

学习内容:

  1. 任务调度简介
  2. 任务状态

任务调度:

调度器是使用相关的调度算法来决定当前需要执行的任务。Freertos支持三种方式。
1.抢占式调度:根据优先级不同,优先级高的任务可以抢占低优先级任务。(优先数值约大,优先级大)。
在这里插入图片描述
(1)高优先级任务优先执行;
(2)高优先级任务不停止,低任务优先级不会执行;
(3)被抢占的任务将会进入就绪态。
2.时间片轮渡:优先级相同时,在每一个系统时钟节拍到的时候就自动切换任务。
(1)在同等的任务优先级下,轮流享有CPU的时间,一个时间片就等于SysTick的中断周期。

在这里插入图片描述
(1)同等优先级,轮流执行,时间片流转。
(2)一个时间片的大小,取决于时钟周期。
(3)灭有用完的时间片不会再使用,直接丢掉。
3.协程式调度:当前正在执行任务,同时高优先级任务不会抢占低优先级的任务。

任务状态:

Freertos共有四种状态。
(1)运行态:正在执行的任务,在stm32中,同一时间只有一个任务处于运行状态。
(2)就绪态:该任务可以执行,但是还没有执行的状态。
(3)阻塞态:如果因为延时或者等待外部时间发生,则处于阻塞态。
(4)挂起态:类似暂停,调用函数vTaskSuspend()进入挂起态,需要调用解挂函数vTaskResume()可以进入就绪态。
1.四种任务状态的转换图。
在这里插入图片描述
(1)只有就绪态可以直接变为运行态;
(2)其他的状态任务想要运行,首先需要转成就绪态。
2.除了运行态,其余三张任务状态都有对应的任务状态列表。
(1)就绪列表:pxReadyTaskLists[x],x是任务优先级的数值。
(2)阻塞列表:pxDelayedTaskList
(3)挂起列表:xSuspendedTaskList
3.调度器总是处于就绪列表的任务中,选择优先级最高的任务来执行。
4.相同优先级的任务连接在同一个就绪列表中,然后根据时间片轮流执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值