RTOS 和嵌入式 Linux 有啥区别? [关闭]

Posted

技术标签:

【中文标题】RTOS 和嵌入式 Linux 有啥区别? [关闭]【英文标题】:What is the difference between RTOS and Embedded Linux? [closed]RTOS 和嵌入式 Linux 有什么区别? [关闭] 【发布时间】:2014-11-10 08:51:01 【问题描述】:

RTOS 和嵌入式 Linux 用于嵌入式系统编程。嵌入式 Linux 本身是 RTOS 吗?谁能列出比较或不同之处吗?

【问题讨论】:

RTOS(实时操作系统)是具有确定性行为的软件。事件在时间限制内处理。嵌入式 Linux 不是 RTOS,因为事件/中断通常由无法保证延迟的延迟过程或“下半部分”代码处理。但是,已经有用于嵌入式 Linux 的 Linux 的 RTOS 实现。我认为 Wind River (Intel) 发布了这个版本。 unix.stackexchange.com/questions/41133/… 这个问题显然不是“关于通用计算硬件和软件”,我投票决定重新开放(尽管它已经过时了)。 @Clifford 有朝一日我希望看到这些强有力的结束投票和反对票(因为问题是否离题)消失了!在主题和非主题之间划清界限是荒谬的,粗鲁和傲慢的版主有时甚至不将主题转移到新链接,例如超级用户,而只是公然评论,它是离题的话题 !你的回答很棒。 一个实时操作系统不是 "通用计算软件";它们被硬实时系统(通常是嵌入式)的开发人员使用,因此甚至不是“通用计算硬件”。此类系统的最终用户不会与在构建系统中使用 RTOS 进行交互或知道它 - 例如,它可能是您车辆的 ABS 系统。这个问题的赞成票数令人印象深刻 - 更接近的选民显然是少数。 【参考方案1】:

Linux 是通用操作系统 (GPOS);它在嵌入式系统中的应用通常是由设备支持、文件系统、网络连接和 UI 支持的可用性推动的。所有这些东西都可以在 RTOS 中使用,但通常支持不太广泛,或者需要额外的成本或集成工作。

许多 RTOS 并不是 Linux 意义上的完整操作系统,因为它们由静态链接库组成,仅提供任务调度、IPC、同步定时和中断服务等等——本质上只是调度内核。这样的库与您的应用程序代码链接,以生成您的系统直接(或通过引导加载程序)引导的单个可执行文件。大多数 RTOS 不像 Linux 那样直接支持从文件系统动态加载和卸载代码 - 它在启动时就在那里,并一直运行到断电。

至关重要的是,Linux 不具备实时能力。 RTOS 提供调度保证,以确保确定性行为和及时响应事件和中断。在大多数情况下,这是通过基于优先级的抢占式调度算法,其中准备运行的最高优先级任务总是立即运行 - 抢占任何优先级较低的任务,而无需特定的收益或放弃 CPU,或完成时间-切片。

Linux 有许多调度选项,包括实时调度程序,但这充其量是“软”实时——我不喜欢这个术语,因为它定义不明确,本质上意味着实时,大多数情况下时间,但有时不是。如果您的应用程序不需要“硬”实时,那很好,但实时 Linux 中的典型延迟将在数十或数百微秒的数量级,而典型的 RTOS 实时内核可以实现从零开始的延迟到几微秒。

嵌入式 Linux 的另一个问题是它需要大量的 CPU 资源,可能 >200MIPS,32 位处理器,理想情况下带有 MMU,4Mb 的 ROM 和 16MB 的 RAM 才能启动(可能需要几秒钟)。另一方面,RTOS 可以在几毫秒内启动,在 8 位以上的微控制器上运行不到 10Kb。尽管表面上是“免费”的,但这可能会对批量生产的系统成本产生重大影响。

有更大的 RTOS 产品展示了 GPOS 的一些特性,例如动态加载、文件系统、网络、GUI(例如,在 QNX 中),并且许多 RTOS 提供 POSIX API(通常次要于它们的原生 real- time API),例如 VxWorks 和 QNX,因此为 Linux 和 Unix 开发的大量代码可以相对容易地移植。这些更大更全面的 RTOS 产品保持可扩展性,因此不包括不需要的功能。相比之下,Linux 的可扩展性要有限得多。

【讨论】:

以上是关于RTOS 和嵌入式 Linux 有啥区别? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式RTOS生产者和消费者有多种类型的消息[关闭]

linux系统与嵌入式linux有啥区别和关系?

在 mac 和 linux 上使用终端有啥区别? [关闭]

裸机中环形队列与RTOS中消息队列的区别

RTOS相对延时和绝对延时的区别

RTOS相对延时和绝对延时的区别