FreeRtos学习笔记(一)

FreeRtos学习笔记

FreeRtos基础知识:

1、什么是任务调度?

2、什么是任务状态?

任务调度:
任务调度有三种模式,分别为抢占式调度,时间片调度,协程式调度。

抢占式调度就是任务优先级越高的任务优先于优先级低的任务,所以叫抢占,而时间片任务是针对优先级相同的任务而言,优先级相同的任务按照时间片的顺序一个接一个的执行,一个时间片的长短就是SysTick的中断周期。

请添加图片描述
抢占式调度总结:
1、高优先级任务先执行
2、高优先级不停止,低优先级无法执行
3、被抢占的任务进入就绪态

时间片调度总结:
1、同等优先级任务,轮流执行,时间片流转。
2、一个时间片大小,取决于滴答定时器的中断周期。
3、如果一个任务在0.5个时间片内做完,那么剩下的0.5个时间片就不用管了,直接空转,等到下一个时间片执行下一个任务。

任务状态

任务状态分为四种:
1、就绪态
2、运行态
3、阻塞态
4、挂起态

具体任务状态流转图如下:

请添加图片描述

运行态:任务正处于运行的状态,如小车循迹任务,小车正在循迹,则处于运行态,同一时刻只有一个任务处于运行态。

就绪态:任务已经能够被执行但还未被执行,比如初始化这些。

阻塞态:一个任务因延时或等待信号量或外部事件的发生,则任务处于阻塞态

挂起态:类似于暂停,调用vTaskSuspend()进入挂起态,调用vTaskResume()退出挂起态。

注意:

1、仅就绪态可转变成运行态。
2、优先级高的任务抢占了运行态中的就绪态,此时变为就绪态,只有调用了会发生阻塞的API函数才会进入阻塞态。

四种状态中,除了运行态,其他三种任务状态都有响应的任务状态列表:

如下图:
请添加图片描述
进入运行态只能由就绪列表中优先级高的进入,其他状态的要先进入就就绪列表中才能有机会进入运行态。

1、就绪列表(pxReadyTasksLists[x]:x代表任务优先级数值),高的优先级的会置一,其他的置零,从31往下找到置为1的任务列表,然后执行相关任务。

2、阻塞列表(pxDelayedTaskList)

3、挂起列表(xSuspendedTaskList)

问:如果三个任务优先级相同会怎样?
答:相同优先级的任务会在同一个就绪列表中,按时间片调度顺序执行/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值