提起实时操作系统,行业内的都不陌生,如:uclinux、FreeRtos、Ucos-III、Rt-thread、VxWorks和SYS/BIOS(ti-RTOS)等等。它们大多数应用于嵌入式领域,由于其轻量级的内核,优秀的调度性能和强大的实时性等特点广泛用于嵌入式系统开发之中,如今在嵌入式软件组成中已占有非常重要的地位。那么众多版本的操作系统中如何评判其性能的优劣?如何进行嵌入式系统设计时操作系统的选择呢?下面从个人的观点谈谈看法。 什么是嵌入式实时操作系统? 当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。 注:在工业控制、 军事设备、 航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。我们常常说的嵌入式操作系统都是嵌入式实时操作系统。比如μC/OS-II、eCOS和Linux、HOPEN OS。故对嵌入式实时操作系统的理解应该建立在对嵌入式系统的理解之上加入对响应时间的要求。 以上是百度百科对于嵌入式实时操作系统(RTOS)的定义。从定义上可以看出嵌入式实时操作系统不同于一般的嵌入式操作系统,区别主要体现在“快”字之上。从个人理解的角度,简单粗暴的讲,首先它是一个操作系统,具有操作系统的一般功能和特征,重点是它在任何状态下都能在特定的时间内对于外界的特定激励给出相应的响应。那么很显然众多版本的实时操作系统最重要的拼的就是这个“激励与响应构成的快字”。那么是不是只要快就可以了呢?很显然不是,要不就只留下微微微内核得了,别的都不要了最快。
操作系统概念
从一个特殊的例子入手探讨一下实时操作系统的关键指标,进而总结出一般的嵌入式实时操作选用时所关注的重点指标。下面是从TI的RTOS名为SYS/BIOS的文档中选取的Benchmarks表,表中主要列出了其在不同的DSP、ARM和单片机体系结构下时间和空间的基准情况。
TI-RTOS基准参数表
下面是C66体系下的时间基准参数,可以看出其列出了中断延迟、中断上下文切换、硬中断操作API的耗时、中断到阻塞的任务切换耗时、硬中断到软中断的耗时、不同情况下的软中断API耗时、不同情况下信号量的操作耗时以及系统时钟API耗时等。值得注意的是耗时的单位,这里没用us或者ms,而是cycles,因为这项测试没有在固定主频下进行。
C66体系下的时间基准参数表
所以,不管具体的指标性能,一个RTOS在测试性能指标结果出来的时候首先应该列出来: (1)硬件的环境是什么? (2)硬件有什么特殊的配置没有? (3)编译器的版本? (4)编译器的选项? (5)测试结果如果不是CPU的cycle数,而是us,那么至少应该列出CPU的主频信息。 否则,拿别的RTOS作比较的时候,任何一个参数或者环境改变,都是不公平的。比如:一个编译用Debug 优化等级-O1,另一个Release,优化等级 –O3 怎么比呢? 除了时间基准,内核还提供了空间的基准值,包括其存储所占ROM空间和运行所占RAM空间大小情况(分别在静态和动态两种应用配置前提下)。
静态配置系统所占空间基准表
动态应用系统所占空间基准表
表中给出的指标非常详细,包括不同种类应用前提下的代码和数据所占ROM空间大小,运行时中断栈、任务栈、堆和BSS的RAM空间大小等。由于多数嵌入式系统体积、功耗和成本等因素的约束,ROM和RAM资源都很紧张,在同样的功能和性能的前提下,这些指标也是评价一个RTOS的关键因素。
|