(计算机系统结构专业论文)嵌入式微内核上扩展层的设计与实现.pdf_第1页
(计算机系统结构专业论文)嵌入式微内核上扩展层的设计与实现.pdf_第2页
(计算机系统结构专业论文)嵌入式微内核上扩展层的设计与实现.pdf_第3页
(计算机系统结构专业论文)嵌入式微内核上扩展层的设计与实现.pdf_第4页
(计算机系统结构专业论文)嵌入式微内核上扩展层的设计与实现.pdf_第5页
已阅读5页,还剩48页未读 继续免费阅读

(计算机系统结构专业论文)嵌入式微内核上扩展层的设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 随着计算机、微电子技术在技术和工艺方面的飞速发展,嵌入式系统也得到了巨 大的发展,并且正在工业、民用、军事、科研等各个方面得到越来越广泛的应用,并 且逐渐影响着人们日常的生产和生活。 针对如此广阔的应用,围绕嵌入式系统展开的研究和开发也逐渐成为计算机软硬 件技术发展最活跃的方向之一。随着嵌入式系统处理器主频不断增加、性能不断提高, 越来越多的嵌入式系统需要使用到嵌入式操作系统。随之引来了嵌入式系统开发的一 系列问题,操作系统移植便是其中之一。 传统嵌入式系统应用程序的开发者往往采用直接访问嵌入式底层操作系统的方 式,由于嵌入式领域软硬件的高度可配罱性,导致应用程序开发者经常需要面对不同 的底层操作系统、移植困难、软硬件接口不能统一等问题发生。因此由于这些特点, 对嵌入式系统应用程序更具高度可移植的要求,可是目前在这方面,还没有一套行之 有效的通用方法,针对不同的硬件平台,应用程序的移植往往需要从头开始,有大量 重复性的工作要做,还要考虑大量底层硬件信息,移植速度慢周期长,有时稳定性不 高,严重阻碍了一套新开发出来的嵌入式产品投放市场的及时性,致使产品不能抢得 先机。 因此,在本实验室同韩国l g 公司合作的基础之上,我们提出了一套适合于嵌入 式系统的上层软件接口模型,在采用最小的嵌入式微内核基础之上,设计了功能足够 强大的扩展模块,并且将其结合在一起形成了一个扩展层,分析了当前嵌入式系统开 发中所遇到的问题,并总结了现有硬件抽象层的特点和不足之后,提出了嵌入式系统 e x l 层的概念。在此种思想的指导之下,实现了一套可以兼容于u o o s 的嵌入式系统 中间层。接着,作者以各个模块的具体设计方法来进一步强化了这种方法的可行性和 用此方法构建起来的平台系统的稳定可靠性。文章最后总结和展望了嵌入式系统扩 展层( 出池) 的应用和今后可以继续完善的方向。 相信本文所提出的方法必能为嵌入式系统上开发高度可移植的应用程序提供一 定的借鉴之处。 关键词:嵌入式系统,嵌入式操作系统,微内核,调度管理,文件系统,绘图操作, s o c k e t 接口 中图分类号:t p 3 2 a b s t i 矾c t a sar e s u l to ft h ec o m p u t e ra n dt h em i c r o e l e c t r o n i c s r a p i dd e v e l o p m e n t i nt e c h n i c a la n dc r a f ta s p e c t ,t h ee m b e d d e ds y s t e ma l s oo b t a i n e dh u g e d e v e l o p m e n t f r o mi t sa p p l i c a t i o ni nt h ei n d u s t r y ,c i v i l ,t h em i l i t a r y ,t h e s c i e n t i f i cr e s e a r c ha n de t c w em a yf i n di tg r a d u a l l y a f f e c t i n gp e o p l e sl i f e c o n s i d e r i n gs u c hb r o a da p p l i c a t i o n ,t h es t u d ya n dd e v e l o p m e n ti nt h e e m b e d d e ds y s t e ma l s og r a d u a l l yb e c o m e so n eo fm o s ta c t i v et e n d e n c i e s c o n c e r n i n gc o m p u t e rs o f t w a r ea n dh a r d w a r et e c h n 0 1 0 9 i c a ld e v e l o p m e n t a l o n g w i t ht h ee m b e d d e ds y s t e mp r o c e s s o rf r e q u e n c yu n c e a s i n g l yt oi n c r e a s e ,t h e p e r f o r m a n c eu n c e a s i n g l yt oe n h a n c e ,i t sa p p l i c a t i o nm o d ea l s ot r a n s f o r m sf r o m t h ei n i t i a ln o n o p e r a t i n gs y s t e ma n ds i n g l e 。t a s ks y s t e mt ot h ep r e s e n tt h e m u lt i t a s k so p e r a t i n gs y s t e m a n dt h i sh a sb r o u g h tas e r i e so fp r o b l e m si n t h ee m b e d d e ds y s t e md e v e l o p m e n t ,o n eo fw h i c hi sh o wt op o r tt h es u t i ea p p h c a f i o n s o n t od i f f e r e n to p e r a t i n gs y s t e m s t h et r a d i t i o n a l p o r t i n gw a y s i st h e a p p l i c a t i o nw r i t e rr e a d s p e c i f i c a t i o n sa b o u td i f f e r e n te m b e d d e do sa n da d a p tt h ea p p l i c a t i o nt on e w p l a t f o r m ,w h i c hc a u s e sas e r i e so fp r o b l e m s ,s u c ha st h eo p e r a t i n gs y s t e m i n s t a b i l i t y ,t h ep o r t i n gd i f f i c u l t ya n dw a s t i n gm u c ht i m e t h ee m b e d d e df i e l d , d u et oi t so w nf e a t u r e s ,h a si t so w nr e q u e s tt ot h ea p p l i c a t i o np o r t i n g ,b u t a tp r e s e n ti nt h i sa s p e c t ,t h e r ei ss t i l ln o to n es u i t a b l em e t h o dt oa r c h i e v e t h ea i m f o rd if f e r e n th a r d w a r ep l a t f o r m ,w eo f t e nh a v et or e s t a r tt h e a p p l i c a t i o n sp o r t i n gw i t hm a s s i v ed u p l i c a t e dw o r k ,a n da l s oh a v et ot a k et h e m a s s i v eu n d e r l y i n go si n f o r m a t i o ni n t oa c c o u n t ,a n dt h i sr e a l l ys l o w sd o w n t h e p o r t i n g c y c l e ,w h i c hs e r i o u s l yh i n d e r e du sf r o ms e n d i n gas e to f n e w l y d e v e l o p e de m b e d d e dp r o d u c t st ot h em a r k e tt i m e l y ,a n dc a u s et h en e w p r o d u c t sc a n n o tt ot a k et h em a r k e ti n i t i a t i v e t h e r e f o r e ,w eu r g e n t l yn e e dt od e v e l o pas e to fe m b e d d e da p p l i c a t i o n s p o r t i n gt h e o r y i nt h i sp a p e r ,c e n t e r i n go nt h ep r o j e c tb yf u d a ne m b e d d e dl a b 1 a n dl g c o m p a n y ,t h ea u t h o ra n a l y z e s t h e p r o b l e m s m e ti nc u r r e n t a p p l i c a t i o n s p o r t i n g ,a n ds u m m a r i z e st h ee x i s t i n gm i c r o k e r n e la r c h i t e c t u r e t h e nr a i s et h ei d e ao fe n c a p s u l a t i n ga 1 1t h ea p im o d u l e sb e t w e e ne m b e d d e do s k e r n e la n dt h eu p p e rl a y e ro fu s e ra p p l i c a t i o n s ,w h i c hc a nb em o d u l a t e da n d e a l l e de x l ( e x t e n d e dl a y e r ) w i t ht h i st h e o r y ,t h ea u t h o r ,b yi n t e g r a t e dt h e e x lw i t hu c o s ,p r o v i n gt h i st h e o r y sf e a s i b l y i nt h ee n d ,t h i sp a p e rp r e s e n t s u sac o n t e m p o r a r ys u m m a r yo ft h ea p p l i c a t i o na n dp i c t u r e su st h ep o t e n t i a l t e n d e n c i e so fe x i su s e f u lf i e 】d s t h ea u t h o ri sq u i t es u r et h a tt h et h e o r yp r e s e n t e db yt h i sp a p e ra n d c o n f i r m e dw i t he x p e r i m e n tw i l ls h o wt h ed i r e c t i o nf o rm a n yf u t u r ea p im o d u l e s d e s i g nb a s e do nm i c r o k e r n e lo si ne v e r yk i n do fe m b e d d e ds y s t e m ,a n dw i l lp l a y i t sv i t a lr o l ei nt h ee m b e d d e ds y s t e md o m a i n k e yw o r d s :e m b e d d e ds y s t e m ,e m b e d d e do p e r a t i n gs y s t e m ,m i c r o k e m e l ,s c h e d u l e r , f s , g f x m o d u l e ,s o c k e ta p i 2 圉片昌录 图片目录 图2 - 1 嵌入式操作系统体系结构3 图2 - 2e c o s 的系统层次结构图6 图2 - 3 采用分层式结构的嵌入式体系结构框图7 图3 - 1e x l 中的多级调度原理1 0 图3 - 2 二级任务状态转换图1 1 图3 - 3 二级调度下的调度任务入口原理图1 3 图3 4 二级任务状态转换图1 4 图4 - 1 嵌入式文件系统1 8 图4 - 2e x l 所采用的嵌入式文件系统体系1 9 图4 - 3 嵌入式文件管理示意图2 0 图4 4 嵌入式目录管理示意图2 1 图4 5e x l 文件系统入口图2 4 图4 - 6 计算机多级存储体系结构2 5 图4 7e k l 中c a c h e 所采用的数据结构2 5 图5 - 1 使用e x l 的微内核驱动显示结构图2 7 图5 - 2 屏幕、虚拟屏幕和显示缓存关系图2 8 图5 3 屏幕模式3 1 图5 _ 4 椭圆算法3 2 图6 - 1 嵌入式网络集成的常见架构3 7 图6 - 2 嵌入式网络层次图3 8 图6 - 3 应用程序、e x l 库和底层网络驱动模块间通讯4 0 图6 4e x l 中的网络连接状态转换图4 1 表日录 表3 - 1 二级任务状态转换图1 1 表4 - 1 e x l 中可设定的文件访问方式2 2 表4 - 2e x l 中所提供的文件操作函数2 3 表4 3 e x l 中所提供的目录操作函数。2 4 表5 - 1e x l 中可设定的文件访问方式3 3 表5 - 2 e x l _ g f x _ d m w c h a r 中参数意义3 4 表6 - 1 上层网络a p i 3 9 l 前言 嵌入式系统是计算机技术发展到后p c 时代,通讯、网络、图像语音、半导体等 技术相结合的产物。系统之内几乎没有任何多余软硬件,由于其所具有可靠性高、体 积小、成本低、功耗底的特点,因而更适用于家电、工业、通信、国防等领域。其产 品形态丰富,市场潜力巨大。而嵌入式系统中的核心部件是各种类型的嵌入式处理器, 与p c 领域不同的是没有一种微处理器和微处理器公司可以主导嵌入式系统,仅以3 2 位的c p u 而言,就有1 0 0 种以上嵌入式微处理器。由于嵌入式系统设计的差异性极 大,因此选择是多样化的。 嵌入式系统的系统程序和应用程序一般直接安装在f l a s h 或r o m 中,无存储 量大的硬盘设备等,而且开发过程往往针对各式各样的具体应用,它的这些特点决定 了在嵌入式应用领域难以出现台式机那样由少数操作系统垄断的局面,因为任何个 嵌入式操作系统也难以做到能适应各种c p u 以及多种多样的硬件平台,这为我们发 展自己的嵌入式系统提供了机遇。但是,国外嵌入式系统的开发和研究早在二十年多 年前就已开始,商品化的嵌入式操作系统产品就达十种之多,而我国在嵌入式操作系 统的研究开发方面起步比较晚,还有许多研究开发工作需要做。 具体讲来,硬件的不同,直接影响了操作系统的选择,目前主流的嵌入式操作 系统有v x w o r k s ,比较著名的有t o r n a d o v x w o r k x 、p s o s y s t e m 、n e c u l e u s 和w i n d o w s s c e 、q n x 、v r t x ,以及沸沸扬扬的“女娲计划”,中国人自己的嵌入式操作系统 h o p e n 和现在谈论最多的嵌入式l i n u x 操作系统等等。可用于嵌入式系统软件开发 的操作系统很多,但关键是如何选择一个适合你所开发项目的操作系统。 选定了底层将要使用的嵌入式操作系统之后,开发人员将必须针对具体的嵌入 式平台进行自己产品的研发。由于各种嵌入式平台种类繁多、各式各样的a p i 接口 差异较大,因此直接开发出来的代码周期会比较长,而且可维护性和可移植性也比较 差。一旦转到一个新的平台之后,就需要再进行大规模的版本更新来适应新的目标平 台。 从近几年的研究和发展来看,跨越尽可能多的硬件平台是各种嵌入式操作系统 的基本追求之一,为了能够缩短特定领域的嵌入式系统软件开发周期,增强嵌入式操 前言 作系统功能和实现嵌入式软件的高度可移植性,本文主要提出并分析了一种构建在嵌 入式微内核之上的扩展层的设计和实现。通过加入拓展层的概念,可以抽象的分离用 户应用软件和具体的嵌入式操作系统内核,从而达到较高的通用性。 从可移植性考虑,合理设计整个嵌入式系统的体系结构是嵌入式系统开发过程 中十分重要的一环。相对于硬件抽象层q _ l a l ) 的概念,扩展层删更注重于系统整 合过程,对底层系统而言它可以方便的放置到不同系统之上,对于上层应用程序开发 者而言它提供了上层开发所必需的编程a p i 接口。而且其自身可以实现一些复杂功 能,例如在已有的内核基础上实现二级调度、提供一些o s 的通用功能等等。 2 徽内棱上扩展层涉及概要 2 微内核上扩展层设计概要 本章首先分析了嵌入式系统内核的发展历程,并分析了由于微内核出现后所带 来的种种优越之处,并且在分析目前嵌入式系统发展中出现的新应用北京基础之上, 提出了在微内核之上添加一层扩展层的概念。 2 1 嵌入式系统的发展历程 在微内核机制出现以前,通常,整个操作系统分为内核层与应用层( 即层次内 核结构如图2 - 1 ( a ) 所示) ,在内核层实现各种系统服务。在应用层,应用程序通过系 统调用来使用这些服务。但在软硬件迅猛发展、各种不同的操作系统不断出现的情 况下,人们对不同平台上系统软件的可移植性、可构造性提出了更高的要求, 进而 促使软件开发者更加重视操作系统构造的灵活性与重用性,而不再像以往那样仅局限 于高效性。传统操作系统的构造方法很难达到这点要求,虽然诸如分层法、虚拟机法 等构造方法在一定程度上改善了系统模块的可移植性,但却不能让用户为实现某种 特定需要而动态地构造服务系统。 t ) 屉擞内秘搪柯 t b ) 般内棱螭拇 图2 - 1 嵌入式操作系统体系结构 3 徽内核上扩展层涉及概要 微内核机制的引入在很大程度上解决了这一问题,其主要设计思想为:将整个 操作系统分为3 层,即内核层、服务层与应用层。在内核层实现操作系统最基本的功 能,如进程管理、内存管理、进程问通信以及i o 管理等:在服务层以服务器的形 式实现操作系统中面向应用程序的其他功能洳图2 - 1 所示) 。 2 2 嵌入式微内核的优缺点 简而言之,微内核将操作系统的许多服务移到了用户空间,而传统的操作系统 通常是将其放在核内的,这对系统的性能产生了显著的影响。微内核系统和整体内核 系统比较具有以下优点: 2 2 1 。可移植性好 可移植性是指能以最小的重新编码量将操作系统从一种处理器的机器移植到另 外一种处理器的机器。由于与各种不同处理器相关的具体代码与微内核是互相隔离 的,因此,在基于微内核的嵌入式操作系统中,只需作少量改变,就可以把系统从一 种处理器移植到另外一种处理器上去运行。由于处理器芯片市场纷纭而不收敛到某种 结构上,故提供一种能在多种不同的处理器上运行的操作系统,可成为在硬件方面影 响用户投资的唯一方法。 z 2 z 可扩硬性好 可扩展性也是现代操作系统追求的目标之一。可扩展性是指操作系统要易于支 持新出现的硬件、软件技术。计算机硬件更新快、一种硬件产品在几年内就可能变成 废品,而操作系统的特点之一是寿命长。硬件是几年变,操作系统的生存年限以十 年为单位计。因此,不论哪一种操作系统,在设计时不可能全部预见到后来应用中的 全部需要。例如,当前的d os 可以支持基于磁盘的文件系统,大容量硬盘、存储管 理,特别是还能支持窗口,这些在推出d os 1 0 时是根本无法想像的。 操作系统的设计者吸收了上述经验教训,在设计新的操作系统时就考虑到它在 以后新增的功能要易于管理和控制。而微内核只限于一个定义得非常好的界面集,可 以保证系统有条不紊地增加新的功能而得以不断改进。另外,可扩展性不单指扩展系 统功能,也存在减少系统功能或特性的情况。例如,并非所有用户都需要较高的安全 级和分布式计算等。如果在具有主要功能情况下,系统功能可根据市场需求而剪裁, 4 微内梭上扩展层涉及概要 那么这种基本产品必然会引起更多用户的兴趣。在微内核之上的各种服务设施,将根 据平台和市场需求而定。 2 z 37 实时性妊 非关键性的功能可在用户空间实现,这样,大大缩短了实时应用程序的等待时 间及中断等待时间。 z z 4 可靠性爵 像u ni x ,n t 这样的系统都有几十万行代码,并且要经过几年以后才趋于成熟。 为这类系统编写应用程序的程序员没有时间去关心未提供文档的api 他用程序界 面) ,而把精力花在去熟悉几百个己提供文档的api 上。因此,没有一个人能保证 使用若干系统服务的api 代码的正确性,甚至无人敢担保操作系统本身的正确性。 不过,一个小小的微内核所具有的一组紧凑的api 提供了改善代码质量的机会。 由于微内核系统将许多系统服务放到用户空间,由于这些服务程序是运行在完 全独立的内存空间中( 当然这里不包括内核级的服务程序) ,程序本身存在的b ug 和 不可预知的错误就不会那么容易导致内核的崩溃。 2 j 嵌入式微内核发展的现状 近几年由于嵌入式系统的飞快发展,微内核操作系统的研究又成为热点,这主要 是因为嵌入式系统资源有限,而整体内核系统的内核一般都要占据很大的内存空间, 这是嵌入式系统无法容忍的。嵌入式系统看好微内核的另一重要原因是鲁棒性和可动 态配置,因为许多嵌入式系统应用是用于控制系统,控制失灵往往会造成难以估计的 灾难。微内核的缺点在嵌入式系统的应用中仍然非常突出,嵌入式系统通常都要求较 高的效率。 由于操作系统体系结构争论的广泛性,大多数从事操作系统研究和实现的学者 们都意识到无论整体内核还是微内核结构都不是尽善尽美的。这场争论带来的另一积 极后果是,双方的支持者都试图有所改变,以弥补自身系统存在的缺陷。一直以来, 微内核结构的支持者对整体内核系统的可移植性都存在质疑,整体内核的操作系统也 尽量使其内核模块化,减少模块之间的依赖性,这样就提高了系统的可维护性和系统 的可移植性。整体内核的支持者对微内核结构最有力的反击往往是效率问题,的确由 5 徽内棱上扩展层涉及概要 于微内核系统将很多系统服务放在核外,系统的效率难免会受影响。因此最近几年微 内核的支持者忙于研究如何提高系统的效率,一种途径是寻找更优的进程间通讯机制, 以便从根本上提高效率,另一种结果是一些微内核系统把有的系统服务又重新置于内 核之中,这从某种程度上确实提高了效率,但是其代价是一定程度上违背了微内核的 初衷。 综上所述,到底采用微内核和整体内核,最后归结为稳定性和效率的选择问题。 这样的问题最终不可能有完美的解决方案,需要根据问题的重点决定采用某种方案。 特别需要指出的是,嵌入式系统的飞速发展为国内操作系统技术的发展提供了 广阔的前景,和欣操作系统就是北京科泰公司自行研制的和欣操作系统是一个基于构 件化软件模型的系统,适应嵌入式实时需求,基于灵活内核技术,具有许多先进的特 性。国外流行的嵌入式操作系统例如u c o s ,e c o s ,u c l i n u x 等等系统,也都采用了微 内核的结构来允许用户进行动态配置系统属性,添加不同的用户模块等等。e c o s 系 统的结构如图2 - 2 所示: 图2 - 2e c o s 的系统层次结构图 6 徽内棱上扩展层涉及概要 2 4 位于嵌入式微内核之上的扩展层 设计扩展层的主要目的就是将具体底层实现的细节进行屏蔽,从而能够提供给 上层应用软件的编写者统一规范的调用接口,特别是对底层不同搡作系统之间差异的 屏蔽,可以大大降低应用软件开发人员的开发难度,也使得开发出来的应用软件有较 好的可移植性、可维护性和代码继承性。 从另一方面,针对许多商用实时操作系统内核部分源码不开放的特点,扩展层 可以对进程调度、内存分配等核心功能进行重新定义和优化,该层( e x t e n d e dl a y e r , 以下可以简称为e x l ) 可以说是介于嵌入式操作系统微内核和用户应用程序之间, 参与对许多嵌入式对象的管理,使上层用户可以调用一些接近内核的接口,而对于底 层操作系统的适用性和效率也有所提高。而且可以提供丰富的实时调试手段和代码跟 踪功能,有利于早期发现故障,缩短开发周期,使用嵌入式微内核上面的封装层之后, 很多基本功能可以由这个e x l 实现,而这个e x l 必须是一个经过严格测试( p a s s e d s t r e s st e s 0 的,可重用( r e u s a b l e ) 的模块。而一个软件架构如果其核心部分相对可靠, 可以大大增加该软件的稳定性。 图2 - 3 采用分层式结构的嵌入式体系结构框图 7 类似于操作系统为了隔离具体的硬件环境而设计出h a l 层( 硬件抽象层) , o s p l 的功能就是隔离下层所使用的不同的操作系统,从而给上层接口使用者提供一 个与下层具体操作系统无关的统一的接口。e x l 中其他部分或应用程序只需调用 o s p l 提供的标准功能接口,o s p l 层识别该接口调用后,直接或间接地路由到下层 具体o s 提供的相应接口调用。由于应用程序对具体的嵌入式操作系统的依赖减少, 从而便于上层应用软件在不同操作系统之间移植。o s p l 的设计主要考虑给上层应 用程序提供一个与具体操作系统及硬件平台无关的调用接口集,这是o s p l 实现的基 础。该调用接口集必须建立在对所使用的各种操作系统提供的a p i 以及对大量的应 用软件调用需求进行分析的基础上,同时要考虑到操作系统的发展趋势以及应用软 件程序员的认同程度,类p o s i x 接口规范应是一个比较好的参考。 一般而言,嵌入式操作系统得提供消息队列、调度控制、内存管理、时钟管 理、:o 驱动等基本接口,对这些接口功能的实现也可采取先实现一个最小的操作原 语闭集,然后在实际应用中再做相应的扩充。考虑到cm n f i m e l i b r a r y 是各种常见操 作系统都提供了的,因此o s p l 实现主要考虑标准c 库以外的功能接口的实现,如 进程或线程、信号量、计时器等。 8 3 任务调度管理 任务调度是操作系统设计中核心概念,任务调度和任务之间的切换通常是由 微内核来完成的。而且任务调度往往由内核参与,引起了系统方面的巨大开销和 占用许多宝贵的系统资源。本章在区别于经典操作系统任务调度的概念之上,设 计了一个可以更方便支持多种微内核的任务调度模块,并分析了在嵌入式应用中 可以继续完善之处。 3 1 二级调度综述 嵌入式系统相对于传统意义上的商用操作系统例如u n i x ,w i n d o w s ,l i n u x 等,有其共同点。但同一般商用操作系统所追求的方便用户管理计算机资源,让 用户获得最大的资源利用率不同,嵌入式系统更加严格的追求实时性、可确定性 和可靠性。因此这也决定了在任务调度的过程当中,嵌入式系统必将采取与一般 商用操作系统不一样的调度策略。 所谓任务调度,就是从就绪状态的任务中,挑选一个任务到处理器上执行。 负责任务调度功能的内核程序称为任务调度程序或任务调度器,它是内核的一个 重要组成部分。在设计任务调度器时,首先要决定选择何种调度算法然后根据此调 度算法来编制相应的调度程序。而调度算法实际上就是系统所采取的调度策略, 选择时所要考虑的因素很多,如系统各类资源的均衡使用、对用户公平并使用户满 意等。大多数实时内核都是采用优先级的调度算法。 在一些应用中由于一些用户程序需要同是创建多个任务来合作完成一些工 作,如果每个任务一个呼叫系统都提供一个任务进行管理,将会极大地消耗资源; 同时由于需要支持不同的嵌入式微内核环境,移植应用程序对用户程序来说也是 一个需要解决的问题;由于任务间经常的出现同步问题,如何解决互斥问题也是 进行任务调度是存在的一个难题。因此实现二级调度有着非常重要的意义,它可 以有效缩短任务的切换时间,提供有效的通信速率,满足了嵌入式系统中多用户、 多种操作系统的需求。所谓二级调度就是每个操作系统任务下承载多个二级任务, 任务调度是由操作系统实现的,而二级任务承载在任务下,二级任务有自己的堆 栈区与数据区,其调度方式由本文中所阐述的二级调度来管理实现。 9 任务调度管理 如图3 - 1 所示,e x l 模块中的任务管理模块包括了两层结构,底层任务接 e l 用于方便的将整个e x l 组件( s u i t e ) 移植到不同的嵌入式微内核之上,而上层的 二级并发模块提供给用户应用程序两种不同的创建任务选择:系统级任务和二级 任务( 其并发将完全由e x l 模块组实现) 。e x l 中的二级任务调度模块能够屏 蔽不同微内核中线程的差异,为用户应用程序的开发提供统一的任务模型和一致 的编程接口以及相同的线程调度语义,大大降低了嵌入式应用的开发和维护难度, 提高了各种具体应用的可移植能力。 图3 - 1e x l 中的多级调度原理 3 2 二级调度的实现原理 e x l 模块组中的二级调度算法将负责提供二级调度功能,其中包含了以下几 个方面: 一级调度,即任务级的调度,它是由嵌入式操作系统微内核中的调度 算法完成的; 二级调度,即二级任务级的调度,它是由任务内的二级任务调度程序 ( e x l 模块中) 实现的。 一级调度通常是按优先级抢占方式进行调度的,低优先级任务不能抢占高优 先级任务运行,只有高优先级任务进入阻塞状态,放弃控制权,低优先级任务才 1 0 有机会运行。二级任务挂在相应的一级任务下面,二级任务本身并无优先级。但 当与某个一级任务联系起来时,就赋予了与一级任务等同的优先级。从上层应用 程序角度来看,二级任务安排在不同优先级的任务中,其执行是有不同的优先级 的。这样,对每个二级任务,其属性表中均注明其属于哪一个一级任务;对于同 一个一级任务内的各个二级任务,目前实现了最简单的调度算法,按照f i f o 进 行优先级轮转调度,只有在运行完一个二级任务后才交出控制权,这样其他二级 任务才能运行。二级任务有四种状态:就绪、阻塞、挂起、运行。其状态变迁使 用了消息激励的方式,在不同消息驱动下可以相互转换,如图3 - 2 所不。 其转换条件如下: 图3 - 2 二二级任务状态转换图 状态变迁( s t a t et r a n s i t i o n ) 需耍做的工作 r e a d y r u n n i n g二级任务获得c l q j r u n n i n g r e a d y二级任务完成跃迁且其消息队列中还有消息 r e a d y s u s p e n d 二级任务调用e x l 模块组中的二级任务调度接口g o g u s l ) e n d b l o c k 一8 u s p e n d调用e x l 模块组中的接口g o s u s p e n d r u n n i n g s u s p e n d 调用e x l 模块组中的接口g o s u s p e n d s u s p e n d b l o c k调用e x l 模块组中的接口g o r e s u m e s u s p e n d r e a d y 调用e x l 模块组中的接口g o r e s u m e b l o c k r e a d y二级任务的c a l l b a e k 函数n o t i f y c b 被调用 r u n _ - b i o c k二级任务调用帕i t 函数 任务调度管理 i 簟i i i i i i 葺i i i i 墨墨葺葺i i i i i 宣置膏i i 置i i i i i 审i i i ii i i i 对于每个二级任务。它们都应该拥有自己的消息队列。e x l 模块中的二级任 务调度模块负责维护三个队列:就绪队列、阻塞队列和挂起队列。 其中:调度任务负责从任务消息队列中接收消息,并派发给目的二级任务的 消息队列;调度任务从r e a d y 队列头摘取二级任务,并将控带4 权交给二级任务; 二级任务在消息激励下进行处理,最后进行状态跃迁,将控制权交还给调度任务。 如果该二级任务消息队列没有任何消息,则被挂到b l o c k 队列尾;否则挂到 r e a d y 队列尾,并从r e a d y 队列头摘取新的二级任务,保证每个二级任务都有平 等的运行机会。对挂起调用的限制是只允许二级任务挂起同一任务内的二级任务 或挂起自己。当上层应用创建的二级任务调用“挂起系统调用”挂起一个应用二 级任务时,直接把该二级任务的p c b 块从阻塞或就绪队列摘除,挂到挂起队列 尾;若二级任务挂起自己,则做相应的二级任务现场保存工作和二级任务切换前 的准备工作,返回任务,任务最后把p c b 块挂到挂起队列尾。当二级任务调用 “唤醒系统调用”唤醒一个挂起二级任务时,依照该二级任务挂起前的状念,把 p c b 块挂到相应队列尾;若该二级任务挂起前是在运行状态,则也将挂到就绪队 列尾。 实现的主要功能有: 在操作系统的任务或线程调度基础之上构造针对二级任务的二级调度 策略; 依据一定的策略对由消息所引起的二级任务跃迁过程进行控制; 对二级任务所发起的创建、挂起、唤醒、杀死和延时等动作和行为进行 支持; 对二级任务间的同步和互斥提供支持,包括临界区和信号量: 提供查询二级任务运行状态信息、二级任务私有数据区指针、当前二级 任务标识符、当前二级任务业务状态、二级任务名与二级任务标识符映 射的接口; 对调度算法的其他模块提供获取当前二级任务p c b 指针的接口。 1 2 任务调度管理 3 3 二级调度中的关键性技术 3 。3 1 二级调瘦的调麦任务入e 在k x l 组件中,由调度任务( s c h e d u l e r ) 函数完成二级任务的调度,整个调度 任务入口s c h e d u l e t e n t t y 函数将处于一个无限循环当中,每个s c h e d u t e r e n t r y 负责 检测各自的t c b 中二级任务就绪队列是否为空,非空则运行相应的二级任务; 否则到任务的消息队列中取消息。 二级任务调度的流程如图3 - 3 所示。 图3 _ 3 二级调度下的调度任务入口原理图 其中,在派发消息链表中的消息时: 如果接收消息的二级任务处在阻塞状态,而且不是在等待同步应答,消 息将成为二级任务p c b 消息队列的当前消息,该二级任务p c b 将从 阻塞队列进入就绪队列尾。 如果接收消息的二级任务已经在就绪状态,或者处在等待同步应答,那 么消息将被添加到二级任务p c b 消息队列尾。 如果待分发的消息是同步定时器超时消息或同步应答空消息,那么此 消息不进入二级任务p c b 的消息队列,在二级任务非挂起时直接把该 p c b 从阻塞队列中挂到就绪队列尾;在二级任务挂起时则只把二级任 务的状态由阻塞状态改为就绪状态。 1 3 任务调度管理 3 3 2 堆栈保存 当二级任务运行完毕时需要返回上级任务( 调度任务) ,由其进行重新调度, 在二级任务返回的时候需要对堆栈进行操作,操作分为两种情况: 正常返回。正常返回二级任务需要取出任务堆栈指针,然后恢复任务运 行环境,调度任务运行。 非正常返回。非正常返回二级任务在取出任务堆栈指针,恢复任务运行 环境之前。需要保存二级任务运行环境及堆栈,以备下次程序可以在异 常或者被中断的地方继续运行。 3 3 3 状态跃迁 当二级任务运行完毕后,二级任务需要进行状态跃迁,以各下次二级任务的 调度。其流程如图3 _ 4 所示。 图3 _ 4 二级任务状态转换图 3 4 性能分析 对于消息传递所引起的二级任务和任务问切换,二级消息调度方法明显优于 一级消息调度,性能提高三倍:但如果考虑纯粹的一级同步调度引起的切换,二 级消息调度明显低于一级调度,如不考虑信号量带来的对系统的负面影响,采用 一级调度中的信号量进行同步调度比二级消息调度性能更好。 基于二级任务的二级调度策略很好地满足了嵌入式微内核对于处理多应用 程序请求以及频繁切换的需求,缩短了任务的切换时间,有效地提高了资源利用, 1 4 并且解决了以前的操作系统对创建最大的任务数的限制,理论上而言,它可以创 建无数个= 级任务,只要资源允许和二级任务调度程序足够强大。 1 5 4 文件系统接口模块 设计性能优良的嵌入式实时操作系统固然重要,但系统的可剪裁性、可扩展 性也不可忽视。如何使系统透明的支持不同的文件系统,是目前几乎所有操作系 统的任务之一。要实现这个目的,就要将对各种不同的底层文件系统的操作和管 理纳入到一个统一框架之中。即提供给上一层用户应用程序一套标准的系统调用, 就对各种不同的文件系统进行操作。这样就为用户程序提供了一个统一的、抽象 的、虚拟的文件系统接口。 在本章中分析了目前各种常见嵌入式文件的共同特性,并总结出作为e x l 必须提供给用户的最小集合的文件系统接口。 4 1 嵌入式文件系统综述 网络时代的发展,加上多媒体的应用,使得运行在不同系统平台上的数据资 料呈几何级数激增,这使得对大量的多媒体信息进行实时处理的便携式或者嵌入 式设备得到了各领域的高度重视。网络多媒体时代的发展其实也意味着数字化浪 潮的到来,数字化的核心技术之一就是各种各样嵌入式芯片在生产和生活各个方 面的广泛使用。未来技术的发展会使其向运算速度更高、制造成本更低、体积更 小、重量更轻、功能更强发展。 目前通用计算机上已经有很多成熟的文件系统,如d o s 下的f a t 文件系 统、w i n d o w sn t 下的n t f s 文件系统以及u n i x 文件系统等。但是同一般的p c 使用磁盘,光盘,磁带机等存储设别不同,嵌入式终端一般只配有极少的 r o m _ r a m ( 主存) 和f l a s h ( 辅存) ,因此这些通用文件系统并不是和直接应用到 嵌入式系统中:第一,嵌入式系统电源电压的不稳定以及突发性断电将对f l a s h 的存储造成灾难性的影响,通用文件系统在这一点上考虑不足;第二,通用文件 系统大量使用缓存技术来提高文件系统的速度特性,通常耗费比较多的系统资源。 这些都与嵌入式系统中系统资源有限,f l a s h 存储器又相对于磁盘驱动器较快的应 用情况不同。 f l a s h 存储器的存储特性同一般存储介质不同,它的读操作与普通的s r a m 存储器类似,可以实现完全随即的字节读取,但是它的写操作较为特殊,需要经 1 6 文件系统接口模块 过“擦除一写入”两个操作过程。当对f l a s h 存储器的某一个单元进行写操作的 时候,首先必须对这个存储单元所在的a r e a 执行擦除操作,擦除操作成功完成后, 整个a r e a 的数据内容都被清空( 一般被设置成o x f v 0 ;然后执行写入操作,一次性 的写入数据。当需要对文件进行数据的修改,追加,删除时,都需要重复以上的 两个过程。此外,f l a s h 存储器数据传输中的时间瓶颈不在于读操作,而于内部的 写操作上。因此基于f l a s h 的嵌入式文件系统除了要提供数据管理( 数据的读取, 修改,存储,删除等) 之外,还要最大限度的保证文件的数掘有效性,同时针对 f l a s h 的特性提供i o 的支持,从系统角度根据数据吞吐量,从用户角度根据响应 时间,优化性能,减少或消除丢失、破坏数据的可能性,提供标准的接口供应用 程序调用。 嵌入式文件系统作为一个独立的整体,必须具有明确的模块划分,这样才能 使其在对文件系统格式支持上具有很好的扩展性,并且在对文件系统设备的管理 上也能够实现设备无关性。 嵌入式文件系统可以分成三个层次: 用户接口( 文件系统a p i ) 模块:本模块对文件系统进行封装,对用户提供 文件系统a p i 。 逻辑文件系统模块( 由于是动态加载的,可以有多个) :本模块具体实 现逻辑文件系统可有多个逻辑文件系统模块,实现是提供相应的头文件 和库文件。 设备驱动管理模块:本模块实现对设备驱动程序的管理。 作为整个嵌入式操作系统的一部分,文件系统和操作系统其它部分的关系有 如下几点需要说明:与内核的关系主要体现在如下的几个方面:日历时钟、实时 时钟、信号量和中断管理。 用时钟实现控制外设任务的等待延时; 用信号量实现外设的同步和互斥以及解决资源的互斥访问; 使用操作系统提供的中断管理机制来对文件系统外部设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论