RTOS和嵌入式Linux有什么区别?

Nay*_*yed 40 embedded rtos embedded-linux

RTOS和嵌入式Linux用于嵌入式系统编程.嵌入式Linux本身是RTOS吗?有人可以列出比较或差异吗?

Cli*_*ord 78

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(通常是其本机实时API的辅助)例如VxWorks和QNX,因此可以相对容易地移植为Linux和Unix开发的大量代码.这些更大更全面的RTOS产品仍然可扩展,因此不包括不需要的功能.相比之下,Linux的可扩展性有限.