码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • RTOS(6)任务管理


    任务状态理论

    我们是怎么实现,两个同优先级的任务之间交替执行的呢?
    任务切换的基础:tick中断!
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    tick为1ms一个周期,可以通过修改时钟配置修改;
    running:正在进行的任务3为running;
    ready:任务1和任务2处于ready;
    blocked(阻塞状态):等待某事,比如小孩口中的饭还没吃完,就得等吃完才喂;
    suspend(暂停状态):主动休息或者被命令休息;
    在这里插入图片描述
    如何管理这些任务呢?
    链表readylist:A->B->C

    任务状态实验

    创建三个任务
    任务一:进入suspend再resume回来
    在这里插入图片描述

    任务二:进入blocked,delay一会,再进入ready状态
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    vTaskDelay和vTaskDelayuntil

    在这里插入图片描述
    dosomething()的时间不定,如何才能保证它的执行周期是不变的呢?
    vTaskDelay只能保证延时的时间,不考虑dosomething的时间;
    vTaskDelay:等待指定个数的Tick count才能ready,继续执行;
    在这里插入图片描述

    vTaskDelayuntil:等待到指定的绝对时刻,才能reday,继续执行;
    在这里插入图片描述
    区别:
    在这里插入图片描述
    在这里插入图片描述

    空闲任务及其钩子函数

    在这里插入图片描述
    idel task:0
    task1:1
    task2:2
    在这里插入图片描述
    FreeRtos是封装好的,不会让你随随便便修改它的源代码,所以他开放了钩子函数让用户使用;
    在这里插入图片描述

    任务调度

    阻塞状态(blocked)的任务,它在等待“事件”,这个事件有两种类型:时间相关的事件,同步事件;

    有三个配置在Freertosconfig中,可以决定我们的调度策略
    configUSE_PREEMPTION 可以决定是否可以抢占;
    configUSE_TIME_SLICING 可以决定同优先级是否轮流进行,无法进行时间片轮转;
    如果置于0,除非任务主动放弃cpu,进入blicked或suspend状态,否则直接霸占,其他任务无法执行;
    configIDLE_SHOULD_YIELD 可以决定空闲任务是否礼让别的任务;

  • 相关阅读:
    数据结构 | (四) Queue
    单链表思路讲解+C语言代码实现
    原子性(juc编程)
    MySQL,刷题之对多表查询,题+代码!!
    Java版本企业工程项目管理系统平台源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)
    java毕业设计对外汉语教学辅助平台Mybatis+系统+数据库+调试部署
    二、Excel VBA 简单使用
    代码随想录算法训练营第29天 |第七章 回溯算法part05
    基于Zephyr平台nRF Connect SDK在Windows10下开发环境的快速搭建
    SpringCloud Alibaba(七) - JWT(JSON Web Token)
  • 原文地址:https://blog.csdn.net/weixin_45636780/article/details/133906088
  • 最新文章
  • 【FHE】我们如何实现同态加密推理(八):SiLU 的密文化——两条路径,和一个 8 字节的开关
    SQLcl 中 c/old/new 替换变量为何失效?先定位再替换
    不让模型写作文,直接从它脑子里读答案:Jev 决策在 .NET 的两条路线
    Halo插件:支持GitHub的图床附件策略
    电视投屏界的“一股清流”!SimpleTVCast 6.0.0-beta 抢先体验:无需TV端App,界面大换血!✨
    华三VXLAN集中式网关实战指南:Spine多活网关 + 双活接入(M-LAG)
    软件更好写之后口碑会更重要
    大 O、大 Omega、大 Theta 的区别,O(n) 复杂度是什么意思
    Java标签跳转:一个鲜为人知但却很实用的小技巧
    多智能体系统论文速读
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号