首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么shell不是RTOS代码的一部分?

为什么shell不是RTOS代码的一部分?
EN

Stack Overflow用户
提问于 2015-12-17 08:39:14
回答 1查看 1.1K关注 0票数 1

我看到许多RTOS (Ex Nuttx)都将shell作为应用程序。

在RTOS中,将不那么重要的代码保存在RTOS之外,以最小化代码大小,这只是一种惯例吗?

在Linux中,shell不是操作系统的一部分吗?

为什么shell不应该作为像内存管理器之类的模块在操作系统代码中呢?

如果我将RTOS中的外壳代码作为RTOS的一部分&与其他RTOS模块一样被启动和启动,会有什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2015-12-18 20:20:53

在RTOS中,将不那么重要的代码保存在RTOS之外,以最小化代码大小,这只是一种惯例吗?

这不是一个惯例问题,也与“重要性”无关。RTOS供应商/作者很难确定在嵌入式应用程序中什么是重要的。RTOS通常不是真正的“完整操作系统”,而是一个带有IPC、定时和同步服务的确定性实时线程或进程调度程序。他们有一件事做得很好,其他一切都取决于应用程序开发人员。此外,大多数RTOS只不过是用于构建单个单片多线程应用程序的静态链接库,而不是能够动态加载、执行和终止进程的操作系统。因此,从这个意义上说,提供的任何shell都不是您建议的单独的应用程序,而是一个单独的库组件,并且在运行时是一个单独的线程或任务。

此外,典型的嵌入式应用程序运行在自定义硬件上,通常具有严格的内存限制,因此RTOS必须是最小的或可扩展的,因此它只包含嵌入式应用程序所必需的内容,而不包含更多的内容。在需要“中间件”(如文件系统、网络、USB、命令外壳等)的地方,它们通常由第三方库或外接程序组件提供,并以线程形式运行,而不是在内核中运行;因为同样是由应用程序开发人员决定哪些任务是实时的关键任务,并且必须抢先执行任何其他操作。因此,它也是关于拥有完整的调度控制。

在Linux中,shell不是操作系统的一部分吗?

它不是Linux内核的一部分( Linux也不是RTOS)。大多数Linux发行版都包含一个shell,Linux的本质是某种形式的shell是必要的,或者至少对于调试、配置和维护来说很方便。但是Linux几乎没有可比性;一个最小的“轻量级”发行版需要大约4Mb的ROM和16 4Mb的RAM才能勉强启动,而一个典型的RTOS内核需要的是< 4Kb的ROM和很少的RAM。

为什么shell不应该作为像内存管理器之类的模块在操作系统代码中呢?如果我将RTOS中的外壳代码作为RTOS的一部分&与其他RTOS模块一样被启动和启动,会有什么问题吗?

你所说的“在RTOS内”是什么意思,而且在任何特定情况下你能做什么都是特定于该产品的。在RTOS是静态库的情况下,没有RTOS内部或外部,它都是一个应用程序。在RTOS内核方面--执行调度的部分--这没有什么意义。

所有这些都描述了一个典型的实时操作系统。它们包含的产品差别很大,但大多数产品具有高度的可伸缩性。例如,FreeRTOS或uC/OS-II这样的产品不再是调度内核,而eCOS、QNX和VxWorks在不同程度上是更完整的OSes,包括文件系统、shell、网络组件,在某些情况下还有清晰的设备驱动程序体系结构,甚至在某些情况下是POSIX API。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34330040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档