RTOS学习笔记:RTOS基础知识

本文介绍了RTOS中的三种调度方式:抢占式调度,时间片调度和协程式调度。在抢占式调度中,高优先级任务可抢占低优先级任务;时间片调度则在同等优先级任务间分配CPU时间。FreeRTOS中的任务有四种状态:运行态、就绪态、阻塞态和挂起态,每种状态都有对应的任务列表。
摘要由CSDN通过智能技术生成

RTOS学习笔记:RTOS基础知识

  • 任务调度简介

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

三种调度方式:

  1. 抢占式调度:

主要是针对优先级不同的任务,每个任务都有一个优先级,优先高的任务可以抢占 优先级低的任务

  1. 时间片调度:

主要针对优先级相同的任务,当多个任务的优先级相同时,任务调度器会在每一次 系统时钟节拍到的时候切换任务

  1. 协程式调度:

当前执行任务将会一直运行,同时高优先级的任务不会抢占低优先级任务。 FreeRTOS现在虽然还支持,但是官方已经不再更新协程式调度

抢占式调度

 

运行过程如下:

  1. 在Task1运行中,在这个过程中Task2就绪了,在抢占调度器的作用下Task2会抢占    Task1的运行。
  2. 在Task2运行中,Task3就绪了,在抢占调度器的作用下Task3会抢占Task2的运行
  3. Task3运行过程中,若遇系统延时等情况,系统转而运行Task2,延时结束后重新运 行Task3

时间片调度

同等优先级任务轮流的享相同的CPU时间(可设置),在FreeRTOS中,一个时间片就等于SysTick中断周期。

         

运行过程如下:

  Task1运行完一个时间片后Task2运行,Task2运行一个时间片后Task3运行,若遇阻  塞,则直接跳到下一任务循环,不管有没有运行完。

二、任务状态

FreeRTOS中存在4种状态:

运行态:正在执行的任务,该任务就处于运行态,STM32中,同一时间仅一个任务    处于运行态。

就绪态:如果该任务已经能够被执行,但当前还未被执行,那么该任务处于就绪态。

阻塞态:一个任务因延时或等待外部事件发生,那么这个任务就处于阻塞态。

挂起态:类似暂停,调用函数进入挂起态,需要使用解挂函数才可以进入就绪态。

任务状态列表:

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

就绪列表:pxReadyTaskLists[x],其中x代表任务优先级数值,32位数组,当某个位置1  时,代表所对应的优先级就绪列表有任务存在。

        

 

阻塞列表:pxDelayTaskLists

挂起列表:xSuspendedTaskListsw

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值