首页 > 其他分享 >1816_ChibiOS中的RT调度器

1816_ChibiOS中的RT调度器

时间:2023-11-05 19:34:21浏览次数:38  
标签:RT 1816 优先级 调度 链表 idle 线程 ChibiOS


GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com)

1816_ChibiOS中的RT调度器_RTOS

1. ChibiOS的调度是一个严格根据优先级来的调度器。

2. 有一个与此功能相关的参数配置,用来设置时间片。如果这个数值设置为0,那么调度将会认为所有的线程优先级一样,线程之间的协同调度具有相同的优先级。

3. 调度器的几个特点

         - 上下文的切换速度非常快;

         - 信息总是从切换出来的任务传递到切换进去的任务;

         - 充分利用虚拟定时器来实现一些超时的处理;

4. 系统的一些元素采用了类的设计,这样就很容易派生支持多核MCU的架构。

1816_ChibiOS中的RT调度器_优先级_02

1. 这里第一次见识到在实际的软件设计中切切实实采用了UML进行简单的建模的一个例子。关于UML到现在为止,我还是处于看不懂的水平。但是,结合这里的介绍大概还是能够猜测出来这里想要表达出来的概念。

2. 这里有几个概念需要理顺清楚:线程的就绪链表、注册表(一系列激活的线程表)、当前线程、虚拟定时器链表、调试相关信息、时间测量标定数据、内核运行时统计。

3. 就绪链表是一个双向链表。

1816_ChibiOS中的RT调度器_UML_03

1. 当前任务并不是就绪链表的一部分,当前任务或者说当前线程是由一个全局指针来进行索引调用的。

2. OS中有个优先级最低线程是idle,这个在其他任何任务都不就绪的时候激活。

3. 关于idle有几点值得注意下:

         - 第一,idle是有利于降低功耗的。因为这里面的指令基本都是等待或者挂起之类的处理;

         - 第二,idle切换到其他的任务,也就是说在前面所说的等待命令状态下的唤醒是通过中断来激发的。

         - 第三,idle只有两个状态,那就是ready或者current执行状态。

4. idle任务是又OS初始化的时候自动创建的,会一直持续存在到OS关机。

标签:RT,1816,优先级,调度,链表,idle,线程,ChibiOS
From: https://blog.51cto.com/greyzhang/8194795

相关文章

  • FreeRTOS任务调度
    FreeRTOS任务调度器有哪些功能?FreeRTOS任务调度器具有以下功能:实现并发性和时间确定性:FreeRTOS的任务调度器是实现并发性和时间确定性的核心组件,它使用抢占式调度算法,通过分配优先级来确保高优先级的任务能够在低优先级任务之前执行。动态优先级调整:任务的优先级可以动态地......
  • FreeRTOS 解析
    FreeRTOS解析xidianjunnan 分类专栏:操作系统文章标签:mcu物联网iot————————————————版权声明:本文为CSDN博主「xidianjunnan」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/xidianjunnan/article......
  • SQL server experts
    Personalsitehttps://medium.com/munchy-bytes/microsoft-sql-server-gurus-you-should-follow-2fce3e5120e4https://www.brentozar.com/blitz/https://ola.hallengren.com/sql-server-index-and-statistics-maintenance.htmlgithubhttps://github.com/BrentOzarULTD/SQ......
  • 《AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE》阅
    论文标题《ANIMAGEISWORTH16X16WORDS:TRANSFORMERSFORIMAGERECOGNITIONATSCALE》谷歌论文起名越来越写意了,“一幅图像值16X16个单词”是什么玩意儿。ATSCALE:说明适合大规模的图片识别,也许小规模的不好使作者来自GoogleResearch的Brain团队,经典的同等贡献......
  • Error: error:0308010C:digital envelope routines::unsupported
    "start":"SETNODE_OPTIONS=--openssl-legacy-provider&&cross-envUMI_ENV=devumidev","start:dev":"SETNODE_OPTIONS=--openssl-legacy-provider&&cross-envREACT_APP_ENV=devMOCK=noneUMI_ENV=devu......
  • c: struct sort descending and ascending
     /***@filehello.c*@authoryourname(geovindu)*@brief*@idevscodec11,c17windows10*@version0.1*@date2023-11-05**@copyrightCopyright(c)2023**/#include<stdlib.h>#include<stdint.h>#include<stdio.h......
  • Flutter/Dart第20天:Dart 3.0新特性之类型修饰符
    Dart官方文档:https://dart.dev/language/class-modifiers重要说明:本博客基于Dart官网文档,但并不是简单的对官网进行翻译,在覆盖核心功能情况下,我会根据个人研发经验,加入自己的一些扩展问题和场景验证。类型修饰符主要是控制类或者Mixin如何被使用,包括在库内部和外部使用。修饰符......
  • [ARC140B] Shorten ARC 题解
    分析自然,我们可以想到利用贪心去解题。我们可以证明,$\texttt{ARC}$左右两边$\texttt{A}$和$\texttt{C}$个数多的比少的变为$\texttt{R}$贡献能更多,第奇数次操作比第偶数次能使操作次数更多。于是,我们可以得出这样的一个算法:若为奇数次操作那我们将现有的$\texttt{ARC......
  • Ozon Tech Challenge 2020 (Div.1 + Div.2, Rated, T-shirts + prizes!) B. Kuroni an
    Problem-1305B-Codeforces 啦啦啦,这题题目有点长,概括一下就是,希望将所有()匹配的括号去掉问你需要操作多少次 双指针,一个i一个j,从前往后记录匹配的括号如果发现:1.括号匹配2.i<jok,就放入ans (⊙o⊙)…,最后记得sort一遍ans,第一遍因为这个wa了一发 #include......
  • 选择实时操作系统(RTOS)的要点详解
    选择实时操作系统(RTOS)的要点详解dy9h127cequf•来源:CSDN-refine19• 2023-05-3009:45 • 561次阅读 • 0个评论对许多嵌入式项目来说,系统设计师都倾向于选择实时操作系统(RTOS)。但RTOS总是必要的吗?答案是取决于具体的应用,因此了解我们要达到什么目标是决定RTOS是必......