良许Linux教程网 干货合集 RTOS实时操作系统,真的实时吗?

RTOS实时操作系统,真的实时吗?

我们常常谈到RTOS(Real Time Operating System**)实时操作系统,那么,实时操作系统究竟是什么呢?它是否真正实时的呢?

这个问题相信有很多刚开始学习的同学都会感到疑惑。

简述RTOS

RTOS,即实时操作系统(Real Time Operating System**),是一种能够及时响应外部事件或数据,并以足够快的速度进行处理和控制系统的操作系统。

根据百度百科的解释:

实时操作系统是指在外界事件或数据产生时,能够及时接收并以足够快的速度进行处理,处理结果能够在规定的时间内控制生产过程或快速响应处理系统,调度所有可用的资源完成实时任务,并保证所有实时任务的协调运行的操作系统。

实时操作系统的关键在于实时(及时响应)。简单来说,它能够及时解决和处理一些紧急事件,而不会出现程序“卡住”的情况。

举个例子:假设有一辆移动的小车,传感器检测到前方有障碍物,实时操作系统需要立即减速或停车,而不是等待很长时间才做出反应(反应过慢可能导致碰撞)。

与裸机相比

从裸机转RTOS的同学,就会拿裸机与RTOS相比较:

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

我可以肯定的说:RTOS相比裸机更方便,优点也更多。当然,前提是MCU资源(Flash、RAM)能满足需求。

因为早期的MCU资源相对匮乏,比如Flash低于10K,RAM低于1K,这个时候用RTOS,优点就不明显,反而更容易暴露缺点。

但现在MCU资源相对比较多,动辄超过1M的Flash、 100K的RAM,这种情况下,如果跑裸机,我感觉太浪费MCU资源了。

此处推荐阅读:

从 裸机 到 RTOS 思维的转变

裸机系统与多线程系统的区别

在51单片机上跑RTOS有没有意义?

与分时操作系统相比

很多人会联想到分时操作系统(TSOS),RTOS和TSOS有什么区别?各自有什么特点?

现在的处理器速度相对更快了,分时操作系统的实时能力也很高了。它们的区别其实可以从字面意思上理解,分时就是分为时间片,这个时间片很小,一般us级别甚至更低。

你了解一下TSOS分时操作系统的调度机制,你就会更加明白二者之间的区别了。

这一节可以参看我的之前分享的文章:RTOS和TSOS有什么区别?

RTOS真的实时吗?

回到今天的话题:RTOS真的实时吗?

严格来说,RTOS也不是实时响应并处理紧急的事情,只是在很短时间(一般ms级别)就做出了响应,给人感觉就是实时在响应。

单个CPU,在同一个时间只能处理一件事(只能执行一处程序),你创建了任务1、 任务2、 任务3……等多个任务,CPU在执行的时候都是轮流(按照优先级)执行。

1.系统滴答

RTOS实时响应有一个重要的配置,那就是系统滴答(SysTick)。

比如FreeRTOSConfig.h

#define configTICK_RATE_HZ        ((TickType_t)1000)

再比如μCOS系统的os_cfg.h

#define OS_TICKS_PER_SEC        1000u

系统滴答决定了你RTOS底层调度的时间大小,如果设置1000,那么1ms就会调度一次,也就说1ms会做出一次响应。

拿上面小车遇到障碍物为例:传感器检测到障碍物,通知更高优先级任务进行刹车,这个过程只需要1ms就会得到响应。

你肯定说:那我设置10000,是不是0.1ms就会做出响应?是不是系统滴答越大越好?

按理说系统滴答值越大响应越快,但系统调度也是需要占用时间:

image-20231114213605898
image-20231114213605898

调度的时间长度不变,如果N到N+1之间时间越短(滴答),留给执行任务的时间就越短。

所以,滴答值也不是越大越好,需要一个合理的值,可以参看:实时操作系统的滴答Tick设置多少才合适?

2.硬件中断

从裸机开发转RTOS的同学就有这样一个思维:我用中断就能做到实时响应

的确,中断能做到实时响应,但不能满足大部分需求。

拿上面小车刹车来说:比如检测到前方障碍物立刻做出中断响应,此刻执行减速的动作,这个动作假如是S曲线(减减速)刹车,执行时间为1s。

如果你在中断函数里面执行这个1s刹车动作,CPU就不会做其他事情了,这样你觉得可以吗?

硬件中断只能做出一个“紧急通知”,不能做出(耗时的)执行动作。

RTOS结合硬件中断就能完美解决这个问题,中断通知高优先级任务执行刹车减速的动作,但这个过程可能需要1ms。

所以,你会发现RTOS并非真正的实时,只是这个时间很短,你感觉不出来。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部