




已阅读5页,还剩52页未读, 继续免费阅读
(计算机软件与理论专业论文)一种实时嵌入式多任务微内核的分析与改进.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 随着嵌入式设备越来越广泛,基于实时多任务微内核的嵌入式实时操作系统也 得到越来越多的应用。因此研究一种实时多任务微内核,提高它的实时性和性能 是很有必要的。 本文以目前广泛运用的嵌入式实时多任务微内核雎c o s i i 作为原型,在研究 p c o s i i 系统和前人研究的基础上,做了以下研究改进工作:( 1 ) 任务调度方面。 提出了重要性等级组的概念,改进了调度方法,使得同一重要性等级组内的不同 任务进行任务调度时不执行任务切换,提高了系统的实时性;同时提出了一种新 的查询就绪队列中优先级最高的任务的方法,使得制约系统支持最大任务数为6 4 的瓶颈得到去除;( 2 ) 时钟中断处理。本文引入了一种解决方案,将系统时钟中断 的处理过程简化,把用户自定义的时钟中断处理单独放在一个任务里面,从而提 高了系统的中断响应速度和实时性。 文章最后探讨了g c o s i i 移植到a r m 平台下的方案,并且对需要改动的文 件进行了改动。 关键词:微内核、实时操作系统、任务调度、重要性等级组 a b s t r a c t t h er t o s ( r e a l - t i m eo p e r a t i n gs y g e m ) h a sb e e nw i d e l yu s e dd a yb yd a ys i n c et h e e m b e d d e dd e v i c e sc o m et oo u rd a i l yl i f e s oi ti sn e c e s s a r yt od os o m er e s e a r c h w o r ko l ii m p r o v i n gt h er e a l - t i m ep e r f o r m a n c eo f ac e r t a i nr e a l - t i m em i c r o k e m e l i nt h i sp a p e r , ic h o s e c 0 s i l ( ar e a l t i m ek e r n e l ) w i t ha l ls o u r c ec o d e a v a i l a b l e 鹊t h ea r c h e t y p et oh a v ea na n a l y s i s b a s e do nt h es t u d yo fi t c o s i ls y s t e ma n dt h e r e s e a r c hw o r ko fo t h e rp e o p l e ,im a d et h ew o r kb e l o w :( 1 )ii n t r o d u c e dan e w c o n c e p t i o nc a l l e di m p o r t a n c el e v e lg r o u pt ot h ef i e l do ft a s ks c h e d u l i n g a sar e s u l t o fm yi m p r o v e dm e t h o do ft h et a s ks c h e d u l i n g n ow o r kw i l lb ed o n ew h e no n et a s k r u n n i n gw o u l dh es w i t c h e db ya n o t h e rt a s ki ut h er e a d yq u e u eb e c a u s et h et w ot a s k sa r e i nt h es a n l ei m p o r t a n c el e v e lg r o u p s ow eg o ti m p r o v e dp e r f o r m a n c e ia l s oa d v a n c e an e wm e t h o dt of i n dt h et a s kw h i c hh a st h eh i g h e s tp r i o r i t yi nt h er e a d yq u e u e 。n l i s g e t sr i do f t h er e s t r i c t i o nw h i c hd o n ta l l o wm a x t a s k sb eal a r g e rn u m h e r ( 2 ) i nt h e f i e l do fs y s t e mc l o c ki n t e r r u p t p r o c e s s i n g ii n t r o d u c e dar e s o l v i n gm e t h o dt o s i m p l i f y i n gt h ec l o c ki n t e r r u p tp r o c e s s i n g is e p a r a t e dt h ep r o c e s s i n gm a d eb yt h eu s e r f r o mt h es y s t e mc l o c km t e r r u p tp r o c e s s l n g s oi te n h a n c e st h ei n t e r r u p tr e s p o n s es p e e d i i lt h ee n d w es t u d yt h em e t h o do fp o r t i n gi x c ,0 s i io na r ma r c h i t e c t u r e sa n d m o d i f yt h ec e r t a i nf i l e sw h i c hn e e dt ob em o d i f i e d k e y w o r d :m i e r o k e r n e l ,r e a lt i m eo p e r a t i n gs y s t e m , t a s ks c h e d u l i n g 。 i m p o r t a n c el e v e lg r o u p 创新性声明 本人声明所呈交的论文是我个人在导师的指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中 不包含他人已经发表或撰写过的研究成果:也不包含为获得西安电子科技大学或 其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做 的任何贡献均已在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名:目期刎龙t 幻 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕 业离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。 学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全 部或部分内容,可以允许采用影印、缩印或其他复制手段保存论文。( 保密的论 文在解密后遵守此规定) 本人签名:至丝雪 导师签名 日期2 0 斫0 2 即 日期埘,p 1 ” 一 f 第一章绪论 第一章绪论 1 1 论文研究背景 在我国,随着嵌入式设备如手机,机项盒,m p 3 各种数码设备越来越广泛的 应用以及工业生产中面临的特定应用,嵌入式实时操作系统开始大行其道,在国 外发达国家,这种情形更是如此。嵌入式系统的开发也成为近年i t 行业的技术热 点。 完成功能简单的嵌入式系统一般不需要操作系统,如以前许多m c s 5 1 系列 单片机组成的小系统就只是利用软件实现简单的控制环路。但是嵌入式系统设计 日趋复杂,嵌入式操作系统就必不可少了。一般而言,嵌入式操作系统不同于一 般意义的计算机操作系统,它有占用空间小、执行效率高、方便进行个性化定制 和软件要求固化存储等特点。 嵌入式操作系统伴随着嵌入式系统的发展,经历了三个比较明显的阶段:无 操作系统的嵌入式算法阶段,简单监控式的实时操作系统阶段和通用的嵌入式实 时操作系统阶段。但是通用型的嵌入式实时操作系统有共同的缺点:那就是缺乏 应用的高效性,网络连接功能较差,系统对应用开发支持相对比较薄弱。 目前市面上有许多优秀的嵌入式实时操作系统,但是能够在中低端的微控制 器m c u 上运行良好的r t o s ( r e a lt i m eo p e r a t i n gs y s t e m ) p q 核不多。在高档机上, 功能强大运行良好的嵌入式实时操作系统在中低档的机子上运行就不是那么良 好,一个重要的原因是它的许多功能并不是中低档机子所需要的。 因此,随着嵌入式与i n t e m e t 结合的日益紧密,研究设计一种适用于中低端的 m c u 的嵌入式实时多任务微内核非常有必要,有一定的理论和实际意义。 1 2 本论文所做工作和论文结构 总的说来,本文在研究嵌入式系统的发展和嵌入式特点基础上,结合了目前 存在的广泛应用的开源实时多任务嵌入式微内核i x c o s i i 作为原型,进行分析研 究,结合前人工作的基础上,提出了一种新的任务调度方案并进行实现,并对时 钟中断的处理存在的问题提出了一种解决方案。 第二章先是给出嵌入式实时操作系统的定义,介绍了实时操作系统的发展。然 后将嵌入式系统、嵌入式实时操作系统和嵌入式实时多任务微内核特性给予分析 和阐明。紧接着对嵌入式实时操作系统的特征进行了说明。最后提出了嵌入式实 时操作系统目前面临的问题,展望了嵌入式发展的前景。 第三章以基于抢占式的实时多任务嵌入式微内核g c o s 1 i 为对象进行剖析, 2一种实时嵌入式多任务微内核的分析与改进 介绍i _ , c o s i i 的系统体系结构及系统的组成。然后分别着重对微内核的任务管理 及调度功能、中断处理功能,以及任务之间的同步及通信功能3 个大的功能进行 详细的分析和介绍。 第四章是本文的重点和创新点所在, 处进行了改进和实现。在任务调度方面, 主要是针对c o s i i 目前存在的不足之 提出了重要性等级组的概念,改进了调 度方法,使得同一重要性等级组内的不同任务进行任务调度时不执行任务切换, 提高了系统的实时性;同时提出了一种新的查询就绪队列中优先级最高的任务的 方法,使得制约系统支持最大任务数为6 4 的瓶颈得到去除:最后改进了时钟中断 处理,剥离了中断处理中非核心的处理部分,使得实时性得以提高。 第五章做了改进后的p c o s i i 内核代码向a r m 微处理器平台上移植工作。 先是讲述了移植的基本原理,然后就移植的硬件平台a r m 的特性进行了分析。最 后实现了本文所傲移植工作在代码方面的改动,重点将与硬件平台相关的几个文 件进行了修改。 第二章实时嵌入式操作系统简介 第二章实时嵌入式操作系统简介 2 1 实时嵌入式操作系统概述 2 1 1 实时嵌入式操作系统的发展 嵌入式实时操作系统r t o s ( r e a lt i m eo p e r a t i n gs y s t e m ) 的研究是从六十年代 开始的。从系统结构上看,r t o s 到现在已经历了如下三个阶段2 l : l 早期的实时操作系统 早期的实时操作系统,还不能称为真正的r t o s ,它只是小而简单的带有一定 专用性的软件,功能较弱,可以认为是一种实时监控程序。它一般为用户提供对 系统的初始化管理以及简单的实时时钟管理,有的实时监控程序也引入了任务调 度及简单的任务间协调等功能,属于这类实时监控程序的有r t m x 等。这个时期 实时应用较简单,实时性要求也不高。应用程序、实时监控程序和硬件运行平台 往往是紧密联系在一起的。 2 专用实时操作系统 随着应用的发展,早期的r 1 d s 已越来越显示出明显的不足了有些实时系 统的开发者为了满足实时应用的需要,自己研制与特定硬件相匹配的实时操作系 统。这类专用实时操作系统在国外称为r e a l t i m eo p e r a t i n gs y s t e md e v e l o p e di n h o u s e 。它是在早期用户为满足自身开发需要而研制的,它一般只能适用于特定的 硬件环境,且缺乏严格的评测,移植性也不太好。属于这类实时操作系统的有i n t e l 公司的i m a x 8 6 等。 3 通用实时操作系统 在各种专用r t o s 中,一些多任务的机制如基于优先级的调度、实时时钟管 理、任务间的通信、同步互斥机构等基本上是相同的,不同的只是面向各自的硬 件环境与应用目标。实际上,相同的多任务机制是能够共享的,因而可以把这部分 很好地组织起来,形成一个通用的实时操作相同内核1 3 1 。这类实时操作系统大多采 用软组件结构,以标准组件构成通用的实时操作系统,一方面,在r t o s 内核的最底 层将不同的硬件特性屏蔽掉:另一方面,对不同的应用环境提供了标准的、可剪裁 的系统服务软组件。这使得用户可根据不同的实时应用要求及硬件环境选择不同 的软组件也使得实时操作系统开发商在开发过程中减少了重复性工作。 2 1 2 实时嵌入式操作系统 嵌入式实时多任务操作系统r t o s l 4 1 是指能支持实时控制系统工作的操作系 4 种实时嵌入式多任务微内核的分析与改进 统。它是基于设备独立的应用程序开发的基础【,j 。r t o s 是一段嵌入在目标代码中 的程序,系统复位后首先执行,用户的其他应用程序都建立在r t o s 之上;另外, r t o s 还有一个标准的内核,将c p u 时间、中断、f o 、定时器等资源都包装起来, 留给用户一个标准的a p i ( 系统调用) ,并根据各个任务的优先级,合理地在不同任 务之间分配c p u 的时间;r t os 是针对不同处理器优化设计的高效实时多任务内 核,提供类同的a p l l 4 1 接口。它的首要任务是调度一切可利用的资源完成实时控制 任务,其次着眼于提高计算机系统的使用效率,其重要特点是要满足对时间的限 制和要求。实时操作系统大多数都支持多任务的运行。由于多数实时系统是嵌入 式的,多数嵌入式系统具有一定的实时性,但不同嵌入式系统对实时性的要求不 一样,本文中,若不特别说明,将嵌入式实时操作系统和实时操作系统作为相同 的概念。 实时操作系统可迸一步分为两种,一种称为“硬实时”,另一种则称为“软实时”。 “硬实时”操作系统对于所提交的每一项任务及其时间要求,或者做出承诺,或者立 即拒绝,对于做出的承诺则保证其能够实现。“软实时”操作系统只是根据以往的经 验和对系统能力的分析和估计能完成的概率有多大来对提交的任务做出承诺。目 前,在“硬实时”方面的研究还不成熟,目前大多数的实时操作系统都属于“软实时”。 2 i 3 实时嵌入式多任务微内核 r t o s 结构的核心是抢占式实时多任务内核,它的基本功能包括任务管理、 定时器管理、存储器管理、资源管理、事件管理、系统管理、消息管理、信号量 管理等。实时微内核是一个小型的操作系统的核心,它将最基本的操作系统功能放 在内核中,不是最基本的模块和服务放在内核之上构造一般来说传统的功能比如: 设备驱动程序、文件系统、虚拟内存管理、网络协议堆栈都可以放在微内核之上, 与内核交互或者彼此之间交互。 内核可以分为两种:微内核和宏内核。微内核模式中内核运行在内核模式, 而其余的模块运行在用户模式。外部模块之间交互通过微内核传递消息来时间相 互之间的交互。微内核起着信息交换的作用:验证信息、在模块之间传递信息并 授权访问硬件。而宏内核模块之间的通讯是通过直接调用其他模块中的函数实现 的。它的各个模块都是运行在内核态的,只有用户的应用程序是运行在用户态的。 目前的嵌入式实时应用中由于应用的范围和需求的特定功能的原因,比如只要 任务管理,不要t c p i p 的支持,或者需要文件系统的支持等等,如果用宏内核的话 是满足不了嵌入式中的可裁减性要求的,因此嵌入式实时多任务操作系统都是以微 内核的形式出现的 下面是嵌入式微内核和嵌入式操作系统的关系| 6 j : 第二章实时嵌入式操作系统简介5 图2 1 嵌入式实时内核与嵌入式实时操作系统的关系 根据图2 1 可以得知微内核是嵌入式操作系统的核心,它是模块化扩展的基 础。微内核设计的有许多优点:可扩展性、可移植性、灵活性、可靠性、一致接 口等优点。实时嵌入式微内核可以使现有文件系统模块的代替更加容易。甚至可 以在系统运行时将系统模块替换出或者将模块直接加入系统,不需要的模块不用 加载到内存中,因此,微内核就可以更有效地利用内存。 但是微内核也有不足之处,宏内核的不同功能模块之间的通信是通过系统调 用来完成的,而微内核之间的进程之间通信是通过消息来实现的,这样会带来性 能上的损失。 2 2 实时嵌入式多任务操作系统特征 嵌入式操作系统并不是简单嵌入的操作系统,它与通常意义上的操作系统有 一定的区别。嵌入式操作系统负责嵌入式系统的全部软、硬资源的分配、调度工 作,控制并协调少并发活动,它必须体现其所在系统的特征,能够通过装卸某些 模块来达到系统所要求的功能。与通用的操作系统相比,嵌入式操作系统具有如 下一些特征 7 4 0 1 ( 1 ) 良好的移植性。由于嵌入式硬件平台的多样性,c p u 芯片的快速更新,嵌 入式操作系统要求具有更好的硬件适应性。嵌入式操作系统一般都支持广泛的运 行平台,同时对每种微处理器都提供相应的编译器、连接器、调试器和加载工具 以及性能测试工具等一系列工具链,从而形成从开发、调试到运行的一体化支持; ( 2 ) 小巧,要求占用更小的硬件资源。嵌入式系统所能提供的资源有限,所以 嵌入式操作系统必须做的小巧以满足嵌入式系统硬件的限制。况且由于嵌入式系 统自身的特点,它所需要的模块和功能更小巧,一些在桌面操作系统中的功能在 嵌入式操作系统也就不适用了; 6 一种实时嵌入式多任务微内核的分析与改进 ( 3 ) 实时性。大多数嵌入式系统工作在实时性要求很高的环境中,这就要求嵌 入式操作系统必须将实时性作为一个很重要的方面来考虑。在信息时代。人们必 须在有效的时间内对到来的信息进行处理,从而为进一步的决策分析争取时间。 所以嵌入式操作系统必须体现一定的实时性: ( 4 ) 可装载和卸载。由于嵌入式系统需要根据应用的要求进行装卸,所以嵌入 式操作系统也必须能够适应应用的需要进行装卸,对嵌入式操作系统的各个部分 进行优化和删除; ( 5 ) 固化代码。在嵌入式系统中,嵌入式操作系统和应用软件被固化在嵌入式 系统计算机的r o m 中。辅助存储器在嵌入式系统中使用的很少,因此嵌入式操作 系统的文件管理功能应该被拆卸,取而代之的是各种内存文件系统; ( 6 ) 弱交互性。大多数嵌入式系统的工作过程不需要人的干预。嵌入式操作系 统的用户接口一般不提供操作命令,它通过系统调用命令向用户程序提供服务; ( 7 ) 强稳定性。嵌入式系统一旦开始运行就不需要人的过多干预。并且很多的 嵌入式系统工作在很恶劣的工业生产的环境下。在这种条件下,要求负责系统管 理的嵌入式操作系统具有较高的稳定性; ( 8 ) 统一的接口。随着各种各样的嵌入式操作系统的出现人们有必要为嵌入式 系统提供的接口进行约定,从而为嵌入式应用软件的设计者提供统一的服务接口, 为嵌入式软件的运行提供平台的无关性。 2 3 实时嵌入式操作系统现状及前景 2 3 1 实时嵌入式操作系统现状 实时操作系统经过多年的发展,先后从实模式进化到保护模式,从微内核技术 进化到超微内核技术,在系统规模上也从单处理器的r t o s 发展到支持多处理器 的r 1 o s 和网络r t o s ,在操作系统研究领域中形成了一个重要分支。近年来全球 嵌入式操作系统的发展空间更是随着互联网、通讯和计算机市场的飞速增长而不 断的扩大。但另一个方面,尽管国外许多公司也有对此类系统几十年的开发经验, 可到目前为止在嵌入式系统上没有一个统一的国际标准,这就使得市场上出现了 各种不同种类的嵌入式操作系统,这些操作系统各有特色,其采用的体系结构和 技术手段也各有优点,应用范围也不尽相同i 。 目前开发的实时嵌入式操作系统,发展为两种类型。一类是面向控制、通信 等领域的强实时操作系统,如w i n d r i v e r 公司的v x w o r k s ,i n t e g r a t e d s y s t e m s 公司 的p s o s 、以及n u c l e u s 等,其中在国内市场中v x w o r k s 有较大的影响。另一类是 面向消费电子产品的弱实时操作系统,这类产品包括个人数字助理( ( p d a ) 、移动 第二章实时嵌入式操作系统简介 7 电话、机顶盒、电子书等,比较著名的有w i n d o w sc e 等。 现存的实时操作系统内核,既存在纯商业性的内核,也存在开源的内核。商 业系统不提供公开的源代码,各种开发工具及源代码需要个人或者公司进行购买, 例如上面提到的w i n d r i v e r 公司的v x w o r k s ,以及微软公司的w i n d o w sc e 都属于 这类产品。非商业性内核通常都公开源代码。在这类操作系统中比较著名的就是 u c l i n u x 和由美国的j e a n j l a b r o s e 个人开发的p c o s i i 。其中由于t t c o s i i 具有简 洁明了、源码开放、多任务调度以及强实时性等特点现在已成为嵌入式系统领域 研究的一个热点。 2 3 2 实时嵌入式操作系统发展前景 现阶段实时嵌入式操作系统面临的主要问题如下: 1 ) 实时性问题 实时系统所产生的结果在时间上有严格的要求,只有符合时间要求的结果才 认为是正确的。国内外针对这两类问题作过很多方面的研究:在硬实时方面,一 般通过设计底层硬件f i f o 、分散聚合d m a 引擎以及中断机制来实现的,从而使 其满足硬实时性的要求。r t - l 玳u x 的实现就是在l i n u x 的基础上增加了一些硬 实时方面的模块。而在软实时性方面,则是通过软件的方法,包括环境切换时间、 中断等待时间、任务优先级和排序、多线程、多进程机制等来实现的。可以绘出 一种长任务划分机制来提高嵌入式系统的实时性。 2 ) 可靠性问题 可靠性一方面指系统的正确性,即系统所产生的结果在返回值和运行费时上 都是正确的;另一方面指系统的健壮性,也就是说虽然系统出现了错误,或外部 环境与预先假定的不符合,但系统仍然可以处于可预测状态,仍可以安全地带错 运行和平缓地降级。嵌入式系统软件的可靠性容错评估有以下几个指标:控制容 错性评估,对并发处理的控制能力、错误的可修正性、处理可继续进行能力:数 据容错性评估,非法输入数据的容错、对相互冲突的要求和非法组合容错、输出 数据是否合理容错:硬件故障中恢复容错性能量,故障后恢复能力容错等。当今 嵌入式系统的容错性和安全性问题,也是一个研究热点。 3 ) 可剪裁性问题 嵌入式操作系统一般都是具有可剪裁性的,它可以根据具体的应用来确定内 核中哪些部分是需要的,哪些部分是可被剪裁掉的,这样就可以使加载的内核所 占用的存储空间最小r a m 和r o m ,一般这种可剪裁性是通过条件编译来实现的。 l _ t c o s i i 源代码也是可以剪裁的,它通过设定相应的编译选项,来决定相应功能 是否被编译使用。为了能使嵌入式系统的存储器分配更合理,剪裁技术也是内核 一种实时嵌入式多任务微内核的分析与改进 研究的热点问题。 r t o s 研究方向主要集中在如下几个方面: 1 1r t o s 的标准化研究 如今国外的r t o s 开发商有数十家,提供了上百个r t o s ,它们各具特色。但 这也给应用开发者带来难题,首先是应用代码的重用性难,当选择不同的r t o s 开发时,不能保护用户已有的软件投资,r t o s 的标准化研究越来越被重视。 2 ) 多处理器结构r t o s 、分布式实时操作系统和实时网络的研究 实时应用的飞速发展,对r 1 o s 的性能提出了更高的要求。单处理器的计算 机系统已不能很好地满足某些复杂实时应用系统的需要,开发支持多处理器结构 的r t o s 已成为发展方向。至于分布式r t o s ,国外一些r t o s 厂家虽已推出部分 产品,但分布式实时操作系统的研究还未完全成熟。特别是在网络实时性和多处 理器任务调度算法上还需进一步研究。 3 ) 集成的开放式实时系统开发环境的研究 rt o s 研究的另一个重要方向是集成开发环境的研究。开发实时应用系统, 只有r t o s 是不够的,需要集编辑、编译、调试、模拟仿真等功能为一体的集成 开发环境的支持。开发环境的研究还包括网络上多主机间协作开发与调试应用技 术的研究、r t o s 与环境的无缝连接技术等。 4 ) 嵌入式实时操作系统正向实时超微内核发展 2 0 世纪8 0 年代后期,国外提出了微内核( m i c r o k e m e l ) 的思想,即将传统操作 系统中的许多共性的东西抽象出来,构成操作系统的公共基础,即微内核,真正 具体的操作系统功能则由构造在微内核之外的服务器实现。近几年,国外发展了 一种基于微内核思想设计的精巧的嵌入式微内核,即实时超微内核。超微内核是 一种非常紧凑的基本内核代码层,为嵌入式应用提供了可抢占,快而确定的实时 服务,在它的基础上可以灵活地构造各种类型的、与现成系统兼容的、可伸缩的 嵌入式实时操作系统。因此能满足应用代码的可重用和伸缩性( s e a l a b i l i t y ) 的需求。 5 ) 嵌入式开发环境向开放的、集成化的方向发展 由于嵌入式应用软件的特殊性,往往要求应用程序设计者具有一定的实时操 作系统的专门知识,能合理地划分任务,合理的配置系统以及目标联机的调试。 因此,要设计实现一个高性能的实时应用软件,需要强有力的交叉开发工具系统 的支持。国外十分重视发展与实时操作系统配合的嵌入式应用的集成开发环境, 现已发展到第三代,它以客户服务器的系统结构为基础,具有运行系统的无关性、 连接的无关性、开放的软件接口与嵌入式实时操作系统,与开发工具,与目杯环 境的接口和环境的一致性、宿主机上的目标仿真的特点。 第二章实时嵌入式操作系统简介 9 2 4 本章小结 本章主要是对实时嵌入式操作系统的发展、特征、现状以及发展前景进行了 概述。在介绍实时嵌入式操作系统的同时,引出了实时嵌入式多任务微内核,并 对它和嵌入式操作系统的关系进行了概述。从而得到了实时嵌入式多任务微内核 的整体概念。接下来的一章选取了目前一种广泛应用的实时嵌入式微内核作为研 究对象。 第三章实时嵌入式微内核s c o s - i i 特性分析 第三章实时嵌入式微内核t t c o s h 特性分析 3 1 概述 t , c o s i i 是一个源代码公开的基于抢占式的实时嵌入式微内核,它提供了实 时系统所需的基本功能。其包含全部功能的核心部分代码只占用8 3 k 字节,而且 由于“l l c o s i i 是可裁剪的,所以用户系统中实际的代码最少可达2 7 k 字节,可 谓短小精悍”。g c o s 一实际上是一个实时操作系统内核,只包含了任务调度、 任务管理、时间管理、内存管理和任务间的通信与同步等基本功能,没有提供输 入输出管理、文件系统、网络之类的额外服务。 作为一个实时内核,f c o s i i 总的来说有以下几个主要显著的特征【1 2 1 : 1 ) 精简性 l l c o s i i 是一个源码公开的实时嵌入式操作系统,它提供了实时系统所需基 本功能。其包含全部功能的核心部分代码只占用8 3k 字节。事实上,由于# i c o s i i 的可裁剪性,所以用户系统中实际的代码最少可达2 7 k 字节。 2 ) 可裁减性 | l c o s - i i 系统由多个相对独立的、短小精炼的目标模块组成,用户可根据需 要选择适当模块来裁剪和配置系统,这样,通过目标模块之间的按需组合,可以 减少产品中的p c o s i i 所需的存储空间,这种可裁减性是靠条件编译实现的。另 外,由于肛c o s i i 源码的开放特性,用户还可以针对自己的硬件优化代码,以获 得更好的性能。 3 1 可移植性 肛c o s i i 的大部分代码是用a n s ic 写成的,只有与处理器硬件相关的一部分 代码用汇编语言编写。所以c o s i i 的移植性很强,可以在绝大多数8 位、1 6 位、 3 2 位微处理器、数字信号处理器上运行。i _ , c o s i i 的移植并不复杂,只要编写4 个汇编语言的函数、6 个c 函数,再定义3 个宏和1 个常量,这些宏和函数都比较 简单,其中的5 个c 函数甚至只需声明不必包含代码。用户可以根据需要自己编 写移植代码。 4 ) 多任务 1 2 一种实时嵌入式多任务微内核的分析与改进 肛c o s i i 可以管理6 4 个任务,每个任务的优先级必须是不同的,其中系统占 用8 个,应用程序最多可以有5 6 个任务。赋予每个任务的优先级必须是不相同的, 这意味着i j t c o s i i 不支持时间片轮转调度法。 5 1 可确定性 全部i t c o s i i 服务的调度执行时间是可知的,即i t c o s i i 系统服务的执行时 间不依赖于应用程序任务的多少。 6 ) 中断管理 中断管理可以使正在执行的任务暂时挂起。如果优先级更高的任务被该中断 唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达2 5 5 层。 7 ) 任务堆栈 每个任务都有自己单独堆栈。i _ t c o s i i 允许每个任务有不同的栈空间,以便 压低应用程序对r a m 的需求。使用g c o s 1 1 的栈空间校验函数,可以确定每个 任务到底需要多少栈空间。 8 ) 稳定性和可靠性以及广泛的适用性 肛c o s i i 自问世以来,己经有了百个商业应用,并通过f a a ( 美国联邦航空局) 认证。 3 1 2 i _ t c o s i i 结构组成 弘c o s i i 内核从结构组成上可以大致分成核心部分模块、任务管理模块、时间 管理模块、任务间同步与通信模块、内存管理模块、移植相关模块这五个部分。 核心部分( o sc o r e c ) 它是操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的 前导、时钟节拍、任务调度、事件处理等多部分。核心部分模块包含了维持系统 运作的基本支持功能。 任务处理模块( o st a s k ,c ) p c o s i i 是以任务为基本单位调度的,任务处理部分( o s j a s k c ) 任务处理 部分中的内容都是与任务的操作密切相关的。包括任务的建立、删除、挂起、恢 复等等。 时间管理模块( o s j i m e c ) 第三章实时嵌入式微内核p t c o s - i i 特性分析 i l c o s i i 中的最小时钟单位是t i m e t i c k ( 时钟节拍) ,而任务延时等操作是由时 钟部分( o s _ t i m e c ) 完成的。 任务同步和通信模块 任务同步和通信部分为事件处理部分,包括信号量、邮箱、邮箱队列;以及 事件标志等部分,主要用于事务间的互相联系和对临界资源的访问。 内存管理模块 肛c o s i i 的内存管理不同于通常意义上的内存管理,i _ t c o s i i 的内存管理主 要是面向用户任务中的动态内存分配如m a l l o c 和f r e e 操作提供满足实时性要求的 有效支持。 移植相关模块 移植相关部分是指1 t c o s i i 针对所使用的c p u 平台的移植部分。由于 u c o s i i 是一个通用性的操作系统内核,所以对于关键问题上的实现,还是需要 根据具体c p u 的具体内容和要求作相应的移植。这部分内容由于牵涉到系统指针, 所以通常用汇编语言编写。主要包括中断级任务切换的底层实现、任务级任务切 换的底层实现、时钟节拍的产生和处理、中断的相关处理部分等内容。 3 2 l a c o s i i 内核的任务管理和调度问题 任务调度主要是协调任务对计算机系统资源( 如内存、i o 设备、c p u ) 的争 夺使用。进程调度又称为c p u 调度,其根本任务是按照某种原则为处于就绪状态 的进程分配c p u 。由于嵌入式系统中内存和i o 设备一般都和c p u 同时归属于某 进程,所以任务调度和进程调度概念相近,很多场合不加区分。进程调度可分为“剥 夺式调度”和“非剥夺式调度”两种基本方式。所谓“非剥夺型式调度”是指:一旦某 个进程被调度执行,则该进程一直执行下去直至该进程结束,或由于某种原因自 行放弃c p u 进入等待状态,才将c p u 重新分配给其它进程。所谓“剥夺式调度” 是指一旦就绪状态出现优先级更高的进程,或者当前运行的进程己用满规定的时 间片时,便立即剥夺当前进程的运行( 将其设置为就绪状态) ,把c p u 时间分配给 其它更高优先级的就绪进程。 如上所述,i t c o s i i 是以任务为基本调度单位的,任务管理是r t c o s i i 内核 提供的最主要的功能之一。g c o s i i 内核的灵巧设计在任务调度方面得到集中的 体现。任务管理方面,r t c o s i i 最多可以管理6 4 个任务,这些任务通常都是一个 无限循环的函数。在目前的版本中,作者保留了优先级为0 ,1 ,2 , 3 ,o s t 二p -、tp 一、o s ltprl0-1、_lowes r i o3o sl o w e sr i o2o w e s 一种实时嵌入式多任务微内核的分析与改进 o s 的任务,所以用户可以同时拥有56个任务。其中表示最高_lowest_prio 0 优先级,o s - l o w e s t p r i o ( 6 3 ) 表示最低优先级。i t c o s i i 提供了任务管理的各 种函数调用,包括创建任务、删除任务、改变任务的优先级、挂起和恢复任务等。 系统初始化时会自动产生两个任务:一是空闲任务o s t a s k l d l e 0 ,它的优先级 最低为o s l o w e s tp r i o ,该任务只是不停地给一个3 2 位的整型变量加1 ;另 一个是统计任务o s t a s k s t a t 0 ,它的优先级为o s 一l o w e s tp r i o 1 。该任务每秒 运行一次,负责计算当前c p u 的利用率。 3 2 1 任务及任务控制块结构 一个任务通常是一个无限的循环,一个任务看起来像其它c 的函数一样,有 函数返回类型,有形式参数变量,但是任务是绝不会返回的,所以其返回类型为 v o i d ,下面是用户任务的代码演示: v o i du s e r t a s kf v o i d p d a t a ) f o r ( ;) d o s o m e t h i n g ; w a i t i n g ; d os o m e t h i n g ; ) 形式参数变量p d a t a 是由用户代码在第一次执行的时候带入的。该变量的类型 是一个指向v o i d 的指针。这是为了允许用户应用程序传递任何类型的数据给任务。 如果需要的话,p d a t a 指针变量可以运载一个变量的地址,或一个结构,甚至是一 个函数的地址。 任务的建立是通过函数i n t 8 uo s t a s k c r e a t e ( v o i d ( + t a s k ) ( v o i d + p d ) ,v o i d + p d a t a ,o s s t k * p t o s ,i n t 8 up r i o ) 来实现的。每个任务建立以后,都有一o s j c b 控制块与其相对应。任务控制块是一个数据结构,它里面包含任务的i d ,任务的 状态信息,任务的控制信息等等。这所有的信息通过一个结构体来实现。当任务 的c p u 使用权被剥夺时,i j c o s i i 用它来保存该任务的状态。当任务重新得到c p u 使用权时,任务控制块能确保任务从当时被中断的那一点正确地继续执行。 o st c b 全部驻留在r a m 中。任务控制的基本结构如下所示: t y p e d e f s t r u c t 0 5 一t c b o ss t k * o s t c b s t l f f t r ; 第三章实时嵌入式微内核p c o s i i 特性分析 o ss t k i n t 3 2 u i n t l 6 u i n t l 6 u # e n d i f o s j a s k _ c r e a t e _ e x te n ,控制是否允许在外部对任 务控制块进行扩充: * o s t c b e x t p t r 指向用户定义的数据( 实现对任务控制块的 扩展) o s t c b s t k b o t t o m 指向任务堆栈的底部 o s t c b s t l ( s i z e 任务堆栈的大小 o s t c b o p t ;存放创建任务时的参数 o s t c b i d ;任务的表示m s t r u e to st c b o s t c b n e x t ;h 实现任务控制块双链表 s t r u c to s _ t c bo s t c b p r e v 0 | # i f ( o sqe n & & ( o s _ m a x _ q s = 2 ) ) i i o sm b o xe ni io ss e me n ; ,是否采用消息机制: o se v e n t + 0 s t c b e v e n t p 仃,指向事件控制块 # e n d i f # i f ( o s q e n & & ( o s m a x q s = 2 ) ) l i o s m b o x e n 是否采用消息机制 v o i d + o s t c b m s g 指向从消息队列或邮箱接收的消息 # e n d i f i n t l 6 u o s t c b d l y ;任:务的延时时钟滴答数 i n t 8 u o s t c b s m t j 任务的状态 i n t 8 uo s t c b p n o 任务的优先级 以下四个用于加速任务进入就绪态的过程或进入等待事件发生状态的过程 i n t s u o s t c b x 保存优先级的前3 位 i n t 8 u o s t c b y ;保存优先级的后3 位 i n t 8 uo s t c b b i t x j 任务优先级在就绪表中的横向偏移位置 i n t 8 u o s t c b b i t y ;,任务优先级在就绪表中的纵向偏移位置 # i f o s j a s k d e l e n 宏定义:是否允许删除任务 b o o l e a n o s t c b d e l r e q ;指示任务是否需要删除自己 # e n d i f 1 6 一种实时嵌入式多任务微内核的分析与改进 o s _ t c b ; o s t c b s t k p 仃是指向当前任务栈顶的指针。心l o s i i 允许每个任务有自己的 栈,尤为重要的是,每个任务的栈的容量可以是任意的。有些商业内核要求所有 任务栈的容量都一样,除非用户写一个复杂的接口函数来改变之。这种限制浪费 了r a m 。当各任务需要的栈空间不同时,也得按任务中预期栈容量需求最多的来 分配栈空间。o s t c b s t k p 打是o s t c b 数据结构中唯一的一个用汇编语言来处置 的变量。 o s t c b n e x t 和o s t c b p r e v 用于任务控制块o st c b 的双重链接,该链表在 时钟节拍函数o s t i m e t i e k 0 中使用,用于刷新各个任务的任务延迟变量 o s t c b d i y ,每个任务的任务控制块0 s t c b 在任务建立的时候被链接到链表中, 在任务删除的时候从链表中被删除。双重连接的链表使得任何一个成员都能被快 速插入或删除。 0 s t c b e v e n t p 订是指向事件控制块; o s t c b m s g 是指向传给任务的消息的指针; o s t c b d i y 当需要把任务延时若干时钟节拍时要用到这个变量,或者需要把 任务挂起一段时间以等待某事件的发生,这种等待是有超时限制的。在这种情况 下,这个变量保存的是任务允许等待事件发生的最多时钟节拍数。如果这个变量 为0 ,表示任务不延时或者表示等待事件发生的时间没有限制。 o s t c b s m t 是任务的状态字。o s t c b s m t 为0 ,任务进入就绪态。可以给 o s t c b s t a t 赋其它的值,分别表示不同的状态。 o s t c b p d o 是任务优先级。高优先级任务的o s l b p r i o 值小。也就是说,这 个值越小,任务的优先级越大。 0 s t c b x o s t c b y o s t c b b i t ) ( 和o s t c b b i t y 用于加速任务进入就绪态的 过程或进入等待事件发生状态的过程。这些值是在任务建立时算好的,或者是在 改变任务优先级时算出的。 o s t c b d e l r e q 是一个布尔量,用于表示该任务是否需要删除。 3 2 2 任务的状态迁移 在“c o s i i 中,每个任务任何时刻只能处于以下5 种状态之一:运行 ( r u n n i n g ) 、就绪( r e a d y ) 、等待( w a i t i n g ) 、中断服务态( 1 s r ) ,运行睡眠 ( d o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年无人机考试题库和部份考题带答案(典型题)
- 小儿视网膜母细胞瘤E期护理查房
- 安丘市2024-2025学年八年级下学期语文期中模拟试卷
- 2016年7月国开电大法律事务专科《行政法与行政诉讼法》期末纸质考试试题及答案
- 七夕主题活动总结2025年
- 广东省2025年下半年电机装配工:基础理论试题
- 社区网格化管理课件
- 江苏省无锡金桥双语实验学校2024-2025学年九年级下学期期中考试英语试卷(含答案)
- Unit 2 School life单元测试卷(含解析)译林版(2024)八年级英语上册
- 岩石基坑开槽合同范本
- 2025年幼儿园教师专业考试试题及答案书
- 机关事业单位工人汽车驾驶员高级、技师国家题库练习题及答案
- 2025年青海辅警招聘考试题及答案
- 2025新外研版初中英语八年级上全册课文原文翻译
- 钢结构安装安全操作规程
- 2025年高处作业特种作业操作证考试试卷:高处作业特种作业操作证考试备考攻略与技巧
- 2025年山西中考道德与法治真题解读及答案讲评课件
- 2025届云南中考化学真题试卷【含答案】
- 2025年安徽省公务员录用考试行测真题试卷
- DB54∕T 0275-2023 民用建筑节能技术标准
- 伤口造口护理新进展
评论
0/150
提交评论