一、任务调度简介(熟悉)

调度器就是使用相关的调度算法来决定当前需要执行的任务

FreeRTOS支持三种任务调度方式:

1、抢占式调度:主要 针对优先级不同的任务,每个任务都有一个优先级,优先级高的抢占优先级低的任务。

2、时间片调度:主要针对优先级相同的任务,任务调度器会根据系统时钟节拍到的时候切换任务。

3、协程式调度

二、任务状态(熟悉)

FreeRTOS中任务共有四种状态:

1、运行态:正在执行的任务就是运行态,在stm32中,同一时刻只有一个任务正在运行;

2、就绪态:如果该任务已经能够执行,但当前还未执行称为就绪态;

3、阻塞态 :如果一个任务因延时或等待外部事件发生,称为阻塞态;

4、挂起态:类似暂停,调用vTaskSuspend()进入挂起态,需要调用解挂函数vTaskResume才可进入就绪态;

四个任务状态的装换图:

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

就绪列表:pxReadyTasksLists[x],其中x代表任务优先级数值

阻塞列表:pxDelayedTaskList

挂起状态 :xSuspendedTaskList

调度器总是在处于就绪列表的任务中 ,选择最高优先级的任务运行。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