首页 > 编程语言 >FreeRTOS 中的调度算法

FreeRTOS 中的调度算法

时间:2023-09-23 21:13:32浏览次数:32  
标签:优先级 FreeRTOS 算法 调度 任务 式调度

FreeRTOS 中的调度算法

01 调度算法概述

调度算法的作用:

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

FreeRTOS 调度算法的分类:

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

02 抢占式调度算法

优先级抢占式算法

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

时间片轮转调度算法

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

03 非抢占式调度算法

优先级调度算法

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

先来先服务调度算法

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

标签:优先级,FreeRTOS,算法,调度,任务,式调度
From: https://www.cnblogs.com/Jack-12/p/17725048.html

相关文章

  • 算法训练day18 LeetCode 513
    算法训练day18LeetCode513.112.106513.找树左下角的值题目513.找树左下角的值-力扣(LeetCode)题解代码随想录(programmercarl.com)递归方式单独数据存储最大深度,和此深度的结点值递归后要注意回溯classSolution{public:intmaxDepth=INT_MIN;......
  • 栈和堆的区别、FreeRTOS 中的任务栈
    栈和堆的区别、FreeRTOS中的任务栈01 堆和栈的概念堆功能堆是一块用于动态分配内存的区域,用于存储程序运行时动态创建的对象。堆的大小可以在程序运行时动态调整。特点堆的分配和释放是由程序员手动控制的。堆的分配和释放顺序的任意的,不需要遵循先进先出的原则......
  • JavaScript实现排序算法
    目录前言排序算法冒泡排序选择排序插入排序归并排序快速排序计数排序基数排序桶排序前言排序算法是《数据结构与算法》中最基本的算法之一,本篇使用JavaScript语言实现各种常见排序算法。排序算法冒泡排序比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻......
  • FreeRTOS操作系统
    FreeRTOS操作系统01 FreeRTOS的定义和概述定义:FreeRTOS(Free-Real-TimeOperatingSystem)是一个开源的实时操作系统内核,专门为嵌入式系统设计。它提供了一套简单而强大的API,用于管理任务、调度任务、同步和通信等操作。概述:FreeRTOS是由RichordBarry创建的,是一个轻量级的......
  • 网络拥塞控制算法总结-Chameleon自动调参工具
    快手联合东南大学、清华大学在SIGCOMM'23提交了一篇poster:《Chameleon:AutomaticandAdaptiveTuningforDCQCNParametersinRDMANetworks》,描述了一种可自动调节DCQCN流控参数的工具,企图将复杂、枯燥而又漫长(据文章所属,调参过程可能需要数周)的RDMA调参过程自动化。具体实......
  • 9.23算法
    删除链表的倒数第N个节点给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例1:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]示例2:输入:head=[1],n=1输出:[]示例3:输入:head=[1,2],n=1输出:[1] 提示:链表中结点的数目为sz1<=sz<=300<=Node......
  • 算法基础之快速排序
    quick_sort方法中如果i=l,j=r会死循环的分析示例代码voidquick_sort(inta[],intl,intr){if(l>=r)return;inti=l,j=r;//此处设置会导致死循环intx=num[(l+r)>>1];while(i<j){while(a[++i]<x);//死循环的地方while(a[--j]>x......
  • 算法基础之高精度总结
    高精度算法分类分类:加、减、乘、除其中加减乘都适用于两个数都是高精度,除法因为除数是高精度的话不好用整除的方法,所以除法时被除数是高精度,除数是整型。高精度加减乘除的异同点加和乘相同点需要从低位到高位处理for(inti=stra.size()-1;i>=0;i--)c.push_back(stra[i......
  • 算法基础之二分查找
    原题链接二分查找中的mid+1和mid-1的问题二分查找中的边界问题处理不好很容易导致死循环和计算错误的问题,以题目数的范围为例。题目大意​二分查找重复数第一次出现的位置和最后一次出现的位置。数学含义​第一次位置即找到一个长度最大的>=X区间的左边界​最......
  • 深度学习算法中的参数共享(Parameter Sharing)
    引言在深度学习算法中,参数共享(ParameterSharing)是一种重要的技术,它通过共享模型的参数来减少模型的复杂度,并提升模型的性能和泛化能力。本文将介绍参数共享的概念、原理以及在深度学习算法中的应用。参数共享的概念参数共享指的是在模型的不同部分使用相同的参数。在传统的机器学......