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
    +关注

    关注

    22

    文章

    822

    浏览量

    119989
  • 多任务
    +关注

    关注

    0

    文章

    18

    浏览量

    9110
  • 实时操作系统

    关注

    1

    文章

    199

    浏览量

    30888
收藏 人收藏

    相关推荐

    ARM嵌入式实时操作系统比较

    在嵌入式系统领域,实时操作系统RTOS)是确保任务按时完成的关键技术。ARM架构因其低功耗、高性能的特点,在嵌入式
    的头像 发表于 12-28 09:15 636次阅读

    使用任务通知提高RTOS应用的效率

    实时嵌入式系统中,性能和资源效率是决定设计成败的关键因素。传统的实时操作系统RTOS)提供了如队列、信号量和事件组机制,实现
    的头像 发表于 12-27 14:54 377次阅读

    鸿道Intewell操作系统的Windows实时拓展方案

    鸿道Intewell操作系统的Windows实时拓展方案,即鸿道Intewell-Win构型,是一款专为工业控制领域设计的国产操作系统,支持Windows实时扩展,具备以下特点和优势:
    的头像 发表于 12-24 17:40 215次阅读
    鸿道Intewell<b class='flag-5'>操作系统</b>的Windows<b class='flag-5'>实时</b>拓展方案

    linux是实时系统还是分时操作系统

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

    ARM开发板上的实时操作系统介绍

    在现代电子设备中,嵌入式系统扮演着越来越重要的角色。ARM处理器因其低功耗、高性能的特点,成为了许多嵌入式系统的首选平台。 一、实时操作系统RTO
    的头像 发表于 11-05 11:34 648次阅读

    freertos和rtos区别是什么

    RTOS 的主要特点是实时性、多任务处理、资源管理、中断处理等。 FreeRTOS 是一个开源的实时操作系统,由英
    的头像 发表于 09-02 14:18 1752次阅读

    鸿道Intewell实时操作系统MIPS架构生态:龙芯2K1000

    在当今快速发展的工业互联时代,实时操作系统RTOS)扮演着至关重要的角色。实时操作系统为工业制造、能源电力、轨道交通、汽车电子等领域提供了
    的头像 发表于 08-29 10:09 392次阅读
    鸿道Intewell<b class='flag-5'>实时</b><b class='flag-5'>操作系统</b>MIPS架构生态:龙芯2K1000

    简单认识RTOS实时操作系统

    RTOS(Real Time Operating System,实时操作系统)是一种专门设计用于在严格时间限制内处理任务操作系统。它以其高
    的头像 发表于 08-20 11:20 3463次阅读

    实时芯资讯:Core i7-9700TE与鸿道Intewell实时操作系统适配

    ,非常适合需要处理大量数据和多任务的应用场景。而鸿道Intewell操作系统是一款基于微内核架构的高实时操作系统,专为工业控制和智能制造设计,具备高
    的头像 发表于 07-18 17:46 344次阅读

    工业实时操作系统对比:鸿道Intewell跟rt-linux有啥区别

    Intewell和RT-Linux是两种不同的实时操作系统RTOS),它们具有各自独特的特点和优势。以下是Intewell操作系统的一些关键特性,以及与RT-Linux的比较:
    的头像 发表于 07-03 10:00 655次阅读
    工业<b class='flag-5'>实时</b><b class='flag-5'>操作系统</b>对比:鸿道Intewell跟rt-linux有啥区别

    实时操作系统之RT-Thread及FreeRTOS

    RT-Thread与其他很多RTOS如FreeRTOS的主要区别之一是,它不仅仅是一个实时内核,还具备丰富的中间层组件,如下图所示。FreeRTOS和RT-Thread是两种常见的嵌入式实时
    的头像 发表于 05-29 08:10 4382次阅读
    <b class='flag-5'>实时</b><b class='flag-5'>操作系统</b>之RT-Thread及FreeRTOS

    请问STM32上有跑RTOS实时操作系统的吗?

    亲们最近在鼓捣实时操作系统,有什么好的经验请不吝赐教,嘿嘿。 我在摸索uT/OS。社区有在STM32几款芯片上的移植。
    发表于 05-16 07:16

    微内核实时操作系统的介绍

    微内核实时操作系统(Microkernel Real-Time Operating System, μRTOS)是一种专为实时设计的操作系统
    的头像 发表于 05-11 17:13 610次阅读

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

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

    再谈嵌入式实时操作系统

    由于嵌入式处理器早期功能单一且运算能力不高,嵌入式应用已不能满足各个领域不断增长的需求。嵌入式操作系统应运而生,嵌入式操作系统可以支持新时代复杂、多任务环境和功能的嵌入式应用程序。嵌入式操作系
    的头像 发表于 04-09 17:27 881次阅读
    再谈嵌入式<b class='flag-5'>实时</b><b class='flag-5'>操作系统</b>