(计算机应用技术专业论文)任务可热插拔技术实现研究.pdf_第1页
(计算机应用技术专业论文)任务可热插拔技术实现研究.pdf_第2页
(计算机应用技术专业论文)任务可热插拔技术实现研究.pdf_第3页
(计算机应用技术专业论文)任务可热插拔技术实现研究.pdf_第4页
(计算机应用技术专业论文)任务可热插拔技术实现研究.pdf_第5页
已阅读5页,还剩59页未读 继续免费阅读

(计算机应用技术专业论文)任务可热插拔技术实现研究.pdf.pdf 免费下载

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

文档简介

哈尔滨t 程人学硕十学位论文 摘要 随着计算机技术的不断发展,计算机系统得到了广泛的应用,尤其是在 安全性和可靠性要求极高的系统中,例如电信系统和航空管理系统。然而这 些系统无法承担为系统维护、升级等原因而停机所带来的损失。任务热插拔 技术便应运而生。具有热插拔功能的系统能够对其自身进行诊断和维护,因 此系统能够监测到其自身性能的变化和错误的发生,指明其原因,并及时做 出响应。任务热插拔技术能够提高系统的性能和安全性,同时减少对系统管 理员的专业技能要求。对于诸如操作系统这类很复杂的软件系统来说,该技 术提供了一种简单和高效的维护方法。 本文首先介绍了任务可热插拔技术的概念及实现原理,通过任务可热插 拔技术与自适应代码技术的比较来说明热插拔技术在自律系统领域应用的优 势。然后介绍了任务可热插拔技术在提高计算机系统性能方面的作用。 其次,讨论了基于热插拔管理器的任务可热插拔系统模型,包括监测模 块,插拔管理模块以及功能模块,并简要介绍了各个模块的作用。 再次,研究了两种不同类型的任务热插拔实现方法:修改运行时环境的 方法以及基于设计模式的方法。分析了设计与实现任务可热插拔系统的关键 问题,并给出了初步解决方案。 最后,给出了基于热插拔管理器的任务可热插拔系统设计方案,包括热 插拔管理器的初步设计以及基于代理模式的可热插拔模块的详细设计。通过 实验验证了该方法的可行性。论文最后总结工作,并提出了下一步的研究重 点。 关键词:任务热插拔;代理模块;系统维护;软件升级 哈尔滨工程大学硕十学位论文 a b s t r a c t c o m p u t e r sh a v eb e e ni nw i d eu s et h e s ey e a r s ,e s p e c i a l l yi ns e c u r i t ya n d m i s s i o nc r i t i c a lf i e l d ss u c ha si nt e l e c o m m u n i c a t i o u sa n da i rt r a f f i cc o n t r o l s y s t e m s b u tt h es y s t e m so ft h e s ec o m p u t e r sc a nn o ta f f o r da n yd o w nt i m ef o r m a i n t e n a n c e ,u p g r a d ea n db i g f i x i n gr e a s o n s t h e ns o f t w a r eh o t s w a p p i n gi sp u t f o r t h as y s t e mw i t hh o t - s w a p p i n gc a l lb es e l f - d i a g n o s ea n ds e l f - m o d i f ys u c ht h a t i tc a l ln o t i c ep e r f o r m a n c ea n dr u n t i m ei n c o r r e c t n e s s ,p i n p o i n tt h e i rc a u s e s ,a n d r e a c ta c c o r d i n g l y t h e s ea b i l i t i e sc a ni n c r e a s ep e r f o r m a n c e ,u p t i m e ,a n ds e c u r i t y , w h i l es i m u l t a n e o u s l yr e d u c i n gt h ee f f o r ta n dk n o w l e d g er e q u i r e do fs y s t e m a d m i n i s t r a t o r s f o ra l r e a d y c o m p l e xp i e c e so fc o d es u c ha so p e r a t i n gs y s t e m s , h o t - s w a p p i n gp r o v i d e sas i m p l e r ,h i g h e rp e r f o r m a n c e ,a n dm o r em a i n t a i n a b l e m e t h o do f a c l a i e v i n ga u t o n o m i cb e h a v i o r f i r s t l y , t h ec o n c e p to fs o f t w a r eh o t - s w a p p i n gi si n t r o d u c e da sw e l la st h e u s u a lf i v e s t e p s f o ra c h i e v i n ga l la p p l i c a t i o nw i t h h o t s w a p p i n g ,t h e nt h e a d v a n t a g e so fh o t s w a p p i n gi na u t o n o m i cc o m p u t i n gs y s t e m si se x p l a i n e db y c o n t r a s t i n gi tw i t ha d a p t i v ec o d e a l s ot h ee f f e c to ni m p r o v i n gp e r f o r m a n c eo f c o m p u t e rs y s t e m 、i t l lh o t - s w a p p i n gi sm e n t i o n e d s e c o n d l y , ak i n do fs y s t e ma r c h i t e c t u r eo fs o f t w a r eh o t s w a p p i n gb a s e do n s w a pm a n a g e ri sp u tf o r w a r d ,i n c l u d i n gm o n i t o r i n gm o d u l e ,s w a pm a n a g e r m o d u l ea n df u n c t i o nm o d u l e ,o fw h i c he a c hi sd e s c r i b e d t h i r d l y , t w ot y p e so fs o f t w a r eh o t - s w a p p i n gi m p l e m e n t a t i o nm e t h o di s s t u d i e d :r u nt i m ee n v i r o n m e n tm o d i f i c a t i o nm e t h o da n dd e s i g np a r e mm e t h o d t h e nt h ek e yp r o b l e m sr e g a r d i n gt od e s i g na n di m p l e m e n t i o no f h o t s w a p p i n ga r e d i s c u s s e d ,a n dt h eg e n e r a ls o l u t i o n sa r es u g g e s t e d f i n a l l y , t h ed e s i g no fs o f t w a r eh o t s w a p p i n gb a s e do ns w a pm a n a g e ri sp u t f o r t h ,i n c l u d i n gt h eg e n e r a ld e s i g no fs w a pm a n a g e ra n dt h ed e t a i l e dd e s i g no f h o t - s w a p p a b l em o d u l e s a n dt h e ne x p e r i m e n ti sd o n et ot e s t i f yv a l i d i t yo ft h e 哈尔滨工程大学硕士学位论文 m e t h o d a tl a s t ,t h ec o n c l u s i o ni sd r a w na n dt h ef u r t h e rr e s e a r c h e so nt h i si s s u e a r ep u tf o r w a r d k e y w o r d s :s o f t w a r eh o t - s w a p p i n g ;p r o x ym o d u l e ;s y s t e mm a i n t e n a n c e ; s o f t w a r eu p g r a d e 哈尔滨工程大学 学位论文原创性l 声明 本人郑重声明:本论文的所有工作,是在导师的指导下,由 作者本人独立完成的。有关观点、方法、数据和文献的引用已在 文中指出,并与参考文献相对应。除文中已注明引用的内容外, 本论文不包含任何其他个人或集体已经公开发表的作品成果。对 本文的研究做出重要贡献的个人和集体,均已在文中以明确方式 标明。本人完全意识到本声明的法律结果由本人承鸪。 作者( 签字) :7 州如彝、 日期:矿c 年弓月6 日 哈尔滨工程大学 学位论文授权使用声明 本人完全了解学校保护知识产权的有关规定,即研究生在 校攻读学位期间论文工作的知识产权属于哈尔滨工程大学。哈尔 滨工程大学有权保留并向国家有关部门或机构送交论文的复印 件。本人允许哈尔滨工程大学将论文的部分或全部内容编入有关 数据库进行检索,可采用影印、缩印或扫描等复制手段保存和汇 编本学位论文,可以公布论文的全部内容。同时本人保证毕业后 结合学位论文研究课题再撰写的论文一律注明作者第一署名单位 为哈尔滨工程大学。涉密学位论文待解密后适用本声明。 本论文( 口在授予学位后即可 口解密后) 由哈尔滨工程大学送交有关 作者( 签字) :闱白、瓢 日期:w 吖年;月舌日 哈尔滨工程大学硕士学位论文 1 1 研究背景 第1 章绪论 随着计算机性能的不断提升,计算机系统变得越来越复杂,虽然w m d o w s 图形界面操作系统的出现,使用户与计算机之间的交互变得简单,但是计算 机系统的复杂性,尤其是软件系统复杂性的增加给系统的配置和维护带来相 当的困难,很多系统和软件的维护工作需要经过特殊培训的人员才能完成。 并且系统的复杂性仍然在不断的增加。 许多软件系统需要为客户提供不问断服务,软件的动态升级技术因此成 为当今软件维护领域的一个重要研究课题,能否提供不问断的服务正在成为 人们衡量软件系统的一项重要指标。 软件开发技术和方法能够帮助软件工程师建立越来越庞大、复杂、功能 强大的系统,但是被建系统本身可能含有错误,可能无法实现预计的所有功 能,因此在系统运行的过程当中,系统故障频繁出现,从而导致人们在系统 维护上所花费的时间以及维护费用大大的增加。对于一些非专业人员来说, 使系统恢复的最简单方法就是宏重启。而对于一些安全性和可靠性要求极高 的系统来说,全面重启并对软件系统进行升级将会带来无法接受的时间延迟 和经济损失,甚至可能带来致命的危害。同时对一些新的分布式计算形式, 诸如网格计算和面向服务的计算等,其应用开发环境处在不断变化之中,且 对应的软件通常要有很高的服务质量保证。因此在软件的生命周期内,软件 必须保持不断的进化以修正软件故障、扩展服务功能、提高系统性能以适应 新的运行环境和用户需求,这将可能导致系统的中断运行。然而,随着用户 越来越依赖于系统,他们变得越来越不能容忍系统的中断。对一些公司来说, 系统中断是不允许的m ,或者会引起管理代价的显著提高汹,。例如:人们无法 在停止软件系统的情况下对控制航天飞机的系统进行升级,否则将会终止其 生命支持系统。再如,停止银行的交易处理系统而对其进行维护将会带来严 重的经济损失,尤其是那些具有良好声誉,能够提供高效服务的公司。在电 哈尔滨下稗大学硕士学位论文 信领域,交换系统具有比较严格的要求,每四十年只允许有两小时的停机时 间,因此必须采取一种不会长时间影响系统的运行而对系统进行维护的方法。 表1 1 是i n t e r n e t w e e k 在2 0 0 0 年对此类需要持续服务的系统中途停机造成损失 的调查表,。此类系统在软件的生命周期中,必须保持不断的进化,以修正 软件故障、扩展服务功能、提高系统性能。因此需要系统有动态更新的机制 来保证系统在不中止当前运行的情况下实现动态升级, 表1 1 系统中途停机造成损失的调查表 d o w n t i m ec o s t s ( p e rh o u r ) 停机每小时损失 b r o k e r a g eo p e r a t i o n s $ 6 ,4 5 0 ,0 0 0 c r e d i tc a r da u t h o r i z a t i o n $ 2 ,6 0 0 ,0 0 0 e b a y ( 1o u t a g e2 2h o u r s ) $ 2 2 5 ,0 0 0 a i i l a z o n t o m $ 18 0 ,0 0 0 p a c k a g es h i p p i n gs e r v i c e s $ 15 0 。0 0 0 h o m e s h o p p i n gc h a n n e l $ 11 3 0 0 0 a i r l i n er e s e r v a t i o nc e n t e r $ 8 9 ,0 0 0 c e l l u l a rs e r v i c ea c t i v a t i o n $ 4 1 ,0 0 0 a r i s e r v i c ef e e s $ 1 4 0 0 0 许多文献中提及过相关的方法,例如:软件运行时演进、动态程序升级 等。除了研究项目,越来越多的商用软件程序提供相似的属性来提高用户端 的可扩展性。运行时扩展设备在许多操作系统和面向对象组件模块中是快捷 有效的。这些设备使得系统可以在无需重新编译的情况下,于运行时加载新 的组件来改进系统的性能。任务热插拔就是此类维修方法之。任务热插拔 技术通过对运行中的系统动态的插入监测代码,诊断代码以及功能代码来提 高系统的性能及安全性,同时能够减少对系统管理员的指示要求,进一步提 高系统的自律性能。 1 2 选题的目的和意义 硬件热插拔是大家比较熟悉的概念( 热插拔( h o t p l u g g i n g 或h o ts w a p ) 其功能就是允许用户在不关闭系统,不切断电源的情况下取出和更换损坏的 硬盘、电源或板卡等部件,从而提高了系统对灾难的及时恢复能力、扩展性 2 哈尔滨工程大学硕士学位论文 和灵活性等,例如一些面向高端应用的磁盘镜像系统都可以提供磁盘的热插 拔功能。 类比于硬件热插拔技术,软件热插拔技术是指当整个系统仍处于运行的 过程当中,对软件程序或程序的一部份进行更换娜。软件热插拔是针对关键任 务系统的可用性而提出的。它将完成某任务的应用软件分为若干个相对独立、 能完成特定子任务的功能对象,这些功能象简称任务组件。在系统运行中通 过对运行环境的监测和诊断,动态地进行任务组件的插入和替换,从而实现 系统的可用性和对环境的适应性。 软件热插拔技术,加速了整个软件的实施过程,增强了软件的可维护性, 加强了软件系统出现问题时的自救能力。 软件系统开发和实施都是从零到有,从有到全的一个过程。所有软件功 能不可能一步到位。有的软件功能,是一个过渡性功能。随着使用人员水平 的提高,新功能模块的出现,某些原来的功能可能不再使用。如果需要系统 有一个自然升级过程,则热插拔技术十分有用。 软件系统的功能往往比较多,用户的需求又是千变万化的,系统的某一 部分随时可能需要升级,系统部分的升级,而不会影响系统的其他部分,也 需要热插拔技术。 软件热插拔在提高系统性能、可用性、适应性及可维护性等方面有许多 潜在的优势。例如,通常系统为了支持多种适应性策略,必须实现所有可供 选策略的组件,这无疑增加了系统在性能监测和调试方面的复杂性。而应用 任务热插拔,每条策略可作为分离的、独立的组件来实现,并根据需要对其 进行动态插入或替换,这种关键点的分离既保证了对运行环境的适应性,大 大简化软件的整体结构,也提高了系统的可用性。 1 3 国内外研究现状 传统的任务热插拔技术主要采取基于硬件冗余的解决方法,即在保持当 前系统正常运行的前提下,在另外一台机器上加载新的软件系统,然后将系 统切换到新机器上。基于硬件冗余的解决方案在保持软件持续服务方面能够 达到比较理想的效果,但通常来说,这种方式成本比较大,演化过程耗费的 哈尔滨工程大学硕士学位论文 时间也较长,且演化是以整个应用软件为粒度,不能很好地适应人们对软件 系统的提供不问断服务的期望。目前对软件热插拔技术的研究多数是从软件 角度来着手解决问题。软件解决方案的优点在于成本低、操作灵活。 1 3 1 国外研究现状 国外对任务热插拔技术的研究起步较早。北京大学王晓鹏教授从软件热 插拔的粒度考虑,将其分成三类:以程序段为粒度的软件热插拔技术,以对 象为粒度的软件热插拔技术和以构件为粒度的软件热插拔技术。”。 1 以程序段为粒度的软件热插拔技术 m 触e s e g a l 等人在文献【1 2 】中提出了一种被称为p o d u s ( p r o c e d u r e - - - o r i e n t e dd y n a m i cu p d a t i n gs y s t e m ) 的面向过程的动态更新系统 原型。p o d u s 通过装载新版本的程序来更新旧的程序,并且将对旧版本程序 的调用映射到对新版本程序的调用。 马里兰大学的m i c h a e lh i c k s 等人用一种类c 的语言提供了一种类型 安全的动态对代码打补丁方法【1 3 1 。补丁采用了动态链接的技术。j a n g h 0 0 nl y u 等人在保证程序正常运行以及尽量减少对程序性能的影响的前提下,提出了 一种解决方案【1 4 1 ,该方案能够在旧版本进程的地址空间上使新版本程序正确 工作。 2 以对象为粒度的软件热插拔技术 面向对象技术将现实世界对象的状态及行为封装,增强事物的独立性, 为热插拔技术的实现提供了便利。动态对象技术将动态链接和动态更新能力 相组合,其技术特点包括:( 1 ) f 皂够不涉及源码进行运行时刻配置;( 2 ) 能够使 用诸如反射、元数据和元对象协议的技术;( 3 ) 能在整个系统的运行过程中进 行在线升级。因此可以利用动态对象技术解决软件运行时刻更新问题。 j o n a t h a na p p a v o o 等人在文献【1 】中将任务热插拔技术分成五个步骤:( 1 ) 热插拔触发;( 2 ) 选择插拔对象;( 3 ) 执行热插拔;( 4 ) 状态传递;( 5 ) 删除旧对 象,并在i b m 开发的k 4 2 操作系统上演示了热插拔功能。o r s o ,r a o 和h a r r o d 提出了一种基于p r o x y 的运行时刻对j a v a 程序进行重新配置方法【1 5 1 。该方 法将每一个在系统运行过程中可以进行替换的功能类进行包装,辅以若干辅 助类,包括一个实现功能的类、一个接口类、一个包装类和一个状态类。在 4 哈尔滨工程大学硕士学位论文 系统进行热插拔的过程中,只替换真正实现功能的类,其它的则不变。f e n g 对o r s o 等人的方法进行了改进,在文献 1 6 1 中提出了一种s - m o d u l e 方法, 同时以s n m p 3 为例实现了该方法。这种方法解决了热插拔过程中的透明性 问题以及状态迁移问题。 m a l a b a r b a 在文献【1 7 】中提出一种通过修改j v m ( j a v a 虚拟机) 来实现对 j a v a 类动态改变的方法。该方法的优点是无需用户对应用程序进行任何修 改,由于该方法涉及到对运行是环境的修改,因此需要用户使用特定的j v m , 从而影响了j a v a 的“一次编写,随处运行”的原则。 3 以构件为粒度的软件热插拔技术 对于基于构件的演化,有许多系统的方法,比如基于软件体系结构的方 法;基于a g e n t 的方法等。p l a s i l 在文献 1 8 】中提出了s o f a ( s o f t w a r e a p p l i c a n c e s ) 体系结构、s o f a 构件模型及其扩展和d c u p ( d y n a m i c c o m p o n e n tu p d a t i n g ) 方法。s o f a 和d c u p 提供了一组小规模的直交的抽象 ( 易于映射到j a v a 和c o r b a ) ,包括三方面:电子商务的背景,构件模型以 及程序运行时构件更新的支持,从而支持构件在运行过程中进行更新。p o s t m a 在文献 1 9 】中介绍了一种叫做3 r d b a 的方法,可用于插拔长时间运行系统 中的构件,该方法包括探测、联合和迁移3 个周期,每个周期包括需求、设 计、构造、分析4 个步骤。i i d e 认为以构件为粒度的软件热插拔技术有两个 方面的研究对象:一个是功能性的,一个是非功能性的。 此外,在不同的应用领域,比如电子商务、网络应用、嵌入式系统、分 布式系统也有相应的基于构件的在线演化研究进展。g a r d l e r 在文献【2 0 】中提 出了一种半自动化的以构件为粒度的软件热插拔方法,该方法应用在电子商 务支持系统中。这种方法利用业务过程模式和软件模式之间的映射关系将业 务决策和软件链接在一起。v a r d e w o u d e 在文献 2 1 1 中探讨名为s e e s c o a 的 基于j a v a 的嵌入系统,该学者使用端口的概念将消息在构件间进行重定向, 利用在类装载的过程中包含版本信息的方法,解决了j v m 的类装载问题,从 而将所有构件的实例立刻更新。 1 。3 。2 国内研究现状 国内对任务热插拔技术的研究较少,北京大学王晓鹏等人从软件角度出 哈尔滨下程大学硕十学位论文 发,通过对构件运行支撑平台中构件的容器进行扩展,提出了一种基于构件 的软件在线演化方法( 即任务热插拔) ,并在符合j 2 e e 的构件运行支撑平 台p k u a s l 2 上进行了实现。哈尔滨工程大学的王慧强、叶海智等人探讨了关 键任务系统中的任务热插拔技术n ”。文章在分析国内外相关实现技术的基础 上,重点探讨了关键任务系统中任务热插拔的实现技术,经初步的实验验证, 达到了预期的效果。在对无状态任务组件的热插拔研究的基础上,关键任务 系统中有状态任务组件的热插拔将是下一步研究的重点。 综和上述国内外研究现状,现有的软件热插拔方法主要存在以下几方面 的缺点:对测试环境进行修改,产生一个新的可实现热插拔的测试环境,只 对部属其上的j a v a b e a n s 起作用,不具备实用性;采用包装的方式,产生大 量的冗余代码,系统为维护这些冗余代码所产生的开销不可忽视;某些方法 试图对运行环境进行修改,复杂性很高,其它方法均要求系统组件化,组件 松耦合,对系统限制较多,不具有通用性,并且大大的提高了系统的复杂性, 影响系统的整体性能,在软件热插拔提升系统可用性方面还有很大空间。本 文在充分了解软件热插拔实现原理的基础上,给出了一种基于设计模式的简 单、高效的软件热插拔实现方法。 1 4 论文的研究内容和组织结构 1 4 1 研究内容 本文在分析任务可热插拔技术的国内外现状的基础上,拟完成对基于代 理的任务可热插拔技术的设计,通过在系统中添加监测代码,诊断代码,以 及对功能模块进行动态的插入和删除来实现任务可热插拔技术。最终实现应 用程序的在线演化功能。 本文具体的研究内容如下: ( 1 ) 探讨任务可热插拔技术的定义、实现步骤及特点; ( 2 ) 给出任务可热插拔技术的通用结构; ( 3 ) 对于任务可热插拔实现过程中涉及的关键技术给出具体的解决方案; ( 4 ) 实现基于代理的任务可热插拔方法。 6 哈尔滨工程大学硕士学位论文 1 4 2 论文的组织结构 论文其余章节的内容安排如下: 第2 章介绍了软件可热插拔技术的概念,原理及实现步骤。然后介绍了 软件可热插拔技术对自律计算机系统性能的影响。最后介绍了j a v a 程序实 现任务可热插拔技术的优越性,为后面章节针对j a v a 程序实现软件可热插 拔技术奠定了基础。 第3 章对软件可热插拔系统体系结构进行研究,提出了基于热插拔管理 器的软件可热插拔系统体系结构,并分析了各个模块的功能、作用。 第4 章研究了四种不同的软件热插拔方法,探讨了软件热插拔实现过程 中的关键问题,并一一给出解决方案,为下文实现基于代理的软件热插拔系 统奠定了基础。 第5 章给出基于代理模式的软件热插拔技术详细设计方案,包括热插拔 管理器的初步设计以及可热插拔模块的详细设计,并给出实验过程、实验结 果以及结果分析。 哈尔滨下程大学硕十学位论文 第2 章任务可热插拔技术 随着计算机技术的高速发展,其在人们生活的各个领域都有着广泛的应 用。对于大多数应用软件来说,在系统停机的情况下对其进行升级和维修是 可以接受的,而对于安全性要求极高或者运行时间要求极严的系统来说,停 机修复是难以接受的。例如:交通管理系统和银行系统。前者将会带来严重 的安全隐患,后者将会带来重大的经济损失。因此,人们对该类系统的高可 用性问题进行了研究,并提出了若干解决方法阳,软件热插拔技术就是其中之 2 1 任务热插拔概述 任务热插拔技术是针对高效性和高可靠性系统而提出的,应用该技术的 软件系统应该能够自动检测系统出现的问题并将其修复。也就是说,该系统 应该能监测到系统性能的变化以及所出现的错误问题,查明其原因并做出适 当的响应。具备该性能的系统能自动提升其自身的性能和安全性,同时减少 对系统管理员的技术要求。任务热插拔技术是通过在系统中添加监测代码, 诊断代码,以及对功能模块进行动态的插入和删除来实现的。它使得人们在 编制应用程序时无需事先考虑到所有的配置情况,从而减少了工作量以及代 码的复杂性。对于诸如操作系统等已经存在并且很复杂的系统来说,热插拔 技术为其提供了一种简单的,高效的系统维护手段。 任务热插拔技术的关键在于如何在运行的系统中,动态的插入和删除功 能代码块,而不影响其他功能代码块的正常运行。它主要有两部分组成:插 入( i n t e r p o s i t i o n ) 和替换( r e p l a c e m e n t ) 哺1 。 1 插入( i n t e r p o s i t i o n ) 该功能是在已有的组件之间插入新的功能模块。 在系统性能允许的情况下,当系统发生故障时,通过插入更为详尽的检测代 码来检测产生故障的原因,以便于对系统运行时引进的错误加以纠正,同时 将系统运行时的损失降到最低点。 2 替换( r e p l a c e m e m ) :该功能允许系统在运行时,将控制应用程序资 8 哈尔滨工程大学硕士学位论文 源的活动功能模块失效,取而代之的是另一个功能模块。当系统运行的条件 改变时,利用该技术可以使系统适应变化的环境,另外还可以用新的功能模 块来升级旧的功能模块。 2 2 任务热插拔的实现原理 到目前为止,只有极少数的科研小组对任务热插拔技术进行过研究,并 且由于条件的限制,它们的研究成果也相当有限。研究人员指出,在多处理 器和多线程的环境下,要为安全和有效的插入和插拔组件提供一种普遍而有 效的方法是比较困难的。t c p i p 协议站就是一个简单的例子,要在其上进行 热插拔要求: ( 1 ) 要使得大量的来自应用程序或操作系统各部分的对t c p f i p 协议站的调用 与新旧协议站的插拔保持同步。 ( 2 ) 自动完成新旧组件之间的状态传递,这些状态包括:活动连接、缓冲区 以及未完成的计时器等。 ( 3 ) 将新组件安装到系统中以保证客户端或系统的其他部分能对其进行访问 来完成新的操作。 对活动组件进行热插拔是相当复杂的,下面将给出完成热插拔的一般步 骤“1 。 2 2 1 触发热插拔 在许多情况下,我们希望对象自己能够触发热插拔。例如,一个对象被 设计用来管理小规模文件,当它注意到文件的规模在增加时,该对象自身能 够触发插拔,将一个管理大规模文件的对象引入系统。在有些情况下,系统 结构不能够确定在何时进行动态的对象插拔,因此需要在系统中加入监测代 码。在触发插拔之前,可以在系统中通过插入( i n t e r p o s i t i o n ) 的方法加入功 能更加全面的检测代码来获得更为精确的信息。例如,一个操作系统可能拥 有一段基本的代码来监测是否出现过多的页面调度,并在问题出现时,通过 插入( i n t e r p o s i t i o n ) 的方法利用额外的代码来分析出现问题的原因,以便将 控制页面调度的对象加以替换。在有些情况下,应用程序会精确的提出对象 插拔。数据库子系统,w e b 服务器,或者对性能要求极高的科学管理应用程 9 哈尔滨工程大学硕士学位论文 序,可以通过明确地提出热插拔的方法来对其自身的性能进行优化。 将来,我们希望系统能提供一个数据库来记载系统的变化,b u g 和安全 升级问题等,就像包含r e d h a t7 3 的l i n u x 分布式操作系统一样。这样,系 统可以随时访问该数据库,下载新的组件,并且在不间断应用程序运行的情 况下,对新旧组件进行插拔。 2 2 2 选择插拔对象 在有些情况下,初始化热插拔的程序能够直接给出插拔对象,例如,升 级一个组件。然而,在大多数情况下系统是通过目标对象的行为而非其名称 或类型来对其进行识别的。例如,客户程序可能会要求对管理页面存储的对 象加以优化,而无需指出完成该功能的类的名称。 2 2 3 执行插拔 经验证明,热插拔过程中最复杂的部分就在此步骤,包括如何使对象达 到一种适合插拔的状态,以及如何以一种升级的方式进行插拔。要在同步的 情况下使进行插拔的两个对象达到一种适合插拔的状态是十分复杂的。而且 这种同步过程会给运行时系统带来一定的负担。 2 2 4 状态传递 热插拔技术的关键是怎样在进行插拔的两个对象之间有效的传递状态。 很多情况下,新、旧两个对象之间的状态传递是比较简单的,例如,在应用 程序中管理文件状态的对象被替换时,只需将对象失效,然后传递必要的控 制信息即可。而在有些情况下,要进行状态传递是比较困难的。例如,计数 器的计数结果由对象的一个属性来保存,当用新的对象替换旧的对象时,就 要用旧对象的属性对新对象中起同样作用的属性进行初始化,即状态的传递。 系统本身是无法判断需要传递哪些状态的。然而它却能提供一种新旧对象都 支持的形势,例如将指向复杂数据结构的指针传递给新对象而无需将其转换 成一种规范的形势。 2 2 5 动态添加对象 将新代码加载进运行中的系统,需要注意解决两个问题,如果是类被替 哈尔滨工程大学硕士学位论文 换,就要追踪旧类的所有实例,在用新类的实例替换旧类的实例,如果是被 多个应用程序调用的功能代码被替换,则需将该功能代码加入到所有的应用 程序中。 2 3 自适应代码与热插拔比较 任务热插拔的特点之一是使得运行中的应用系统可以对环境的变化做出 响应来提升自己的性能。实现该功能的另一种方法就是使用自适应代码,它 是由一系列相互独立的代码组合而成的,每段代码能完成不同的功能,为不 同的工作环境所设计。它虽然不能像热插一样完成所有的使用功能,但二者 之间确实在功能上存在可比性。 1 自适应代码允许系统在一系列预先编制好的功能函数之间进行切换, 这些功能函数( a l g o r i t h m s ) ,监测代码( m o n i t o r i n gc o d e ) ,以及决定在哪 些函数之间进行切换的决定代码( d e c i s i o n - m a k i n gc o d e ) 一旦系统处于运行 状态,就无法在对其进行修改。 2 自适应代码减少了系统自动插入监测代码的能力,因此,监测程序必 须时时运行,这为系统的运行带来了一定的负担。 3 为运行于不同应用环境的不同应用程序所设计自适应代码是复杂的, 这对于那些为适应不同硬件平台而设计的系统代码表现的尤为突出,协调整 个系统的适应性比局部协调困难得多。 表2 1 自适应代码和热插拔对系统性能优化的比较 特性自适应代码热插拔代 设置可能的配置预先编制可扩展 监测那些属性预先编制可扩展 监测代码何时生效总是运行需要时 适应判断规则 预先编制 可扩展 代码复杂度 增加 减小 表2 1 和图2 1 对自适应代码和任务热插拔进行了比较。当二者皆用于系 统性能优化时,自适应代码的缺点主要表现在三点:必须对系统运行的所有 哈尔滨工程大学硕士学位论文 环境和可能出现的问题进行预测、增加了代码的复杂性同时使得系统性能下 降。 如图2 1 所示,该图是利用两种不同的方法实现相同的功能的过程对比。 自适应代码是整体性的,包括一直运行的监测代码,由其来决定系统运行的 代码路径。执行路径选择代码必须是原始程序的一部分,并且应用程序的整 体大小和复杂性增加。对于热插拔来说,每条规则是独立运行的( 减小了代 码的复杂性) 当需要时,它们之间进行热插拔。监测代码可以在需要时被插 入到系统中。 e n t r yp o i n t m o n i t o r i n g c o d e d e c i s i o nc o d e 囤圆圈图 s h a r e de x i tc o d e ( a ) 自适应代码( b ) 热插拔 图2 1 自适应代码和热插拔比较。 对于自适应代码来说,无法将其应用于大规模的软件系统是其致命弱点, 系统一旦运行,便不能向其中添加任何新代码,因此该方法无法实现系统的 安全升级和解决b u g 问题。系统只有在停止运行的情况下才可以被升级,但 是这可能会带来严重的安全隐患和经济损失。 对于软件热插拔来说,与利用自适应代码编制的应用程序比较,支持其 实现的底层基础结构是比较复杂的,然而,我们只需要设计出一种支持任务 热插拔的基础结构,便可以在多个应用程序中对其进行应用。相反,自适应 哈尔滨工程大学硕十学位论文 代码只适合于特定的应用程序,而且会对程序的升级带来相当的复杂性。 2 4 任务热插拔技术在自律计算机系统中的应用 随着计算机技术的发展,各行业领域对计算机系统的自律性要求越来越 高,计算机系统的自律性是指计算机系统自动诊断,修正所出现的问题以适 应运行环境的能力。本小节将讲述自律计算机软件系统的关键特性,并讲述 任务热插拔技术如何为自律计算机系统提供相关的技术支持。 性能:最佳的资源管理政策依赖工作量的大小,而工作量会随着应用程 序进出系统以及运行于不同的阶段而不断的发生变化。例如,在多处理器系 统中,为了得到更好的性能,对服务于并行执行的应用程序与串行执行的应 用程序的组件所提供的数据结构支持是不同的。然而,当一个组件被创建时, 例如打开一个文件,系统将无法判断其应用方式。利用任务热插拔技术,初 始情况下可以使用支持串行应用程序执行的组件,当系统检测到应用程序在 多处理器上并行执行时,可以利用支持并行应用程序执行的组件动态的替换 旧组件。 系统监控:在自律计算机系统中,需要载入监测代码来监测系统在运行 时是否引入安全漏洞,性能是否下降等问题。但是该检测代码的运行必将为 系统带来负担,任务热插拔技术为此提供了一种折衷的解决方案。当基础监 测代码检测到系统出现故障时,通过插入( i n t e r p o s i t i o n ) 技术,系统可以动 态的引入更为详尽的监测代码来检测、追踪故障出现的原因,而无需使全部 监测代码在系统运行的整个过程中都处于有效状态而为系统带来额外的负 担。在以面向对象为设计基础的应用系统中,每个资源都是由不同的对象实 例管理的。因此,对某资源的监控可以通过对掌控该资源的对象进行监控而 轻易的实现。 灵活性和可维护性:自律计算机系统必须能够随其运行环境和工作量的 改变而进行自动的改进,同时保持其自身的易于管理性和维护性。对系统动 态的扩展将会增加系统的复杂性,因而可能增加系统的出错率,同时导致系 统性能的下降。为了实现热插拔技术,系统必须以模块化思想为基础进行设 计,以便于独立的功能模块可以很容易的被系统识别。虽然这将会为系统的 哈尔滨工程大学硕士学位论文 设计带来一定的负担,但是这将会为系统的维护带来很大的便利。模块化设 计思想使基于组件的功能模块可以独立的运行,并根据系统对功能的要求而 相互替换,来提高系统的性能。模块化设计思想为组件提供了属于其自身的 数据结构。利用基于模块化设计思想的任务热插拔技术可以使系统中老化的 组件被新组件动态替换,从而提高系统的健壮性。 系统可用性:在计算机应用的关键领域中,要求系统达到9 9 9 9 9 的可 用性,而随着时间的推移使得系统的运行环境不断的发生变化,从而导致系 统的可用性下降。这就要求系统有自动升级的能力。在支持任务热插拔的系 统中,系统升级可以在系统正常运行的情况下进行,从而不会因为升级而对 系统的可用性带来影响。电信系统、财政交易系统以及航空管理系统等对系 统可用性要求极高,因此,任务热插拔技术将会为这些系统的动态升级带来 很大的便利。 可扩展性:随着系统的不断演进,在其运行过程中可能引进一些设计时 无法预想到的工作。这些新工作要求可以通过任务热插拔技术加以解决。包 括插入( i n t e r p o s i t i o n ) 和替换( r e p l a c e m e n t ) 两种手段。利用插入技术可以 为组件提供更完善的接口,因此可以通过扩展组件接口的方法避免全部组件 重新编写。如果系统需要更重要的改进,可以通过热插拔技术在运行中的系 统中引入新功能对象。 测试:即使在现存的相对稳定的计算机系统中,测试所需的重大开销仍 然是限制系统扩展的重要因素。而自律计算机系统的复杂性进一步恶化了该 问题。任务热插拔技术能够减轻系统测试的负担。通过插入对象产生输入值 来测试单个组件,可以提高测试数据的全面性。 软件热插拔能够自动提升系统性能: 对常规事例的优化:对于多数系统资源来说,常规的访问方式是比较简 单和有效的。但对其他非常规的复杂的访问方式来所代价比较昂贵。动态热 插拔技术使得在需要时,可以利用更安全有效的非常规访问方式代替常规的 访问方式。以文件共享为例,多数应用程序对其文件拥有唯一的访问权限, 而有时这些文件又被一系列的应用所共享。再k 4 2 系统中,当文件被互斥访 问时应用程序访问空间的一个对象对文件的控制结构进行处理。使该操作的 性能提升4 0 甚至更多i 盘。当文件变为共享访问方式时,旧的文件控制对象 1 4 哈尔滨工程大学硕士学位论文 被新对象代替,新对象与文件系统进行交互来维护文件的控制信息。 对文件属性的优化:人们提出许多特殊的文件系统结构来对文件的布局 以及不同性质的文件的存储来进行管理和优化,这些结构可以通过设计不同 的对象来实现【9 t1 0 1 。动态插拔技术可以利用这些结构对文件进行存储控制, 并在需要时,在这些实现不同结构的对象间进行热插拔。例如,大多数被访 问的文件的大小不超过4 k b 。操作系统必须既能够支持大文件的访问,又能 支持小文件的访问。动态热插拔技术能够利用文件的大小来优化应用程序的 性能。在k 4 2 系统中,对于一个小型非共享文件,利用应用程序访问空间的 一个对象来管理对该文件的请求服务,从而减少了客户与文件系统之间的交 互次数。当一个文件增大时,在热插拔技术的支持下,利用与文件系统进行 交互的另一个对象来动态的替换旧文件控制对象以满足不同用户的服务要 求。 访问类型:许多文献都关注于利用应用程序对文件的访问类型来对文件 的存取以及硬盘存储页面调度进行优化。研究人员发现利用适当的策略,可 以使缺页率减小3 0 。任务热插拔技术提供了一种判断文件访问类型的方 法,通过动态的插入监测代码来检测文件的访问类型,然后根据文件的访问 类型,利用热插拔技术,在适当的文件管理对象之间进行替换。 利用体系结构特征:现今处理器的许多特征在多平台的操作系统中并没 有得到很好的利用。为了确保代码的兼容性,同时不会造成全局代码路径的 过分复杂,使得处理器的特征被完全忽略掉了,因为实施者需要提供一种所 有平台都支持的操作,例如,虽然当今的大多数处理器都支持大页面处理, 但是只有极少数的操作系统对该技术提供支持。热插拔技术提供了一种较容 易的方法来利用处理器的结构特征,因为系统可以根据应用的不同,结合处 理器的特点,在不同的对象之间进行热插拔。 多处理器优化:在大型多处理器系统中,并行执行的应用程序可以根据 处理的位置而获得便利。为了利用这些位置,一些操作系统将服务分成不同 的类型。然而,这些被分类的操作将占用更多的内存,并将给操作带来一定 的负担。相反,共享操作能够减少空间的占用,并能减少对顺序执行的程序 的时间负担。 图2 2 显示了在一个文件搜索程序中,利用热插拔技术所显示的性能优 哈尔滨工程大学硕士学位论文 势。在k 4 2 文件页面存储程序中,利用热插拔技术在实现共享与分类管理的 两个对象之间切换。系统监测运行的应用程序线程的数量,并在适当的时候, 在两个对象之间进行插拔。图中y 轴代表周期数,数值越小越好。根据图中 数据显示,当系统中只有一个应用程序在一个处理器上进行文件搜索时,共 享的访问方式具有1 0 的优势。而当系统中同时有十二个应用程序在十二个 不同的处理器上运行时,共享方式就会显示出3 0 0 的劣势。利用热插拔技 术,系统在两种不同的执行方式之间进行热插拔,从而利用两种方式的不同 特点来对系统的整体性能进行优化。 罢 2 o 黑 亳 图2 2 一个5 2 m b 文件的分类搜索与共享搜索的比较“ 2 5j 趟,a 程序动态更新 j a v a 是一种面向对象程序设计语言,从产生之日起便受到广泛

温馨提示

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

评论

0/150

提交评论