




已阅读5页,还剩62页未读, 继续免费阅读
(计算机软件与理论专业论文)基于com文件格式的一种动态加载机制的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
重庆大学硕士学位论文中文摘要 摘要 嵌入式系统的广泛应用需要良好的软件系统支撑。随着嵌入式系统的深入发 展,系统的动态可扩展能力已经成为一个基本的需求,迫切需要一种机制能在运 行状态下配置系统,也就是系统在运行状态下可以动态地添加模块,这种机制就 是本论文要研究的动态加载机制。本论文中所研究的动态加载机制是从零开始的 加载机制。这样系统只需要一个动态加载机制,就可以动态地加载模块配置适合 不同应用需要的嵌入式系统。 本文对比分析了目前存在的几种加载方式:基于j a v a 的动态加载方式、 w i n d o w s 的动态链接库原理以及嵌入式l i n u x 的动态加载方式,在此基础上,提 出了一般意义下的动态加载机制的原理,并给出了动态加载机制的过程模型以及 该过程模型的算法。动态加载机制的原理要求系统具有动态的加载和动态的解析 的能力。动态加载机制运用动态链接原理,模块只有在调用执行时才被链接入系 统。动态加载分为下载、加载和卸载三个操作,下载完成从远程下载目标模块到 本地,在加载操作里要完成读入模块到内存,然后对模块的未解决的外部引用进 行解析。当模块不再使用时就从内存中卸载。 通过对一般意义的动态加载原理和动态加载过程中的关键问题进行深入地分 析和研究后,本文提出了一种基于c o m 文件格式的动态加载机制( 文中称为 d l o a d e r ) 。论文在深入分析了作为可加载模块一c o m 文件模块格式、c o m 文 件模块的名字空间管理方案以及c o m 文件的加载方式等动态加载的关键问题后, 给出了一个基于特殊环境下的动态加载系统的原型方案的设计。该方案采用了 t t c o s i i 的实时内核来管理动态加载系统的任务,用我们设计的动态加载机制模块 来加载可加载模块。尽管该动态加载方案还不是完全意义上的从零开始动态加载 的系统,但是,它为我们最终实现本文要研究的动态加载机制提供了理论和技术 经验的积累,为我们最终实现论文所构想的动态加载机制提供了很好地借鉴作用。 最后,论文在远程自动监控系统平台上验证了该动态加载方案的有效性。 本论文设计的动态加载方案在保证嵌入式实时性和安全性的前提下,使得系 统具备高度的灵活性和扩展性,整个系统具有较小的固定框架,可以动态地加载 模块以满足不同应用的需求,这对系统的实时更新以及软件升级等方面有很大的 应用价值。 关键字:动态加载,嵌入式系统,c o m 文件 重庆大学硕士学位论文 英文摘要 a b s t r a c t t h ew i d ea p p l i c a t i o no ft h ee m b e d d e ds y s t e mn e e d sg o o ds o f t w a r es y s t e mt o s u p p o r t t h es y s t e m a t i ce x p a n s i l ea b i l i t yb e c o m eo n eb a s i cd e m a n da l r e a d yw i t h e m b e d d e ds y s t e md e e pt od e v e l o p s y s t e mn e e d su r g e n t l yo n em e c h a n i s mt h a tc a n d i s p o s es y s t e ma tr u n t i m e , t h a ti st os a ys y s t e ma tr u n t i m em a ya d dd y n a m i c a l l yt h e m o d u l e ,t h i sk i n do fm e c h a n i s mi sd y n a m i cl o a d i n gm e c h a n i s mt h a tt h i st h e s i sw i l l s t u d y d y n a m i cl o a d i n gm e c h a n i s mi nt h i st h e s i si st h a ta p p l i c a t i o ns t a r t sf r o ms c r a t c h s os y s t e mo n l yn e e d sad y n a m i cl o a d i n gm e c h a n i s m , w h i c hc a nl o a dd y n a m i c a l l yt h e m o d u l ea n dd i s p o s et h ee m b e d d e ds y s t e m sw h i c hs u i td i f f e r e n tu s e s w eh a v ea n a l y z e ds e v e r a lk i n d so fl o a d i n gm o d ee x i s t i n ga tp r e s e n ti nt h i st h e s i s : t h ej a v a _ b a s e dd y n a m i cl o a d i n gm o d e , t h ed y n a m i cl o a d i n gm o d eo fe m b e d d e dl i n u x a n dt h ep r i n c i p l eo ft h ed y n a m i cl i n k i n gl i b r a r yi nw i n d o w s o nt h i sb a s i sw eh a v ep u t f o r w a r dt h ep r i n c i p l ea n dt h ep r o c e s so fd y n a m i cl o a d i n gm e c h a n i s mu n d e rt h eg e n e r a l m e a n i n g t h ep r i n c i p l eo fd y n a m i cl o a d i n gm e c h a n i s mr e q u i r e st h ea b i l i t yo fd y n a m i c l o a d i n ga n dd y n a m i ca n a l y z i n g d y n a m i cl o a d i n gm e c h a n i s mu s ed y n a m i cl i n k i n g p r i n c i p l ea n dt h em o d u l ei sl i n k e dt os y s t e mo n l yw h i l eb ec a l l e da n dc a r r i e do u t d y n a m i cl o a d i n gc a nb ed i v i d e di n t ot h r e eo p e r a t i o n :d o w n l o a d , l o a da n du n l o a d d o w n l o a df i n i s h e sd o w n l o a dm o d u l ef r o ml o n g - d i s t a n c et on a t i v e l o a do p e r a t i o ni st o f i n i s ht or e a dm o d u l ei n t om e m o r y , t h e nt oa n a l y z eu n r e s o l v e dr e f e r e n c eo u t s i d em o d u l e u n l o a dt h em o d u l ef r o mm e m o r yw h e ni ti sn ol o n g e ru s e d b a s e do nt h eg e n e r a lp r i n c i p l eo fd y n a m i cl o a d i n ga n dt h ek e yp r o b l e m so f d y n a m i cl o a d i n gi n - d e p t ha n a l y s i sa n ds t u d y , t h i sd i s s e r t a t i o nb r i n g sf o r w a r dad y n a m i c l o a d i n gm e c h a n i s mb a s e do n c o mf i l e s ( t h i st h e s i sc a l l e dd l o a d e r ) a f t e ra n a l y s i n g s o m ek e yp r o b l e m si n - d e p t ha sad y n a m i c a l l yl o a d i n gm o d u l e - - c o mm o d u l e f o r m a t ,c o mm o d u l en a n l es p a c em a n a g e m e n ta n d c o mm o d u l el o a d i n g , a n ds oo b , w ep r e s e n t st h ed y n a m i cl o a d i n gs y s t e mp r o t o t y p ep r o g r a md e s i g no ft h es p e c i a l e n v i r o n m e n t t h ep r o g r a mu s e st h er e a l - t i m ek e r n e lo f u c o s 一1 it om a n a g et a s k so f t h e d y n a m i cl o a d i n gs y s t e m , a n du s i n gt h ed y n a m i cl o a d i n gm e c h a n i s mt ol o a d d y n a m i c a l l yl o a d e dm o d u l e s d e s p i t et h ed y n a m i cl o a d i n gs y s t e mi sn o tt o t a l l yf r o m s c r a t c ho nt h ed y n a m i ca l l o c a t i o no ft h es y s t e m , b u li te a r lp r o v i d eu st ot h ee v e n t u a l r e a l i z a t i o no f t h ed y n a m i cl o a d i n gm e c h a n i s mat h e o r e t i c a la n dt e c h n i c a le x p e r i e n c eo n t h ea c 贮 m n u l a t i o n , a n di tc a n 舯v i d cag o o dr e f e r e n c ef o ro u ru l t i m a t er e a l i z a t i o no f t h e 重庆大学硕士学位论文 英文摘要 d y n a m i cl o a d i n gm e c h a n i s m f i n a l l y , w el e tt h ed y n a m i cl o a d i n gm e c h a n i s mw o r ko n r e m o t ea u t o m a t i cc o n t r o ls y s t e m ,a n di tc a nw o r kw e l l i nt h i sp a p e r , t h ed y n a m i cl o a d i n gs y s t e mc a ne i i s u r er e a l - t i m ea n de m b e d d e d s e c u r i t y , a n da tt h es a l n et i m ei tm a k e st h es y s t e mw i t hah i g hd e g r e eo ff l e x i b i l i t ya n d s c a l a b i l i t y t h ee n t i r es y s t e mh a ss m a l l e rf i x e df r a m e w o r k , w h i c hc a nb ed y n a m i c a l l y l o a d e dm o d u l e st 0m e e tt h en e e d so fd i f f e r e n ta p p l i c a t i o n s a n dt h e r ei sag r e a tv a l u e t ot h er e a l t i m eu p d a t i n ga n ds o t w a r eu p g r a d i n g k e y w o r d s :d y n a m i cl o a d i n ge m b e d d e ds y s t e m , c o mf i l e m 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取 得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文 中不包含其他人已经发表或撰写过的研究成果,也不包含为获得重废太堂 或其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本 研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。 一繇锄簟一期:叩伊日 学位论文版权使用授权书 本学位论文作者完全了解重废盔堂有关保留、使用学位论文的 规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许 论文被查阅和借阅。本人授权重庞太堂可以将学位论文的全部或部 分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段 保存、汇编学位论文。 保密() ,在年解密后适用本授权书。 本学位论文属于 不保密( ) 。 ( 请只在上述一个括号内打“4 ”) 导师签名: 嘲年g 月6 日 序叶lr 铭 日 j 芦 r 参 鼠 4 巧 5 轹尹 签 殄 者作 : 文 期 泛 刚 位 字 学 签 重庆大学硕士学位论文1 绪论 1 绪论 1 1 问题的提出及研究意义 1 1 1 问题的提出 软件技术的不断发展,使得开发出来的系统越来越大和复杂,但是无一例外 的是所有的软件或者是有不可忽视的b u g ,或者是不能完全满足用户的需求,或 者使用过程中需要不断地修改和升级。在通常情况下,所有的这些修改和升级会 导致停机。当用户越来越依赖一个系统的时候,这种中断对他们来说是不能忍受 的,如金融处理系统,电信交换机系统,交通控制系统以及一些关键的军事应用 上的卫星系统等等。针对这些应用,系统动态的升级和修改是必须的。随着嵌入 式应用的广泛普及到生活的各个方面,模块动态加载升级的要求在嵌入式环境下 也显得越发重要。比如在恶劣且遥远的环境下的嵌入式应用,有什么修改和升级, 如果要工作人员到现场才能完成的话,显得十分不经济和现实。但是,着这些嵌 入式应用提供了动态修改和升级的接口,则这些繁琐的动作可以通过网络或者无 线接口轻松完成。 1 1 2 研究的意义 在当前数字信息技术和网络高速发展的后p c ( p o s t p c ) 时代、嵌入式系统已 经广泛地渗透到科学研究、工程设计、军事技术、各类产业和商业文化艺术以及 人们的日常生活等方方面面中。1 9 7 0 年左右出现了嵌入式系统的概念,此时的嵌 入式系统很多都不采用操作系统,它们只是为了实现某个控制功能,使用一个简 单的循环控制对外界的控制请求进行处理。当应用系统越来越复杂、应用的范围 越来越广泛的时候,每添加一项新的功能,都可能要从头开始设计。这个时候就 迫切需要一个实时嵌入式操作系统来完成任务。 正是基于此,国内外开始对嵌入式操作系统着手进行研究。随后出现了商业 实时操作系统有w i n dr i v e rs y s t e m 公司的v x w o r k s 、p s o s y s t e m ,m e n t o rg r a p h i c s 公司的v r t x ,m i c r o s o f t 公司的w i n d o w sc e 和l i n u x 的嵌入式实时版本,以及日 本的i t r o n 系列操作系统等。 随着嵌入式系统的不断发展,其应用重心正在逐步从自动化控制、军事技术、 工业生产、科学研究等方面向日常生活中转移,像手机、p d a 、v c d 机、数字电 视机、机顶盒、车载g p s 系统、信息家电( i n f o r m a t i o na p p l i a n c e ) 等都属于嵌入式 系统,而嵌入式操作系统又是嵌入式系统的灵魂。所以一个具有实时、可动态配 置、多任务、提供网络通信和用户图形化界面等服务的,可进行一定的定制或二 次开发,并可以对应用软件模块的加载提供有效支持的嵌入式操作系统是非常关 重庆大学硕士学位论文1 绪论 键的。 由于无处不在的数字化和无处不在的通信,造成了嵌入式系统的多样化特征, 使得对系统进行面向应用的定制比通用系统更为必要。因为嵌入式的应用不仅仅 局限于原来的只是面对系统级的需求,而是需要面对用户级的应用,针对各种具 体不同的应用要能够加载不同应用需求模块文件。因此嵌入式系统开发迫切要求 面向应用的、可裁减、可动态装配的嵌入式系统。所谓面向应用就是指针对实际 的、具体的应用问题而配置产生的。传统的嵌入式操作系统的构建可配置性及其 加载机制多数是静止的,把函数或模块静态连接到系统中,然后重新编译运行; 尽管也有系统也考虑了动态加载机制,但往往是基于某个具体的系统环境下的动 态加载机制,很难把这种动态加载机制运用于别的系统。随着嵌入式应用要求适 应外部瞬变的环境,我们可考虑如果系统拥有一个动态加载机制,它可以在运行 状态下动态的装卸模块,可以使系统应用从零开始动态地加载模块来配置满足各 种不同应用的需要,那么系统只需要一个该加载机制,就可以灵活的配置来满足 各种不同应用的需求。正是基于此种思想考虑,本文提出了基于c o m 文件的一种 动态加载机制,论文对该动态机制进行了全面系统的研究和分析。 1 2 国内外研究现状 嵌入式系统经过几十年的发展,积累了丰富的理论,也使得相应技术走向成 熟;而模块化编程思想的出现,使得系统可以分解一系列的模块,从而为系统的 可移动性、扩展性提供了基础【1 】【习;随着嵌入式系统的深入发展,人们提出并实现 了一种能够在运行状态下配置系统的机制,也即系统可以在运行状态下动态的装 卸功能模块 2 1 。目前国内外在这方面已经有不少这样的研究,但关于动态加载机制 里面涉及到的公开资料较少,而且一些系统的加载由于环境的限制也很难看到其 工作原理。尽管这样,还是有不少构建可配置、支持动态加载的嵌入式操作系统 理论的提出和探讨【s 】,并应用到各个具体领域具体环境下。 现在关于嵌入式系统下的加载机制的研究已经引起很多人的重视,但是关于 嵌入式系统的加载机制多数是把模块静态链接到系统,然后重新编译运行,是属 于静态加载;有些系统也考虑了动态加载机制,但往往是基于某个具体的系统环 境下的动态加载机制,很难把这种动态加载机制运用于别的系统。 随着嵌入式系统的适应瞬变的市场要求,迫切需要针对各种具体不同的应用 需求要能够动态加载不同的应用模块文件,换言之,要对一般意义下的动态加载 机制进行研究。 2 重庆大学硕士学位论文1 绪论 1 3 论文的研究目的 随着嵌入式系统的深入发展,迫切需要一种机制能在运行状态下配置系统, 也就是系统在运行状态下可以动态的添加模块,这种机制就是本论文要研究的动 态加载机制。这样系统只需要一个动态加载机制,就可以从零开始动态地加载模 块来配置各种满足不同应用需要的嵌入式系统。 本研究是在受限内存空间上,面向具体的嵌入式应用,从零开始,通过加载 程序加载外部模块,构建可配置的嵌入式系统。本论文就是讨论构建可配置系统 的基础动态加载机制。本论文通过对目前存在的动态加载技术分析,提出了 一般意义下的动态加载机制的原理和加载过程模型,在对动态加载机制的原理进 行了深入地分析研究后,提出了一种基于c o m 文件模块格式的动态加载机制。然 后就基于c o m 文件格式的动态加载的方式进行了深入的分析和探讨,并在文章中 给出了一个具体环境下的基于c o m 文件格式的动态加载方案的设计,论文最后在 远程自动监控系统上验证了该方案的有效性。 1 4 动态加载实现方式和发展方向 当前嵌入式系统一般采用的是交叉开发方式,它的开发环境和运行环境不一 样。这就带来一个问题:应用程序如何使用嵌入式操作系统提供的服务? 这是因 为系统模块的代码已经存放在嵌入式设备的存储器中,而应用程序是在台式机上 开发的。在生成应用程序可执行代码时,无法直接定位操作系统和其他功能库提 供的a p i 函数的代码。因此操作系统必须提供某种方式使应用程序能间接的定位 到这些a p i 函数的代码。 根据所掌握的资料,目前实现应用程序动态加载功能有两种技术方式。一是 利用j a v a 技术,在嵌入式操作系统上实现一个j a v a 虚拟机,在虚拟机上可以加载 执行各种j a v a 应用程序。二是对现有的通用操作系统的应用程序加载方式进行简 化和修改,实现专门的适用于嵌入式操作系统环境的动态加载功能软件模块。这 种方式的实现与操作系统结构和硬件环境紧密相关,不同的操作系统其加载机制 一般是不相同的。但这种方式的核心问题都是系统a p i 函数的重定位。 这两种动态加载方式各有自己的优缺点,但它们之间并不矛盾,可以共存于 一个系统中,互相配合,取长补短。 3 重庆大学硕士学位论文 1 绪论 表1 1 两种动态加载方式优缺点比较 t a b l e l 1c o m p a r eo f a d v a n t a g e sa n dd i s a d v a n t a g e so f d y n a m i cl o a d i n g 优点缺点 j a v a 虚拟j a v a 应用稃序与底层操作系统无由于存在j a v a 虚拟机的缘故, 机方式关,兼容性极好,实现了j a v a 虚拟占用内存资源多。执行速度慢, 机的操作系统都可以运行;另外利部分功能受到虚拟机限制不能 用j a v a 开发网络应用十分简单。实现。 专用加载加载方式针对操作系统专门设计, 不同的系统其加载方式不同, 方式系统内存需求小,应用程序执行速导致应用程序的格式也不同, 度快,与j a v a 相比,应用程序实现兼容性差。 的功能受到的限制较少。 随着计算机硬件技术的发展和成本的降低,嵌入式系统的c p u 运算能力和存 储容量的限制会越来越小,再加上网络应用在嵌入式系统中的应用,基于j a v a 虚 拟机的应用程序动态加载方式有着很好的发展前景。同样由于硬件能力的提高, 一些原本只能用于通用操作系统的高级加载方式也可以在嵌入式操作系统中实 现,比如动态链接。这样应用程序的加载会更加灵活方便,执行效率也会更高。 1 5 论文的主要工作 对嵌入式环境下动态加载机制的研究,这是一个较难的研究方向,该机制的 实现需要软硬件环境的支撑,整个机制的实现涉及的工作量比较大,单凭个人的 能力在短时间内很难实现。本人所作的工作也非常有限,在导师的指导下,所做 的主要工作有:分析了国内外的相关的研究进展,指出了各个成果的优缺点;讨 论并分析了已有的嵌入式系统下的动态加载的相关技术,分析了作为可动态加载 的目标模块的格式;提出并总结了模块动态加载的一般原理,并建立了该加载过 程模型,给出了该模型的算法设计;提出了一种基于c o m 文件格式的动态加载机 制,在对c o m 文件格式的加载方式进行了深入地分析后,设计了一个与肛c o s i i 实时内核一起工作的动态加载方案,并给出了动态加载机制模块_ d l o a d e r 的详细 设计,同时分析讨论了实现该机制的关键技术;论文最后在远程自动监控系统上 验证了该机制的有效性。 1 6 论文的结构 本论文详细探讨了动态加载机制的原理,提出了一种基于c o m 文件格式模块 的动态加载机制,并加以探讨和设计。 本文的内容安排如下: 第一章绪言,主要是引入并介绍了本文要研究的内容:动态加载机制的设计 与实现。说明了论文的结构及内容安排。 4 重庆大学硕士学位论文 1 绪论 第二章对比分析了基于j a v a 的动态加载方式,w i n d o w s 动态链接库原理在嵌 入式系统中的应用,嵌入式l i n u x 的动态加载方式。详细分析了它们的工作原理和 工作过程。 第三章在对动态加载涉及到的各个技术环节进行分析探讨后,给出了模块动 态加载机制的一般原理,并根据动态加载机制的原理建立了个动态加载过程模 型,同时给出了该模型的算法设计,为本文将要设计的动态加载机制打下基础。 第四章提出了基于c o m 文件格式的动态加载方式,并对c o m 文件的加载 原理方式、文件格式特点、名字空日j 管理以及动态加载中的动态内存管理等关键 问题进行了深入的分析和探讨。 第五章设计了一个结合p c o s 1 l 实时内核一起工作的动态加载方案,其中主 要介绍了动态加载机制模块d l o a d e r 的设计与实现,给出了该机制模块的详细设 计与实现,并对实现该机制的关键技术进行了探讨,论文最后在远程自动监控系 统上验证了该机制的部分功能。 第六章论文内容总结。探讨了本课题的成功和不足,指出下一步改进的方向 和目标。 重庆大学硕士学位论文2 现有的几种动态加载方式分析 2 现有的几种动态加载方式分析 动态加载是系统动态扩展的一种实现方法,目前关于动态加载机制的研究已 经起步,也出现了各种各样的动态加载方式,主要有两类:一是重定位装入目标 程序,这种方式的实现与操作系统结构和硬件环境紧密相关,不同的操作系统的 加载机制一般是不相同的。但是这类加载的核心问题都是a p i 函数的重定位。二 是利用j a v a 技术,在嵌入式操作系统上实现一个j a v a 虚拟机,通过虚拟机可以加 载各种j a v a 应用程序。最后给出本论文要研究的动态加载的概念,也即文中提出 的一般意义下的动态加载机制,系统最初状态只有一个可动态添加模块的动态加 载机制,在运行状态下可以动态地加载模块配置系统来满足不同应用的需要。 2 1 基于j a v a 的动态加载方式 j a v a 程序语言在其产生之初,本身就是为机顶盒设备设计的。后来,由于它 在互联网上的出色表现,使它赢得了巨大的声誉和财富。现在它又来了个浪子回 头,回到自己原来的领地嵌入式系统。j a v a a p i 的一个子集 j 2 m e ( j a v a 2m i c r oe d i t i o n ) ,是专为只有很小内存的嵌入式设备设计的【3 j 。 j a v a 语言是跨平台运行的,可以很容易地开发应用程序,也可以方便地安装 到手机等嵌入式设备中,而且j 2 m e 提供了h t t p 、t c p 等高级i n t e r n e t 协议,j a v a 程序可以自由的访问i n t e m e t 。 2 1 1j 2 m e 简介 m o t o r o l a 是j 2 m e 的主要支持者,第一个在手机上移植了k v m ,k v m 是只需 要几百k 的内存就可以运行的虚拟机;j 2 m e 对v m 、c o n f i g u r a t i o n 和p r o f i l e 三 层做了特殊的实现,以适用于有双向网络连接,但是硬件资源有限的设备。 j 2 m e 内部分为3 层,从下到上分别是v m ,c o n f i g r a t i o n 和p r o f i l e v m 负责 建立j a v a 虚拟机,解释j a v ab y t ec o d e c o n f i g r a t i o n 建立了核心类库,功能比较少, 主要面向水平市场,分为两类:c d c 和c l d c ,c d c ( c o n n e c t e dd e v i c ec o n f i g r a t i o n ) 基 于传统的j a v a 虚拟机,针对固定设备,比如机顶盒,网络电视等等;c l d e ( c o n n e c t e d l i m i t e dd e v i c ec o n f i g r a t i o n ) 基于嵌入式v m ,针对移动设备,比如双向传呼,手 机,p d a 等。p r o f i l e 建立了高级核心类库,功能丰富,面向垂直市场。 j 2 m e 各个部分之间的关系如下: o c o n f i g r a t i o n 和p r o f i l e 的关系。他们都是基于j c p ( j a v ac o m m u n i t yp r o c e s s ) 的建议实现。应用开发者开发的应用是针对某个特定的设备p r o f i l e 的,而p r o f i l e 是基于c o n f i g r a t i o n 的,所以p r o f i l e 包含了c o n f i g r a t i o n 提供的所有功能。一个 6 重庆大学硕士学位论文2 现有的几种动态加载方式分析 c o n f i g r a t i o n 可以支持不同的p r o f i l e 。同一个p r o f i l e 也可能基于不同的c o n f i g r a t i o n k v m 和c o n f i g r a t i o n 之间联系非常紧密。目前,k v m 是做为c l d c 一个组成 部分发布的。c l d c 是在k v m 上面的库,而k v m 是根据d d c 的规格说明实现的j a v a 虚拟机。 k v m 和0 5 之间的接口可以有j a r a ( j a v aa p p l i c t i o nm a n a g e r ) 。j a m 使得类的 加载可以不借助文件系统、命令行的加载方式。 2 1 2 实现方法 只要将j a v a 虚拟机和相应的j a v a 支持库移植到嵌入式操作系统上,就可以通 过它们实现动态加载j a v a 应用程序的功能。基于j 2 m e 的动态加载方式的核心工 作就是k v m 的移植。 k v m 的源码用c 语言编写,它的大部分代码对所有实现来说都是相同的,小 部分机器相关或者平台特定的代码被单独放在少数文件里。每次移植时必须重新 编写或修改这些文件。必须实现一小部分相关的已定义好的运行函数,作为k v m 和下层本地操作系统环境之间的必要的接口层。这些函数完成的操作如下:初始 化,终止操作( c l e a n - u p ) ,堆分配回收,致命错误报告,事件处理,当前时间。 接下来就是编译d d c 和k v m 的源码。整个c l d c 需要的存储空间在1 6 0 k b - - - 5 1 2 k b 之间,有w i n d o w s n t ( w i r d 2 ) 和s o l a r i s 环境的参考模型。编译d d c ,k v m 的工具 需要支持a n s i c 标准。 把k v m 移植到嵌入式操作系统后,如果在带有能运行本地应用程序的用户界 面的设备上,k v m 代码可以作为一个系统应用程序,需要时由系统调用。对于没 有这种用户界面的设备,k v m 代码提供了一种称为j a v a a p p l i c a t i o n m a n a g e r ( j a m ) 的参考实现机制,作为主机操作系统和虚拟机之间的一个接口。j a m 假定应用程 序可以j a r 文件的形式通过网络或其他连接方式下载。j a m 读取j a r 文件的内容 和相关的描述符文件,然后以k v m 的主类作为一个参数运行k v m 。k v m 参考实 现可以从一个目录路径加载,也可以从一个j a r 文件中加载。需要时,可以在这 两种设备相关类加载机制方式之间择一而用。 2 2w i l l d o w s 的动态链接库原理 2 2 1 动态链接库的概念 动态链接库( d l l s ) 【6 】【7 】是从c 语言函数库和p a s c a l 库单元的概念发展而来 的。但是函数库需要每个程序都要拥有自己的函数,那么w i n d o w s 程序将变的很 庞大。w m d o w s 的发展要求允许同时运行的几个程序共享一组函数的单一拷贝。 动态链接库就是在这种情况下出现的。动态链接库不用重复编译或链接,一旦装 入内存,d l l s 函数可以被系统中的任何正在运行的应用程序软件所使用,而不必 7 重庆大学硕士学位论文2 现有的几种动态加载方式分析 再将d l l s 函数的另一拷贝装入内存。 动态链接库( d y n a m i cl i n kl i b r a r y ,缩写为d l l ) 是一个可以被其它应用程 序共享的程序模块,其中封装了一些可以被共享的例程和资源。 2 2 2 动态链接库的工作原理 动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而 是仅仅在其中加入了所调用函数的描述信息( 往往是一些重定位信息) 。仅当应用 程序被装入内存开始运行时,在w i n d o w s 的管理下,才在应用程序与相应的d l l 之自j 建立链接关系。当要执行所调用d l l 中的函数时,根据链接产生的重定位信 息,w i n d o w s 才转去执行d l l 中相应的函数代码,采用这种方法,d l l s 达到了 复用代码的极限。动态链接库的另一个方便之处是对动态链接库中函数的修改可 以自动传播到所有调用它的程序中,而不必对程序作任何改动或处理。 2 2 3 动态链接库的实现方法 加载时动态链接( l o a d - t i m ed y n a m i cl i n k i n g ) 这种用法的前提是在编译之前已经明确知道要调用d l l 中的哪几个函数,编 译时在目标文件中只保留必要的链接信息,而不含d l l 函数的代码;当程序执行 时,利用链接信息加载d l l 函数代码并在内存中将其链接入调用程序的执行空间 中,其主要目的是便于代码共享。 运行时动态链接( r u n - t i m ed y l l f l m i cl i n k i n g ) 这种方式是指在编译之前并不知道将会调用哪些d l l 函数,完全是在运行过 程中根据需要决定应调用哪个函数,并用l o a d l i b r a r y 和g e t p r o c a d d r e s s 动态获得 d l l 函数的入口地址。 2 2 4 动态链接库原理在嵌入式系统中的应用 在嵌入式系统的设计中,经常涉及到在运行时刻更新部分功能模块的设计。 例如一个用于数据采集与处理的设备,包括数据采集,数据发送,命令接收等功 能模块,有可能被要求在继续进行数据采集的同时采用新的数据格式向一个新的 数据处理系统发送数据。在这种情况下,就必须在运行时刻动态的更新数据发送 的功能模块,也就是模块可以被动态加载。 在c c + + 中,这样的功能可以很容易的利用动态链接库来实现。w i n 3 2a p i 函数l o a d l i b r a r y 和f r e 圯l i b r a r y 提供了在运行时刻加载新的功能模块和释放内存空 间的功能。需要被更新的功能模块被封装在动态连接库里,主程序利用l o a d l i b r a r y 函数装载该动态链接库,然后调用其中的功能模块。需要更新某功能模块的时候, 首先终止运行该功能模块,利用f r e e l i b r a r y 函数卸载现有的动态链接库,通过网 络或者是其他通讯端口将新的动态链接库文件发送到指定目录下,然后再次利用 l o a d l i b r a r y 函数装载新的动态链接库并调用其中的新功能模块。 重庆大学硕士学位论文2 现有的几种动态加载方式分析 相比较j a v a 来说,实现程序动态加载的能力,用w i n d o w s 的动态链接库有以 下优点:首先,c c + + 所使用的动态链接库是经过编译的可执行代码,可以直接 被主程序所调用执行。j a v a 的类库是字节码,在第一次被调用之前必须经过虚拟 机的及时编译才能够被调用执行。因此,j a v a 程序的启动时间要比c c + + 程序的 启动事件更长。另外,j a v a 程序的执行效率普遍来说要比c c + + 程序低2 0 一 3 0 。其次,c c + + 能够利用f r e e l i b r a r y 函数释放旧的功能模块所占用的内存空间, 从而保持了功能模块名和动态链接库文件名的一致性,同时节省了内存空间和磁 盘空间。而j a v a 并不提供类似的类库卸载功能,被旧的功能模块所占用的内存空 间已经不再被使用却无法被释放,因此会有相当数量的内存被浪费。 综上所述,利用c ,c + + 和j a v a 都能够实现在运行时刻更新系统的功能。相对 来说,基于动态链接库技术的c c + + 方案在执行效率,内存利用以及操作效率等 方面都比基于类库加载器的j a v a 方案更有优势。目前动态链接库并没有应用于嵌 入式系统,但是可以在嵌入式系统里利用动态链接库这种机制来完成模块的动态 加载。 2 3 嵌入式l i n u x 的动态加载方式分析 l i n u x 是可以运行于个人电脑上的类u n i x 的操作系统,问世于1 9 9 1 年。l i n u x 所具备的稳定、高效、易定制、易裁减、硬件支持广泛等特点,结合其所独具的 免费、开放源代码等特征,使得l i n u x 在嵌入式领域内也得到迅速的发展【4 】【5 】。 2 3 1 嵌入式l i n u x 简介 l i n u x 本身不是一个实时系统,并且内核体积比较庞大,直接用于嵌入式设备 不太合适。但是l i n u x 内核的完全开放使人们可以自己设计和开发出真正的硬实时 系统,软实时系统在l i n u x 中也容易得到实现。另外还可以利用l i n u x 的网络协议 栈将其开发成为嵌入式的t c p 1 p 网络协议栈。可以对l i n u x 内核进行裁减和修改, 使之一方面具备实时调度功能,一方面能提供嵌入式环境下需要的基本功能同时 体积不至于太大。 一个小型的嵌入式l i n u x 系统只需要下面三个基本元素:引导工具、l i n u x 微 内核,由内存管理、进程管理和事物处理构成和初始化进程。如果要让它能完成 实际的功能且继续保持小型化,还要加上硬件驱动程序和提供所需功能的一个或 更多应用程序。要想再增加一些,还可以再加上一个文件系统和t c p i p 网络堆栈。 嵌入式l i n u x 可以利用l i n u x 的很多长处:( ) l i n u x 提供了现代操作系统和环 境的方便和强大功能,如网络服务,g u i 服务,c c + + j a v a 开发工具和标准的编 程接口。利用l i n u x 和l i n u x 下开发环境的快速发展的优点。因为嵌入式l i n u x 对l i n u x 所做的改动比较少,它可以方便的移植到l i n u x 较新的版本中,升级速度 9 重庆大学硕士学位论文2 现有的几种动态加载方式分析 较快。 2 3 2 嵌入式l i n u x 的动态加载机制 由于嵌入式l i n u x 内核来自l i n a x 内核,因此它们的动态加载机制基本上是一 样的。首先看一下l i n u x 的动态加载机制。l i n u x 可以动态地加载与卸载操作系统 部件。l i n u x 提供了两个命令:使用i n s m o d 来显式加载核心模块,使用r m m o d 来 卸载模块。同时核心自身也可以请求核心后台进程k e m e l d 来加载与卸载模块。 模块的加载 核心模块的加载方式有两种。首先一种是使用i n s m o d 命令手工加载模块。另 外一种则是在需要时加载模块;称为请求加载。当核心发现有必要加载某个模块 时,如用户安装了核心中不存在的文件系统时,核心将请求核心后台进程( k e m e l d ) 准备加载适当的模块。这个核心后台进程仅仅是一个带有超级用户权限的普通用 户进程。当系统启动时它也被启动并为核心打开了一个进程间通讯( 坤c ) 通道。 核心需要执行各种任务时用它来向k e r n e l d 发送消息。k e m e l d 的主要功能是加载和 卸载核心模块,k e m e l d 自身并不执行这些任务,它通过某些程序如i n s r a o d 来做 此工作。它只是核心的代理,为核心进行调度。 n s m o d 程序必须找到要求加载的核心模块。这些核心模块和系统中其他程序 一样是已连接的目标文件,但是它们被连接成可重定位映象。i n s m o d 将执行一个 特权级系统调用来找到核心的输出符号。i n s m o d 将模块读入虚拟内存并通过使用 来自核心输出符号来修改其未解析的核心例程和资源的引用地址。这些修改工作 采取由i n s m o d 程序直接将符号的地址写入模块中相应地址来修改内存中的模块映 象。当i n s m o d 修改完模块对核心输出符号的引用后,它将再次使用特权级系统调 用来申请足够的空间来容纳新核心。核心将为其分配一个新的m o d u l e 结构以及足 够的核心内存来保存新模块,并将它放到核心模块链表的尾部。然后将其新模 块标志为u n i n i t i a l i z e d 。 图2 1 给出了一个加载两个模块:v f a t 和f a t 后的核心链表示意图。不过图 中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二手双绞线传输器维修合同7篇
- 小额借款项目抵贷款合同书范本3篇
- 西宁市租赁房屋协议3篇
- 新解读《GB-T 32618-2016政务服务中心信息公开业务规范》
- 淮安市物流公司保洁劳务合同协议4篇
- 新解读《GB-T 31147-2014人身损害护理依赖程度评定》
- 新解读《GB-T 31176-2014休闲咨询服务规范》
- 疫情期间租车合同范本
- 合法种植养殖合同范本
- 别墅灯具采购合同范本
- 涉警网络负面舆情应对与处置策略
- 新译林版高一必修三单词表全套
- 现代智力七巧板课件
- 采购急料追踪流程课件
- 2024年2024年2024年全国初中数学联合竞赛试题及参考答案
- 《红楼梦》中的家族兴衰与社会变革
- 综合能源管理平台方案设计说明书
- 工程材料、构配件或设备清单
- 小学一年级《体育与健康》教学课件
- 小班-数学-爱跳的棉花糖(上下、前后、里外方位)-课件(互动版)
- 葡萄糖生产工艺原理、过程控制点及流程图
评论
0/150
提交评论