在操作系统内核中只实现了一个包含了基本OS服务的小内核。包括驱动程序、文件系统、协议栈和用户应用程序在内的所有其它的组件在内核外部分离的、保护内存的进程中运行。有问题的系统服务不再作为孤立的故障点,而是在它破坏其它服务或操作系统内核之前被终止并重启。
所有的组件能够通过消息传递进行通信,一个定义良好的通信机制保障了程序在保持彼此安全隔离的前提下进行数据交换。适当实现的消息传递也可以作为一个虚拟的“软件总线”,答应几乎任何的软件组件,甚至是一个设备驱动程序被动态地加入或替换,对于必须提供连续服务的系统而言这是一项关键要求。
和传统的操作系统架构相比,微内核支持嵌入式设备赢得明显更快的平均修复时间。例如,假如一个设备驱动程序失败将可能出现以下情况:操作系统可以终止该驱动程序,回收其正在使用的资源,并对其进行重新启动,这个过程通常这只需要几个毫秒时间。
尽管和传统的操作系统相比,基于消息传递的微内核RTOS通常提供了更好的容错性和动态升级能力,也有一些观点认为消息传递增加了开销。在实际应用中,假如实现正确,消息传递的性能可以接近底层硬件的内存带宽。例如,一个微内核RTOS可以采用多段式消息和线程到线程的消息数据直接拷贝等各种技术,来确保系统性能可以达到传统的进程间通信方法的水平。由一些组织如DeDICatedSystEMS等进行的独立测试证实,和传统的RTOS相比,微内核RTOS在一系列的实时指标方面表现良好,在很多情况下甚至有更好的表现。
策略决策
RTOS有助于使一个复杂的应用程序具有可猜测性和可靠性。当然,选择一个合适的RTOS本身就是一项复杂的任务,而RTOS的底层架构是选择的重要依据,此外还有一些其它因素,包括:
调度算法的灵活选择。RTOS应该支持调度算法的选择、轮询、零星调度等)并支持以线程为单位设定这些算法。这样,工程师就可以不必将一个算法用到系统中的所有线程。
图形用户界面。RTOS使用的是原始的图形库还是能支持多层界面、多路显示、3D渲染以及其它高级的图形功能的真正的窗口系统?能很轻易定制GUI的外观吗?GUI支持同时显示和输入多种语言吗?
远程诊断工具。因为对很多嵌入式系统而言,中断系统运行进行检测和维护是无法接受的。RTOS供给商应该提供诊断工具,这些工具能够在不中断系统服务的前提下分析系统的行为。要寻找能提供代码覆盖、应用测评、跟踪分析和内存分析工具的供给商。
开发平台。RTOS提供商提供的开发环境是基于像Eclipse那样的开放平台,答应工程师嵌入所喜爱的第三方工具来进行建模、版本控制吗?还是开发环境基于专利技术?
互联网功能。RTOS支持预集成最新的IPvIPvIPsec、SCTP和具有NAT功能的IP过滤等协议栈套件吗?它支持嵌入式网络浏览器吗?浏览器应该具有可扩展的封装模式,并能够在很小的屏幕上绘制网页。它也应该支持像HTML0XHTMLSSL0和WML3这样的标准。
标准API。RTOS将你限定到专有的API之中了吗?还是它对于像POSIX这样的标准API提供了完全的支持,这使得将代码移植到其它操作系统,或者从其它操作系统移植代码变得更轻易?另外,所用的RTOS提供完全一致性的API还是仅仅支持被定义接口的一个子集?例如,POSIX.1的最新版本包含了大约1,300个接口。
多处理技术。RTOS能支持对称多处理和分布式多处理技术来提高应用性能和容量吗?假如这样,是必须重新设计你的应用程序呢,还是RTOS能够将应用程序透明的分配到多个处理器上去呢?
8.源代码工具包。RTOS供给商提供了能使RTOS满足设计需求的具有具体文档的定制工具包吗?供给商提供了方便开发驱动定制硬件的驱动程序开发工具包吗?
9.对于很多公司而言,选择一款RTOS是一项战略性决策。RTOS供给商在对上述问题提供了清楚的回答后,你将选择出一个在现在和将来都适合你的RTOS。
上一篇:对六核处理器的应用测试很关键