0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RTOS如何实现多任务?这篇文章告诉你答案

如意 来源:RTOS如何实现多任务?这篇 作者:RTOS如何实现多任务 2020-08-24 16:52 次阅读

很多朋友长时间使用裸机编程,切换过来学习RTOS,就对其中很多概念产生了误解。

大部分人开始学习RTOS实时操作系统时,对RTOS中的一些概念都不太理解。

一上来就是临界段、调度、信号量、互斥锁等这些概念,相信大部分都是是懵的。

不太懂这些概念很正常,一下子懂了,我倒反而觉得不正常。

1什么是多任务

这里大部分人应该都是从裸机阶段过来的,裸机系统一般也称之为单任务系统、轮询系统或前后台系统。

这个概念相信大家都能明白,轮询就是在一个大while循环里执行。前后台系统就是在执行while时,有中断(前台)响应的系统。

RTOS如何实现多任务?这篇文章告诉你答案

那么,什么是多任务呢?

当多任务操作系统使用某种任务调度策略允许两个或更多进程并发共享一个处理器时,事实上处理器在某一时刻只会给一件任务提供服务。

因为任务调度机制保证不同任务之间的切换速度十分迅速,因此给人多个任务同时运行的错觉。

---来自百度百科

初学者可以理解为:有类似上面的多个轮询系统。

如下代码,将大while中的多项事情,分为几个事情,分别处理。

RTOS如何实现多任务?这篇文章告诉你答案

这里就要牵涉到各个任务之间的切换:任务调度。

2任务调度

说任务调度之前,先说一插曲:

我开始学RTOS时,觉得CPU这么短时间(1ms)在各个任务之间来回切换,而且切换还需要执行那么多代码,这样CPU还能执行多少代码啊?

其实,我当时太低估了处理器的能力。

STM32F103跑72M来说,1ms时间可以执行的代码有多少,你们心里有概念吗?

沿着这个问题,大家深思,其实都能明白,区区那切换(任务调度)的代码对于CPU速度来说,可以忽略(当然,这个相对)。

任务调度

任务调度可以分抢占调度和轮询调度。

在RTOS中,为了使任务得到实时响应,一般使用抢占调度方式,我们拿UCOS为例:

RTOS如何实现多任务?这篇文章告诉你答案

你会发现只程序执行过程中,如果有高优先级任务带来,高优先级任务就会打断低优先级任务。

直到高优先级任务执行完,低优先级任务才得到相应。

这里有人可能会问:如果高优先级一直或者长时间执行可以吗?

答案是:NO

这里就关系到任务优先级分配,以及任务设计问题。

一般来说,高优先级任务是在等待一个事件的触发,执行一件紧急,而不会太耗时的事情。

太耗时任务一般留给低优先级任务,在系统不忙时慢慢处理。

RTOS如何实现多任务?这篇文章告诉你答案

调度过程

我们设置系统滴答为1ms时间,那么系统就会间隔1ms检查一次就绪任务中优先级更高的任务。

这个1ms滴答是由定时器中断产生,一般像在STM32由内核滴答定时器产生。

如上图,他在(2)的位置就检测到有更高优先级任务(7)就绪,此时就会跳转到任务(7)去执行。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RTOS
    +关注

    关注

    20

    文章

    776

    浏览量

    118800
  • 多任务
    +关注

    关注

    0

    文章

    18

    浏览量

    8989
  • 优先级
    +关注

    关注

    0

    文章

    21

    浏览量

    8693
