FreeRTOS 中的调度算法

01 调度算法概述

调度算法的作用:

  • 实时系统的调度需求

    • 相应时间要求
    • 任务优先级
    • 资源利用率
  • FreeRTOS 调度算法的目标
    • 提供可预测的任务调度
    • 实现任务的优先级管理
    • 最大化系统资源利用率

FreeRTOS 调度算法的分类:

  1. 抢占式调度算法 优先级抢占式调度算法、时间片轮转算法
  2. 非抢占式调度算法 优先级调度算法、先来先服务调度算法

02 抢占式调度算法

优先级抢占式算法

  • 算法原理

    • 任务优先级越高,被调度的机会越大。
    • 任务优先级相同时,采用时间片轮转调度
  • 优点
    • 可以满足实时系统的响应时间要求
    • 可以实现任务的优先级管理
  • 缺点
    • 低优先级任务可能会被长时间阻塞

时间片轮转调度算法

  • 算法原理

    • 每个任务被分配一个时间片
    • 时间片用完后哦,任务被挂起,等待下一次调度
  • 优点
    • 公平地分配CPU时间片
    • 可以避免低优先级任务长时间阻塞
  • 缺点
    • 无法满足实时系统的响应时间要求

03 非抢占式调度算法

优先级调度算法

  • 算法原理

    • 任务按照优先级顺序执行
    • 高优先级任务执行完或阻塞后,才会执行低优先级任务
  • 优点
    • 可以满足实时系统的响应时间要求
    • 可以实现任务的优先级管理
  • 缺点
    • 低优先级任务可能会被长时间阻塞

先来先服务调度算法

  • 算法原理

    • 任务按照到达时间顺序执行
    • 先到达的任务先执行
  • 优点
    • 简单易实现
    • 可以避免低优先级任务长时间阻塞
  • 缺点
    • 无法满足实时系统的响应时间要求

FreeRTOS 中的调度算法的更多相关文章

  1. 【RTOS】FreeRTOS中的任务堆栈溢出检测机制

    目录 前言 任务堆栈 堆栈溢出 任务堆栈溢出检测机制 API 两种堆栈溢出检测方式 堆栈溢出钩子函数 内核何时检测任务堆栈溢出 任务堆栈溢出检测存在的局限性 前言 注意:本笔记发布时可能忘记补充查看d ...

  2. 再论FreeRTOS中的configTOTAL_HEAP_SIZE

    关于任务栈和系统栈的基础知识,可以参考之前的随笔.(点击这里) 这里再次说明:#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 17 * 1024 ) ) 这个 ...

  3. 在cubemx中使用freertos中的注意事项

    就是使用信号量等rtos自带特性的时候,务必先初始化然后在发生信号量或接收. 而且在中断中发送信号量或队列的时候,务必把使能中断的语句放在初始化freertos之后,尤其是cubemx生成的代码,默认 ...

  4. FreeRTOS 中 systick 相关配置

    @2018-7-16 > systick 属性配置 在文件 <port.c> 中函数 void vPortSetupTimerInterrupt( void ) 中配置计数周期.时钟 ...

  5. STM32 使用 FreeRTOS过程记录

    资源:http://blog.csdn.net/zhzht19861011/article/category/6191478 资源:可以下载安富莱的STM32-V5开发版资料中的FreeRTOS教程, ...

  6. FreeRTOS初步认识

    源:FreeRTOS初步认识 用了半天时间对FreeRTOS有了一个初步的认识,大概总结一下,其中混杂了系统实现和实际应用方面的问题. 现只是以应用为目的,实现方面待以后进一步研究. 1.FreeRT ...

  7. FreeRTOS——任务调度—抢占式,时间片和合作式

    以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章教程为大家将介绍 FreeRTOS 操作系统支持的任务调度方式:抢占式,时间片和合作式,这部分算是 Fr ...

  8. FreeRtos——多任务

    官方资料整理测试: 多任务和单任务几乎没有差别.只用多创建一个或多个任务,其他地方和单任务时相同. static void AppTaskCreate(void) { xTaskCreate(vTas ...

  9. 源码解读·RT-Thread多任务调度算法

    *本文依据RT-Thread当时最新版本4.0.1版本源码 RT-Thread操作系统是一款基于优先级和时间片轮转的多任务实时操作系统.其调度算法采用256个优先级,并支持相同优先级的任务存在.不同优 ...

  10. (41)freeRTOS之任务管理

    1. 简介: 在 FreeRTOS 中没有线程和进程的区别,只有一个被翻译成任务的程序,相当于进程的概念,拥有独立的栈空间. 对于实时性,可以分为 软实时.硬实时:桌面电脑的输入处理可以看做是软实时, ...

随机推荐

  1. 如何通过数据warehouse更好地支持企业数字化转型战略

    目录 1. 引言 2. 技术原理及概念 3. 实现步骤与流程 4. 应用示例与代码实现讲解 5. 优化与改进 <如何通过数据 warehouse 更好地支持企业数字化转型战略> 随着企业数 ...

  2. [MAUI]用纯C#代码写两个漂亮的时钟

    @ 目录 时钟1 绘制锯齿表盘 绘制指针 绘制沿路径文本 时钟2 绘制表盘 绘制指针 项目地址 谷歌在2021年5月份推出的Android 12给我们带来了新的UI设计规范Material You,你 ...

  3. 行行AI人才沙龙第1期:《AI大模型创业投资,哪里才是真风口?》

    行行AI人才是博客园和顺顺智慧共同运营的AI行业人才全生命周期服务平台. 要说近期科技圈和投资圈"最靓的崽",那自然非"AI大模型"莫属.自ChatGPT发布以 ...

  4. UDP 编程不能太随意

    UDP 相比 TCP 虽然是是无连接的,看似发送接收都很随意,但是在发送--接收过程中,仍然有些问题需要重视.在整个通讯过程中至少有两点需要注意,一方面要防止发送方的一厢情愿,另一方面是在允许的条件下 ...

  5. Hello-FPGA CoaXPress 2.0 FPGA HOST IP Core Demo User Manual

    目录 Hello-FPGA CoaXPress 2.0 Host FPGA IP Core Demo 4 1 说明 4 2 设备连接 5 3 VIVADO FPGA工程 6 4 SDK工程 9 图 1 ...

  6. React中编写操作树形数据的自定义Hook

    什么是 Hook hook 即为钩子,是一种特殊的函数,它可以让你在函数式组件中使用一些 react 特性,目前在 react 中常用的 hook 有以下几类 useState: 用于在函数组件中定义 ...

  7. 【阅读笔记】提升example-based SISR七个技巧

    论文信息 [Seven ways to improve example-based single image super resolution]-Radu Timofte, 2016, CVPR 论文 ...

  8. PTA 21级数据结构与算法实验6—图论

    目录 7-1 邻接矩阵表示法创建无向图 7-2 邻接表创建无向图 7-3 图深度优先遍历 7-4 单源最短路径 7-5 列出连通集 7-6 哈利·波特的考试 7-7 家庭房产 7-8 森森美图 7-9 ...

  9. MyBatis(log4j)

    log4j介绍 Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护 ...

  10. 单节点kafka部署笔记

    1 背景 因为工作中需要对接kafka,准备在测试环境中自己部署一套,考虑方便决定部署一台单点. 2 部署 2.1 scala 2.1.1 java环境 openjdk即可,我使用的是openjdk1 ...