μC/OS-II与RTLinux的实时原理及其性能改进分析

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:wumingxiaoziwoaini
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:简要介绍了嵌入式实时操作系统(RTOS)的概念和技术特点。对μC/OS-II与RTLinux两种具有代表性的开源硬实时操作系统实现原理和性能做了详细的对比分析研究。最后提出了影响实时操作系统的主要因素和提高嵌入式操作系统实时性的解决途径。
  关键词:嵌入式实时操作系统;μC/OS-II;RTLinux
  中图分类号:TP316文献标识码:A文章编号:1009-3044(2007)03-10760-02
  
  1 引言
  
  嵌入式实时操作系统(RTOS,Real Time Operating System)已经广泛应用与军事、工业、生活等各行各业。一般的分时操作系统只要求计算结果在逻辑上是正确的,而时间上的错误一般不会造成不可挽回的后果。而RTOS是对事件进行实时的处理,必须在事件发生时在规定的时间内作出响应,并且及时处理相关事件,否则有可能造成灾难性后果,所以实时性能对一个RTOS是至关重要的。
  
  2 嵌入式操作系统的概念及技术特点
  
  2.1 嵌入式实时操作系统的相关概念
  RTOS指的是具有实时性、能实时控制系统工作的嵌入式多任务操作系统。其首要任務是调度计算机一切可以利用的资源完成实时控制任务。
  实时系统指的是在RTOS基础上开发出来的针对特定行业应用的实时应用系统,如多媒体通信、在线事务处理、生产过程控制、交通控制等。根据系统对时间要求的紧迫程度不同,我们把实时系统分为硬实时(hard real-time)和软实时(soft real-time)。硬实时系统对时间的要求很高,系统必须及时的对事件作出反应,绝对不能发生错过事件处理的deadline的情况。否则就要造成巨大的损失和灾难。比如,在航天飞机返回地球时,航天飞机上的飞行控制器不能及时调整返回大气层的飞行角度:角度过小,航天飞机会在坠入大气层中被烧毁;角度过大,又会被大气层反弹回太空,这样宇航员就永远回不来了。与硬实时系统相对,软实时系统允许在重负载的情况下发生错过deadline的情况而不会造成非常大的危害。比如在VOIP系统中,当网络非常繁忙的时候允许一些包延迟到达或被丢弃。但是,一般来说硬实时和软实时的时间要求没有一个严格的界限,主要还是根据具体的应用来分类。
  2.2 硬实时操作系统技术特点
  目前,已经被使用的RTOS有几十种。如Nucleus Plus、QNX、VxWorks、pSos、linux 2.6、μC/OS-II 和 RTLinux 等。这些RTOS一般都能运行在各种不同的微处理器上;具有强大的通用型操作系统的功能,如具备了文件和目录管理、多任务、设备驱动支持、网络支持、图形窗口以及用户界面等功能;具有丰富的API 和嵌入式应用软件。上述RTOS中有些是软实时,如Linux 2.6;有些是硬实时,如VxWorks、μC/OS-II 和 RTLinux。
  从大多数硬实时操作系统的技术特点上分析[1-6]:
  第一、RTOS内核必须是可重入的。这一点对于实时系统来说特别重要。因为不可重入的内核必然带来慢速的中断响应和不可预料的操作时间。
  第二、RTOS必须提供一种合适的进程调度方法,并且快速的进行任务切换。如,在基于优先级的可剥夺的进程调度算法的RTOS中,快速的任务切换在满足高优先级的任务抢先时,提供了完成deadline的保证。
  第三、RTOS能够快速的响应外部中断。减少中断时间,将临界区缩到最小,这样可以提供最大的中断响应效率,减少对其他高优先级任务的影响。
  第四、系统维护一个满足应用要求的实时时钟。而实时时钟是与硬件密切相关的,其时钟节拍数很大程度上决定了硬实时系统的精确度。RTOS必须通过使用实时时钟的接口来提供各种事件的定时器。
  第五、RTOS提供固定的或可变的内存管理机制。内存管理机制在内核中的实现要求尽可能的简单。高级的功能可以由系统级进程来完成。
  本文主要对比分析 μC/OS-II 和 RTLinux 两种源代码公开、应用广泛的RTOS实时原理和性能。并提出了影响RTOS的主要因素和提高实时性的解决途径。
  
  3 μC/OS-II实时原理分析
  
  3.1 μC/OS-II简介
  μC/OS-II是一种性能优良、源码公开且被广泛应用的硬实时操作系统,源自于 1992 年美国嵌入式系统专家Jean J.Labrosse开发的μC/OS。μC/OS-II是专门为计算机的嵌入式应用设计的,绝大部分代码是用ANSI C语言编写的,只有CPU硬件相关部分是用汇编语言编写,以便于移植到其他微处理器上,μC/OS-II核心部分8.3KB,可以根据实际需要剪裁到最少2.7KB,短小精悍。内核提供了:任务调度、任务管理、时间管理、内存管理和任务间通信与同步等基本功能;不提供:输入/输出管理、文件管理、网络服务等扩展功能。具有稳定可靠、效率高、占用空间小、实时性能优良等优点[1]。
  3.2 μC/OS-II硬实时性的实现原理
  μC/OS-II可以提供极其严格的时间保证,性能甚至超越了某些商业RTOS。
  首先,从影响系统实时性最大的任务调度策略看,μC/OS-II是基于优先级驱动的可剥夺型实时多任务内核。每个任务有独立的堆栈空间,并用一个称为任务控制块(TCB)的数据结构表示。每个任务在创建时,根据其重要程度的不同,被赋予一定的优先级。每个任务的优先级是惟一的,这个优先级同时也惟一的标识了一个任务,同时目前的μC/OS-II不支持时间片轮番调度法,所以任务调度策略是很单一的。μC/OS中最多可以支持64个任务,分别对应优先级0~63(其中0、1、2、3、OS_LOWEST_PRIO-3、OS_LOWEST_PRIO-2、OS_LOWEST_PRIO-1、OS_LOWEST_PRIO、保留给系统),其中0为最高优先级任务。优先级驱和可剥夺的含义是最高优先级的任务一旦就绪,总能得到CPU的使用权,而不必等待当前运行的任务主动放弃CPU的使用权。这样,高优先级别的任务何时可以执行、何时可以得到CPU的使用权都是可知的。这对于实时系统的响应时间最优化无疑是非常重要的[1]。(如图1)
  μC/OS-II通过两种方法进行任务调度:一是时钟节拍或其他硬件中断到来后系统会调用函数OSIntCtxSw()实现切换功能,称为中断级调度;二是任务主动进入挂起或等待状态,这时系统通过发软中断命令或依靠处理器执行陷阱指令来完成任务切换,称为任务级调度。中断服务程度或陷阱处理程序的向量地址必须指向函数OSCtxSw()。(如图2)
  另外,μC/OS-II为了处理临界段(Critical Section)代码,需要关中断,处理完毕后再开中断。这使得μC/OS-II能够避免同时有其他任务或中断服务进入临界段代码。关中断时间是RTOS最重要的指标之一,因为这个指标影响系统对实时事件的响应性。μC/OS-II通过两个宏(macros)实现开关中断,分别是OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()[1]。
  最后,和其他RTOS一样,μC/OS-II系统需要时钟节拍来实现时钟周期中断,以及实现任务延时和确认超时。所以时钟节拍对系统实时性的影响很大。μC/OS-II的节拍率是可以根据应用的需要由用户设定的,范围是10-100次/秒,时钟节拍越高,系统的额外负荷就越重,但是实时性却越强。
  
  4 RTLinux实时原理分析
  
  4.1 RTLinux简介
  Linux原本是一个通用目的计算机操作系统(GPOS),必须对其进行一些改动才能成为RTOS。新墨西哥理工学院开发的基于标准Linux的硬实时操作系统RTLinux 已成功的应用于从航天飞机的空间数据采集、科学仪器测控到电影特技图像处理等广泛的实时环境下[3]。
  RTLinux 开发者并没有针对实时操作系统的特性重写Linux 的内核(这样做工作量会非常大,而且要保证兼容性也非常困难)。RTLinux是通过在底层对Linux实施改造的产物。首先,在Linux内核与硬件中断之间增加一个精巧的可剥夺的实时内核,然后,把标准的Linux内核作为实时内核的一个进程与用户进程一起调度,标准的Linux内核的优先级最低,可以被实时进程抢断。正常的Linux进程仍可以在Linux内核上运行,这样做的好处是对Linux 的改动量最小,从一般的目的内核机制分离出了实时内核机制,有助于每个机制都能独立优化,实时内核能被保持小而且简单[2-3]。Linux与RTLinux内核细节的比较如图3。
  4.2 RTLinux硬實时性的实现原理
  首先,RTLinux在中断控制上进行了改进。本来是由Linux内核完全控制Linux进程和中断控制硬件的,现在在Linux内核和中断控制硬件之间,增加了一个RTLinux内核。Linux的控制信号都要先交给RTLinux内核进行处理。RTLinux使用的关键技术是中断控制硬件的软件模仿。当Linux使硬件中断无效时,RTLinux内核将阻止这个请求,记录它,然后返回到Linux。这样 Linux就不能真正地禁止中断了,无论Linux在什么状态下都不可能延迟实时中断响应时间。
  图3 Linux与RTLinux内核细节的比较
  当一个中断到达时,RTLinux内核截获这个中断,然后决定该怎么做。如果有这个中断对应的实时处理程序的话,那么将调用这个处理程序;如果没有这个实时处理程序或者如果那个处理程序表明他想和Linux共享中断,这个中断将标记为“未解决”的;如果Linux已经请求中断是可用的,那么任何未解决的中断都将参与竞争,这时会调用Linux的处理程序,重新启用硬件中断。
  另一个重要的改进是在任务调度方面。由于传统的Linux的进程调度策略并非剥夺型。为了满足硬实时性的要求,RTLinux中的rtl_sched.h中重新定义了实时的进程控制块rtl_thread_struct,并重新定义了可剥夺型的调度程序rtl_schedule()。这样,RTLinux在默认的情况下根据各个实时任务的优先级来确定执行的先后次序。优先级高的先执行,优先级低的后执行,保证最高优先级的任务一旦就绪,总能得到CPU的使用权。这和前面介绍的μC/OS-II的调度策略是一样的。与μC/OS-II不同之处在于,RTLinux将任务调度器本身设计成一个可装载的内核模块,用户可以根据自己的实际需要,编写适合自己的调度算法。
  前面提到过,对于μC/OS-II而言,采用的是固定时钟节拍率的设置方式,精细的时钟节拍虽然可以提高任务调度器的效率,但会增加CPU处理定时中断的时间开销。RTLinux的时钟节拍的设置方式和μC/OS-II所采用的固定时钟节拍不一样,RTLinux对时间精度和时钟中断处理的时间开销进行了折中考虑,将定时器芯片设置为终端计时中断方式。根据最近的进程的时间需要,不断调整定时器的节拍率。这样不仅可以获得高定时精度和实时性,同时中断处理的开销又最小。
  
  5 影响实时性能的因素及改进途径
  
  对于评价一个RTOS性能最重要的指标是任务响应时间,任务响应时间指从某事件到来,到系统响应此事件并开始执行的时间间隔。有以下几个因素影响任务响应时间[1-6]:
  (1)中断分派时间IDT(Interrupt Dispatch Time)。中断发生时,系统调用中断服务程序之前保存相关寄存器和其他系统状态所花费的时间。
  (2)中断服务时间IST(Interrupt Service Time)执行ISR花费的时间。
  (3)内核抢占时间KPT(Kernel Preemption Time)从RTOS想要抢占当前进程到这种抢占实际发生的时间间隔。
  (4)调度延迟SD(Schedule Delay)。在某个调度时机,调度程序选择下一个进程所花费的时间。
  (5)上下文切换时间CST(Context Switching Time)。系统保存当前进程的寄存器和系统状态,其次重置下一个进程的寄存器和状态所用的时间。
  (6)系统调用返回时间RSC(Return From System Call)内核在返回到用户态之前用于检查必要的返回条件所用的时间。
  任务的调度策略对任务响应时间的影响是最大的,任务调度策略算法有很多种,基于系统实时性的要求μC/OS-II与RTLinux都采用了基于优先级驱动的可剥夺型实时调度策略。另一方面,我们发现可以通过努力减少IDT、IST、KPT来减少任务响应时间,其中减少IST的效果尤为明显。这就要求我们在设计实时应用程序时,进入中断处理程序后,关闭中断的时间要尽量的短,只把必需的处理放在关闭中断期间处理,而其他的都应该放到开中断后处理。当然,提高RTOS的实时性能是一个综合优化的结果,需要结合具体的应用来进行[4-6]。
  
  6 结束语
  
  μC/OS-II和RTLinux两种开源的硬实时操作系统从实现的原理上来说各有特色:μC/OS-II是单个微内核实现了RTOS的基本功能,保持了微内核操作系统固有的优点。RTLinux是在通用Linux版本的基础上经过改进后得到的双内核RTOS,他们都采用了能满足硬实时性的基于优先级驱动的可剥夺型实时调度策略 ,具有很好实时性和扩展性,完全能够满足大多数嵌入式系统的要求。又由于他们都是开放源代码的(虽然有一些限制),应用开发者可以基于特定的应用目的作相关的修改,所以其应用发展前景是相当乐观的。
  参考文献:
  [1]Jean J. Labrosse.邵贝贝 译. 嵌入式实时操作系统μC/OS-II(第2版)[M]. 北京:北京航空航天大学出版社,2003.
  [2]郭春生, 朱兆达. 硬实时操作系统-RTLinux[J]. 电子技术应用,2002,4:17-19.
  [3]http://www.fsmlabs.com/.
  [4]赵志强, 谢康林. 嵌入式实时操作系统的资源调度[J]. 计算机工程,2003,29(2):273-274.
  [5]朱响斌, 涂时亮. Linux的实时性能测试[J]. 微电子学与计算机,2004,21(11):85-88.
  [6]刘云生, 徐超. RTOS实时性能测试[J].计算机工程与应用,2004,11:93-95.
  本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