收藏 人收藏

    评论

    相关推荐

    深入理解和实现RTOS_连载

    的前生今世感兴趣,建议仔细阅读《嵌入式操作系统史话》这个连载的文章,作者何小庆教授花了很多精力编写了这组资料。深入理解和实现RTOS_连载2_多任务机制概述在前面我们曾介绍了多任务
    发表于 05-29 11:20

    深入理解和实现RTOS_连载

    /325438。作者何小庆教授花了很多精力编写了这组资料。深入理解和实现RTOS_连载2_多任务机制概述在前面我们曾介绍了多任务系统是如何演化的。和前后台系统相比较,
    发表于 05-30 01:02

    RTOS多任务同步和通讯

    、邮箱、事件标记、管道、信号和条件变量等。深入理解和实现RTOS深入理解和实现RTOS_连载6_多任务同步和通讯.pdf (379.46 K
    发表于 02-18 06:35

    RTOS多任务机制应用演示

    的执行路径。深入理解和实现RTOS深入理解和实现RTOS_连载5_多任务机制应用.pdf (247.18 KB )
    发表于 02-17 23:30

    实时多任务操作系统(RTOS

    任务、进程和线程。实时多任务操作系统(RTOS)是嵌入式应用软件的基础和开发平台,它是根据操作系统的工作特性
    发表于 08-24 06:34

    如何去实现基于stm32的FreeRTOS多任务程序

    基于 stm32 的 FreeRTOS多任务程序实现一、什么是FreeRTOS二、AHT20数据采集原理电路绘制三、FreeRTOS的多任务程序设计四、参考资料一、什么是FreeRTOSFree 即
    发表于 08-24 07:45

    RTOS中的多任务切换怎么实现

    RTOS中的多任务切换怎么实现
    发表于 11-30 07:23

    RTOS中的多任务切换的相关资料分享

    函数四.总流程五.结果六.后记(含代码链接)一. 简介  RTOS中的多任务切换是操作系统与裸机编程的一个非常大的区别,一般逻辑变成运行在一个循环内,裸机编程很难实现两个事件的并行(这里的并行指的是
    发表于 12-06 07:08

    如何使用Tracealyzer理解多任务调度?

    使用实时操作系统 (RTOS) 时,可能已经注意到,传统的调试器不足以解决很多类型的问题。调试器仅在断点位置停止运行时,显示当前系统状态,但是系统是如何到达这个状态的?任务的运行时间是多少?每个
    发表于 12-17 16:01

    什么是多任务系统?FreeRTOS任务与协程简析

    FreeRTOS学习之FreeRTOS任务基础知识转行小白一枚,通过博客记录自我学习,望更多博友多多指点,感激不尽!RTOS系统的核心就是任务管理,学习RTOS系统主要是为了使用
    发表于 02-18 06:38

    基于单片机系统中的多任务多线程机制的实现

       首先要指出的是一点是,我们不是讨论嵌入式实时多任务操作系统(RTOS)的设计。我们讨论的是,在不使用RTOS的控制系统中,如何体现多任务多线程机制的
    发表于 09-26 16:12 1834次阅读

    RTOS实时操作系统怎么执行多任务的?

    RTOS实时操作系统中是怎样实现多任务的?
    的头像 发表于 03-03 13:49 4282次阅读
    <b class='flag-5'>RTOS</b>实时操作系统怎么执行<b class='flag-5'>多任务</b>的?

    如何让RTOS多任务访问同一个UART?

    RTOS多任务编程的时候,同一个硬件(比如UART、I2C等)被多个任务访问的情况比较多,如果不合理处理,就会导致“混乱”的局面。 处理“混乱”局面的方法比较多,下面基于FreeRTOS
    的头像 发表于 03-12 17:18 1850次阅读

    分析RTOS实现多任务调度的基本原理

    概念,相信大部分初学者都是懵的。 不太懂这些概念很正常,一下子懂了,我倒反而觉得不正常。 1什么是多任务 这里大部分人应该都是从裸机阶段过来的,裸机系统一般也称之为单任务系统、轮询系统或前后台系统。 这个概念相信大家都能明白,轮询
    的头像 发表于 07-27 15:59 5060次阅读
    分析<b class='flag-5'>RTOS</b><b class='flag-5'>实现</b><b class='flag-5'>多任务</b>调度的基本原理

    浅谈RTOS中的多任务切换(基于UC/OS iii)

    函数四.总流程五.结果六.后记(含代码链接)一. 简介  RTOS中的多任务切换是操作系统与裸机编程的一个非常大的区别,一般逻辑变成运行在一个循环内,裸机编程很难实现两个事件的并行(这里的并行指的是宏观的并行),但是在操作系统中
    发表于 11-23 18:06 25次下载
    浅谈<b class='flag-5'>RTOS</b>中的<b class='flag-5'>多任务</b>切换(基于UC/OS iii)