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

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

3天内不再提示

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

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-03 13:49 次阅读

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

1写在前面

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

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

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

2什么是多任务

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

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

int main(void){/*初始化*/ while(1) {/*循环处理多项事情 */ }}

那么,什么是多任务呢?

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

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

---来自百度百科

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

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

void Task1(void){ /* 初始化 */ while(1) { /* 处理事情1 */ }} void Task2(void){ /* 初始化 */ while(1) { /* 处理事情2 */ }}

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

3任务调度

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

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

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

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

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

任务调度

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

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

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

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

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

答案是:NO

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

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

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

调度过程

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

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

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

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

    关注

    20

    文章

    776

    浏览量

    118800
  • 多任务
    +关注

    关注

    0

    文章

    18

    浏览量

    8989
  • 实时操作系统

    关注

    1

    文章

    184

    浏览量

    30524
收藏 人收藏

    评论

    相关推荐

    带你认识实时操作系统(rtos)

    实时操作系统RTOS)是为嵌入式系统实时应用提供一个稳定、可预测和高效运行环境的操作系统
    的头像 发表于 04-16 16:30 138次阅读
    带你认识<b class='flag-5'>实时</b><b class='flag-5'>操作系统</b>(<b class='flag-5'>rtos</b>)

    什么是实时操作系统(RTOS)

    实时操作系统RTOS)是一种专为实时应用程序设计的操作系统实时应用程序需要在特定时间内做出预
    的头像 发表于 11-23 17:14 1666次阅读

    51单片机多任务操作系统的原理是什么?

    51单片机多任务操作系统的原理
    发表于 11-06 08:10

    RTOS相比裸机有什么优点?RTOS相比裸机更方便吗?

    实时任务。在本文中,我们将探讨使用RTOS而不是裸金属系统的优点,以及它是否更方便。 RTOS相对于裸机系统的优势 1.
    的头像 发表于 10-29 16:33 1011次阅读

    到底啥是实时操作系统呢?它到底实时实时呢?

    到底啥是实时操作系统呢?它到底实时实时呢? 实时操作系统(Real Time Operatin
    的头像 发表于 10-29 16:33 731次阅读

    基于RTX51嵌入式多任务实时操作系统的智能卡电能表设计

    电子发烧友网站提供《基于RTX51嵌入式多任务实时操作系统的智能卡电能表设计.pdf》资料免费下载
    发表于 10-26 09:12 2次下载
    基于RTX51嵌入式<b class='flag-5'>多任务实时</b><b class='flag-5'>操作系统</b>的智能卡电能表设计

    实时操作系统(RTOS)和分时操作系统(TSOS)的区别

    大家平时玩单片机基本上对于µC/OS、FreeRTOS、ThreadX这些操作系统非常熟悉了,他们都属于实时操作系统RTOS),在工业领域比较广泛;然而对于linux这样的基于时间片
    发表于 09-21 10:19 3342次阅读

    FreeRTOS实时操作系统简述

    FreeRTOS是一个为嵌入式系统设计的开源实时操作系统。它提供了一个多任务内核和一系列组件功能,适合在资源受限的设备上管理实时任务和应用程
    发表于 09-19 12:37 694次阅读
    FreeRTOS<b class='flag-5'>实时</b><b class='flag-5'>操作系统</b>简述

    STM32 RTOS介绍

    R(real) T(time) OS 实时多任务操作系统RTOS是一种操作系统,属于嵌入式操作系统
    发表于 09-07 08:08

    如何通过多任务访问Keil RTX程序EEPROM

    V2.1,努埃杜-基数01 V2.1 当微控制器应用程序同时必须处理许多任务时, 我们可以使用 RTOS (实时操作系统) 来帮助我们管理这些任务
    发表于 09-01 07:42

    如何通过多任务访问Keil RTX程序EEPROM

    V2.1,努埃杜-基数01 V2.1 当微控制器应用程序同时必须处理许多任务时, 我们可以使用 RTOS (实时操作系统) 来帮助我们管理这些任务
    发表于 08-23 06:04

    多个任务程序如何在RTX实时操作系统中运行

    执行多项任务,同时帮助使程序代码结构化和易于维护。这个样本代码显示用户如何在RTX环境中创造任务和履行实时操作系统的各种功能。 您可以在下
    发表于 08-22 08:18

    51单片机多任务执行例子

    51单片机多任务同时执行。RTX51 tiny是一种实时操作系统RTOS),可以用它来建立多个任务
    发表于 08-04 15:59 0次下载

    51单片机多任务同时执行

    51单片机多任务同时执行。RTX51 Tiny是一种实时操作系统RTOS),可以用它来建立多个任务
    发表于 08-03 16:58

    选择实时操作系统(RTOS)的要点详解

    对许多嵌入式项目来说,系统设计师都倾向于选择实时操作系统(RTOS)。但RTOS总是必要的吗?答案是取决于具体的应用,因此了解我们要达到什么
    发表于 05-30 09:45 780次阅读