摘要:动态电路的一个特征是当电路的结构或元件的参数发生变化时,可能使电路改变原来的工作状态,转变到另一个工作状态,这种转变往往需要一个过程,在工程上称为过渡过程。本文以动态电路理论中一阶动态电路用三要素的方法分析计算、二阶以及二阶以上的动态电路用拉普拉斯变换分析求解为例,详述了如何分别运用MATLAB语言编程和应用Simulink模块的方法来对电路进行仿真分析和计算。结论表明,应用MATLAB可以
期刊
摘要:简要回顾了常见的办公OA系统结构和开发技术,分析了B/S结构下OA开发的系统架构、办公应用需求以及开发中存在的问题,设计了一种集成办公软件RedOffice的OA系统。实践证明,该系统可以满足办公需求。  关键词:B/S结构;OA系统;办公应用需求;RedOffice  中图分类号:TP317 文献标识码:A 文章编号:1009-3044(2007)03-10744-02    1 引言  
期刊
摘要:本文介绍了VRML与JAVA、JAVASCRIPT通讯的原理、实现方法以及各自的性能特点,重点研究了JAVA、JAVASCRIPT和VRML在三维建模方面的结合应用技术,并给出了实例。  关键词:虚拟现实建模语言;交互;EAI;API  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)03-10764-01    1 引言    近年来,随着网络技术和WWW的发展
期刊
摘要:硬盘并没像PC的“摩尔定律”一样发展,硬盘成高性能PC发展的绊脚石。新兴的SSD技术日益成熟,这种新技术将改进PC系统结构。本文介绍最新SSD技术的进展,并利用SSD技术对传统的PC存储系统结构进行改进的几种方案及优劣比较。  关键词:SSD;存储系统结构;硬盘;Nand Flash  中图分类号:TP334文献标识码:A文章编号:1009-3044(2007)03-10762-02    
期刊
摘要:针对现有车载MP3播放器的不足,设计了一个基于S3C2410芯片的μClinux环境下的车载MP3播放系统。详细介绍了嵌入式μClinux操作系统和由ARM9芯片S3C2410构建的MP3播放器的硬件结构和软件系统。  关键词:车载MP3; μClinux;S3C2410  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2007)03-10756-02    1 引言 
期刊
摘要:提出了以Visual C++为开发工具,基于OpenGL技术,开发军用物资装载仿真系统的具体方案。采用数值仿真与可视化技术相结合的方法,建立了军用物资装载模型,对物资装载量与装载方式进行仿真,并得出直观的计算结果,为实际货运装载提供理论依据。  关键词:OpenGL;三维模型;虚拟装载  中图分类号:TP391 文献标识码:A文章编号:1009-3044(2007)03-10802-02  
期刊
摘要:随着计算机技术飞速发展,传统的纸质地图在表现形式及信息查詢方面已越来越难以满足人们对地图的使用需求,如何将互联网用于地图信息管理已成为当前研究的重点。本课题主要研究内容是利用Ajax框架开发“web电子地图系统”,满足用户对地图搜索、定位等功能模块在性能方面上的要求。  关键词:Ajax; web电子地图; Hibernate; LRU  中图分类号:TP399 文献标识码:A文章编号:10
期刊
摘要:本文介绍了在Windows的新版本“Windows Vista”中将要使用的新一代标记语言XAML,给出了它的定义、规则。对新一代编程语言的发展方向作了一定的探讨。  关键词:XAML;Windows Vista;标记语言  中图分类号:TP312文献标识码:A 文章编号:1009-3044(2007)03-10774-02    1 引言    下一个版本的Microsoft Window
期刊
摘要:Visual Basic具有强大的数据库功能,是开发数据库管理系统的常用工具。输入设计是系统设计中一个重要部分,良好的输入,可以确保数据的准确性和可靠性,数据输入有效性监测是输入设计重点考虑的问题。  关键词:数据输入;有效性监测;主要措施;实现手段  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)03-10768-03    1 引言    Visual Ba
期刊
摘要:在信息国际化的今天,正确处理不同的语言文字已经成为绝大多数软件系统的必备功能,该文介绍了在Java程序设计中如何处理和显示不同的语言文字,尤其是非英文字符的处理。本文从基本的编码知识入手,详细介绍了Java语言中编码转换的技术,并给出了可以用于实际开发的实例代码,为构建国际化的Java软件系统打下良好的基础。  关键词:Java程序设计;Unicode字符集;编码/解码  中图分类号:TP3
期刊