FreeRTOS 学习笔记 5 —— 调度算法.简述

优先级抢占式调度:

1. 每个任务都赋予了一个优先级。

2. 每个任务都可以存在于一个或多个状态。

3. 在任何时候都只有一个任务可以处于运行状态。

4. 调度器总是在所有处于就绪态的任务中选择具有最高优先级的任务来执行。

这种类型的调度方案被称为”固定优先级抢占式调度”。所谓”固定优先级”是指每个任务都被赋予了一个优先级,这个优先级不能被内核本身改变(只能被任务修改)。”抢占式”是指当任务进入就绪态或是优先级被改变时,如果处于运行态的任务优先级更低,则该任务总是抢占当前运行的任务。

单调速率调度(Rate Monotonic Scheduling, RMS)是一种常用的优先级分配技术。其根据任务周期性执行的速率来分配一个唯一的优先级。具有最高周期执行频率的任务赋予高最优先级;具有最低周期执行频率的任务赋予最低优先级。这种优先级分配方式被证明了可以最大化整个应用程序的可调度性(schedulability),但是运行时间不定以及并非所有任务都具有周期性,会使得对这种方式的全面计算变得相当复杂。

协作式调度:reeRTOS 可以选择采用协作式调度。采用一个纯粹的协作式调度器,只可能在运行态任务进入阻塞态或是运行态任务显式调用taskYIELD()时,才会进行上下文切换。任务永远不会被抢占,而具有相同优先级的任务也不会自动共享处理器时间。协作式调度的这作工作方式虽然比较简单,但可能会导致系统响应不够快。

优先级抢占式调度实现了实时响应,对一些实时性要求高的任务应设置为高优先级,或者把执行频率高的设置为高优先级

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-30 07:10:47

FreeRTOS 学习笔记 5 —— 调度算法.简述的相关文章

树莓派学习笔记——SQLite操作简述

0 前言 本文介绍如何在树莓派中利用SQLite数据库保存CPU温度数据.SQLite是一款轻量级零配置数据库,非常适合在树莓派和其他嵌入式系统中使用.SQLite文档详细资料丰富,本文不会详细解释SQLite数据库操作的方方面面,只能结合具体场景按需说明.本文介绍的SQLite技巧也可以在其他平台使用,并不局限于树莓派. 本文继续折腾树莓派温度,需要从中可以玩出新花样. [相关博文] [树莓派学习笔记--索引博文]--更多博文请关注. [树莓派学习笔记--获取树莓派CPU温度] [树莓派学习笔

FreeRTOS学习笔记——二值型信号量

1.前言 在嵌入式操作系统中二值型信号量是任务间.任务与中断间同步的重要手段.FreeRTOS的二值型信号量简单易用,下面结合一个具体例子说明FreeRTOS中的二值型信号量如何使用. [相关博文] [FreeRTOS STM32移植笔记] [FreeRTOS学习笔记--任务间使用队列同步数据] [如何在FreeRTOS下实现低功耗--MSP430F5438平台] [代码链接]--示例代码存于百度网盘 2.特别说明         二值型信号量的使用方法见图1所示,二值型信号量可以理解为任务与中

FreeRTOS学习笔记2

FreeRTOS函数原型解析: portBASE_TYPE xTaskCreate( pdTASK_CODE pvTaskCode, const signed portCHAR * const pcName,              unsigned portSHORT usStackDepth,              void *pvParameters,              unsigned portBASE_TYPE uxPriority,.              xTas

FreeRTOS学习笔记4

FreeRTOS配置管理: 网上移植教程较多,也可以使用官方提供的各种Demo工程进行移植,不在详细介绍.本文主要介绍FreeRTOS移植成功后进行的配置方式.使其成为自己最匹配最精简,最适用的系统. FreeRTOSConfig.h几乎包含了所有需要的配置.下文讲述主要的几项配置: 包含INCLUDE_...的宏定义.所有这些宏都是条件编译所需的.可以根据自身需要进行定义.例如INCLUDE_xTaskAbortDelay是需要使用函数 xTaskAbortDelay()时定义为1.这样做的好

FreeRTOS学习笔记7-FreeRTOS 队列相关

在实际的应用中,常会遇到一个任务或者断服需要和另外进 在实际的应用中,常会遇到一个任务或者断服需要和另外进 行"沟通交流", 行"沟通交流", 行"沟通交流", 这个"沟通交流"的过程其实就是消息传递 这个"沟通交流"的过程其实就是消息传递 这个"沟通交流"的过程其实就是消息传递 这个"沟通交流"的过程其实就是消息传递 的过程.在 的过程.在 没有操作系统的时候两个应

FreeRTOS学习笔记5-静态方式创建任务函数

配置完成后的进行任务创建,使用静态方式创建任务时需要使将宏 configSUPPORT_STATIC_ALLOCATION设置为 1,即使用静态内存.还需要将函数 vApplicationGetIdleTaskMemory()和 ApplicationGetTimerTaskMemory()进行实现.通过这两个函数来给空闲任务 和定时器服的任务堆 栈和任务控制块分配内存.在maiinc.c中进行定义.定义静态的任务堆栈和任务控制块内存,然后将这些内存传递给函数参数.最后创建空闲任务和定时器任务的

FreeRTOS 学习笔记 1

之所以要学习 FreeRTOS,不是因为它多么出众,仅仅是因为公司要做的项目使用的芯片上有它,而我是后参与进来的,之前就听到前面的人说这部分比较难,所以就来学一下,免得做项目的时候抓瞎,所以我现在也不知道他到底难不难,完全没 Feel . Ps:对于前人的指教还是比较信任的...反正总不会害我... 这一次也要开始使用 Keil,以前一直用的是 IAR,熟悉一下应该也没有问题... 本人英语不是很好,幸好 Zou Changjun 前辈翻译了中文版,感谢 Zou Changjun 前辈... 桌

树莓派学习笔记——Python SQLite查询历史温度

0 前言 本文通过Python SQLite查询树莓派CPU的温度历史数据,在前面的博文中已经介绍了树莓派CPU温度获取,SQLite操作和利用Python插入历史数据,下面再介绍如何查询数据,本文主要分为三部分,第一部分为查询所有温度记录,第二部分获得最近一小时数据,第三部分为把获得结果格式化为字典类型. [相关博文] [树莓派学习笔记--索引博文]--更多博文请关注. [树莓派学习笔记--获取树莓派CPU温度] [树莓派学习笔记--定时向yeelink上传树莓派CPU温度] [树莓派学习笔记

树莓派学习笔记——Python SQLite插入温度记录

0 前言 本文使用python向SQLite数据库中插入树莓派温度数据,SQLite数据库中包含一张只包含三个字段的记录表--参数名称,时间和温度值.本文重点解释Python操作SQlite的具体方法,由于网上资料众多,重复部分不再复述只做到具体情况具体分析. [相关博文] [树莓派学习笔记--索引博文]--更多博文请关注. [树莓派学习笔记--获取树莓派CPU温度] [树莓派学习笔记--定时向yeelink上传树莓派CPU温度] [树莓派学习笔记--SQLite操作简述] 1 创建数据库和空表