已阅读5页,还剩112页未读, 继续免费阅读
(计算机应用技术专业论文)一种面向自愈计算的os体系架构的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 传统o s 的主要设计目标是为用户提供一个屏蔽各种硬件细节的虚拟机,从而 导致o s 过分层次化,造成o s 重要的状态数据分散在o s 的各层之中,使o s 不 能轻易地收集或修改自身的状态信息,最终增加了系统中错误诊断和错误恢复的 难度。此外,传统的o s 对上层面向自愈计算应用的支持不够,如:i 上层应用系 统中的监控进程和该应用系统的普通进程均运行在同一权利级别下,造成监控进 程不能便捷地实施监控。i i 监控进程本身行为的正确性一般由该监控进程开发者 负责,缺乏运行时对监控进程本身行为的制约机制。 针对上述问题,本文提出了一种新的面向自愈计算的o s 体系架构,该体系架 构设计思想来源于章鱼和社会组织中权力的制约机制,在该体系架构下,系统中 的所有重要状态均放在共享内存中集中统一管理。并且采用两层闭环反馈,由运 行在高权力级别上的闭环反馈对运行在低权力级别上的闭环反馈进行监控。另外, 该架构还引入了多监控进程,以对监控进程本身的行为进行一定程度的制约。最 后,该架构通过一个来源于列车自动控制的原型系统进行了验证。 该架构主要的创新点在于:i 将o s 和应用看成一个系统整体,并将该系统整 体中的重要状态集中统一存放。i i 位于高权力级别的,并且相互之间存在制约的 多监控进程对位于低权力级别的应用进程实施监控。 关键词:操作系统自愈软件体系架构 a b s t r a c t a b s t r a c t t h ep r i m a r yd e s i g ng o a lo ft r a d i t i o n a lo si st op r o v i d eav i r t u a lm a c h i n e ,w h i c h m a s k sd e t a i l so fd i f f e r e n tk i n d so fh a r d w a r e t h i sm a k e so so v e r l yl a y e r e da n dt h e i m p o r t a n ts t a t e so fo sa r ed i s t r i b u t e di n t oe a c hl a y e ro ft h es y s t e m 。f u r t h e rm o r e ,i t m a k e so sn o te a s i l yt oc o l l e c to rm o d i f yi t so w ns t a t ei n f o r m a t i o na n df i n a l l yi n c r e a s e s t h ed i f f i c u l t i e so ff a u l td i a g n o s i sa n dr e c o v e r yi nt h es y s t e m i na d d i t i o n ,t r a d i t i o n a lo s d o e s n tg i v ee n o u 曲s u p p o r tf o rt h ea p p l i c a t i o no r i e n t e ds e l f - h e a l i n gc o m p u t i n g e g :i m o n i t o rp r o c e s s e s ,i nt h ea p p l i c a t i o ns y s t e ma b o v eo s ,r u na tt h es a m ep r i v i l e g el e v e l a st h en o r m a lp r o c e s s e si i lt h ea p p l i c a t i o ns y s t e m t h i si su n c o n v e n i e n tf o rm o n i t o r i n g i i t h ec o r r e c t n e s so fm o n i t o rp r o c e s si sn o r m a l l yg u a r a n t e e do n l yb yi t sd e v e l o p e r s , r e s t r i c t i v em e c h a n i s m sa tr u n t i m el a c k e d t ot h e s ep r o b l e m sa b o v e ,t h ed i s s e r t a t i o np r o p o s e san e wo ss o f t w a r ea r c h i t e c t u r e o r i e n t e ds e l f - h e a l i n gc o m p u t i n g i t sd e s i g ni d e ao r i g i n a t e df r o mt h eo c t o p u sa n dt h e r e s t r i c t i v em e c h a n i s m sa m o n ga u t h o r i t i e si ns o c i a lo r g a n i z a t i o n s t h i sa r c h i t e c t u r e m a n a g e st h ei m p o r t a n ts t a t e so ft h ew h o l es y s t e mc e n t r a l l ya n da d o p t st w ol a y e r so f f e e d b a c kc l o s e dl o o p s t h ef e e d b a c kd o s e dl o o p sr u n n i n go nt h eh i g h e rp r i v i l e g el e v e l m o n i t o rt h eo n e sr u n n i n go nt h el o w e rp r i v i l e g el e v e l b e s i d e st h e s e ,t h ea r c h i t e c t u r e i n t r o d u c e sm u l t i p l em o n r o rp r o c e s s e st or e s t r i c tt h eb e h a v i o mo fm o n i t o rp r o c e s st oa c e r t a i n e x t e n t f i n a l l y , t h ea r c h i t e c t u r e i sv e r i f i e dt h r o u g hap r o t o t y p eb a s e do n a u t o m a t i cc o n t r o lo ft r a i n t h em a j o ri n n o v a t i v ef e a t u r e so ft h ea r c h i t e c t u r ea r e :i t r e a to sa n dt h e a p p l i c a t i o n sa b o v ea so n ew h o l es y s t e ma n ds t o r et h ei m p o r t a n ts t a t e so ft h ew h o l e s y s t e mc e n t r a l l y i i p r o c e s s e sw i t hh i g h e rp r i v i l e g el e v e l ,w h i c hr e s t r i c te a c ho t h e r , m o n i t o rp r o c e s s e sw i t hl o w e r p r i v i l e g el e v e l k e y w o r d s :o p e r a t i n gs y s t e ms e l f - h e a l i n g s o f t w a r ea r c h i t e c t u r e 西安电子科技大学 学位论文独创性( 或创新性) 声明 秉承学校严谨的学风和优良的科学道德,本人声明所呈交的论文是我个人在 导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标 注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成 果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的 材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说 明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切昀法终宝辨。 本人签名:越日期婴! ! ! ! :2 西安电子科技大学 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究生 在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。学校有权保留 送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内容, 可以允许采用影印、缩印或其它复制手段保存论文。同时本人保证,毕业后结合 学位论文研究课题再撰写的文章一律署名单位为西安电子科技大学。 ( 保密的论文在解密后遵守此规定) 本学位论文属j 二保密,在- 年解密后适用本授权书。 本人签名:兰童舷。日期2 盟墨f 2 :2 导师签名: 球聋 日期丛:主:2 : 1 引言 1 引言 1 1 研究背景和目标 正如i b ms t e t e m 3 6 0 的设计者之一f r e d e r i c kp b r o o k s 所说,“我们的职业 就是应对复杂性,而恰恰是复杂性限制了我们”【1 】。目前,随着计算系统的复杂 化,系统的管理成本不但大为增加,而且系统更易出错。特别是防止系统崩溃和 从崩溃中恢复的费用已占到系统总费用的1 3 到1 2 【2 】。为此,b e r k e l e y 2 0 0 2 年提 出了r o c ( r e c o v e r yo r i e n t e dc o m p u t i n g ) 【2 】2 。随后,i b m 公司的研究人员在2 0 0 3 年提出了自治计算【3 】,并为了降低系统因出错或崩溃所带来的损失,特别强调自 愈是自治计算的重要特性( r o c 是自愈技术的种) 。 自愈技术的研究一共有三个层面: i 硬件层面 i i o s ( o p c r a t i n gs y s t e m ) 层面 i i i 应用程序层面。 目前,o s 层面上的自愈技术的研究相对较少,这是因为,长久以来,研究者 对0 s 的可靠性关心较少【4 】,而对0 s 层面上的自愈技术的研究主要集中在对现有 o s 的扩展上,如c r u z 5 ,b l c r 6 等。对现有0 s 的扩展的缺点在于:o s 的自 愈特性并不是在系统一开始就进行考虑的,这为自愈特性的实现和测试带来了不 便。n a s a 在火星探路者上成功的实践经验表明,系统在设计之初,就应当将容 错系统作为系统架构设计的一部分,而不是将其作为系统设计的附加部分【7 】。 以传统的o s 为例( 如u n i x ,b s d 等) ,容错并不是传统o s 的主要设计目标, 其主要目标是为用户提供一个虚拟机【8 】。为了达到该目标,传统o s 在设计理念 上非常强调对系统进行层次化的组织。即通过逐层屏蔽各种软硬件细节,最终为 用户提供一个统一接口的虚拟机。虽然这种设计在许多领域中获得了成功,但这 样的系统并不能很好的满足自愈系统中可靠性的需求,原因在于: i 传统o s 由于分层的缘故,造成o s 重要的状态数据分散在系统的各层 之中,这样o s 只能通过层层过程调用收集或修改自身的状态信息,最 终增加了系统维护、系统的错误( 这里特别需要指出的是,本文所用到 的缺陷、错误和失效分别对应【9 】中的f a u l t 、e r r o r 和f a i l u r e ) 诊断和错 误恢复的难度。如:在传统o s 中,各个设备的状态是分散在各个设备 中的存储器之上的,那么,为了监控各个设备的状态,监控程序必须自 2 一种面向自愈计算的o s 体系架构的研究 己通过层层函数调用去查询各个设备上的状态。 i i o s 各个模块之间通过带参过程调用进行交互,导致o s 的各个模块之 问控制流和数据流十分复杂,从而增加了系统的耦合度,进而提高了系 统的复杂度。 i i i 在o s 之上的应用系统中,监控进程一般与被监控进程均处于用户态下 运行,造成监控进程不能直接对被监控进程实施监控。另外,需要指出 的是监控进程行为的正确性一般由该监控进程开发者负责,缺乏对监控 进程本身行为的制约机制。 为此,本文提出了一种新的面向自愈计算的0 s 体系架构章鱼体系架构, 该架构的设计思想来源于章鱼和社会组织中的权力制约机制。该架构的主要研究 目标在于: i 为面向自愈计算应用的设计和实现提供支持,这些支持包括: ( 1 ) 为o s 之上的应用提供一种从暂态错误( t r a n s i e n te r r o r ) 中恢复 的自愈机制。 ( 2 ) 为应用中多监控进程的设计与实现提供支持。 i i 为自愈计算中o s 的开发提供借鉴,因为: ( 1 ) 非开源的并且在o s 设计时就强调容错或考虑到容错的商用系 统,并没有公开其实现细节如t a n d e m ,i r i x 。 ( 2 ) 自愈机制难于在现有主流的开源o s ( 如l i n u x ) 上实现。这是 因为,除了上面所提到的原因之外,更重要的是这些0 s 没有良好的体 系架构设计文档。若一个程序员需要对内核结构进行修改,那么,他自 己必须从阅读复杂的内核源代码开始,逐步还原出内核的设计结构,然 后进行修改,很显然,这是极为耗时耗力的。造成这种情况的主要原因 有两点:首先,这些开源o s 本身没有良好的体系架构,如l i n u x ,它是 一个巨内核结构,并且基于“集市”模式【1 0 】开发,因而难于写出一个 良好的体系架构设计文档;其次,商业利益的驱使。如从事l i n u x 开发 多年的r c d h a t 公司,从未向外公布过经自己分析后所得到的l i n u x 内核 体系架构的设计文档。 1 2 论文结构 论文一共分为五章: i 引言 主要介绍研究的背景和研究的目标。 1 引言 i i 相关工作 从o s 体系架构、软件容错体系架构、自愈软件体系架构和错误恢复技7 泗个 方面,对前人的相关工作进行了综述,并且将这些工作成果与章鱼体系架构进行 了比较。 i i i 章鱼体系架构概述 对章鱼体系架构设计思想的来源、设计理念,以及结构进行了概述。 i v 自愈机制的设计 。 对章鱼体系架构中应对暂态错误的自愈机制的设计和多监控进程的设计进行 了论述。其中4 1 节中论述状态保存算法的设计。4 2 节论述了当系统出现暂态错 误时,如何恢复到一个已保存的状态上。4 3 节论述了多监控进程的设计准则。 v 章鱼体系架构的实现 对章鱼体系架构的实现进行了论述。其中5 1 节巧5 节论述了状态管理器中存 储管理器的设计和实现。5 6 节论述了实现状态管理器w c i d ( 弱一致性,弱隔离 性以及弱持久性) 特性的关键技术。5 7 和5 8 节分别论述了实现基于该状态管理 器的o s 内核以及状态保存算法的关键技术。 v i 实验 通过一个来源于列车自动控制的原型系统,对章鱼体系架构的特点及优点进 行了验证。 4 一种面向自愈计算的o s 体系架构的研究 2 相关工作 随着高可信计算技术浪潮的兴起,出现了许多利用软件体系架构提升软件系 统整体可靠性的方法,p o 1 l ,1 2 1 ,但经过大量的查找后,并未发现专门通过o s 软 件体系架构以提高自愈计算中软件系统整体可靠性的研究工作。造成这一现象的 原因是:i 参考文献【4 】指出的那样,长久以来,可信系统的研究与o s 的研究是 相互独立的,两者之间很少甚至没有发生交叠,导致有关o s 可靠性的研究很少。 i i 自愈计算是一个新兴领域,而在该领域中很多人依然把o s 作为一个资源分配 器看待,而不是把它作为系统的核心,并利用其自身在整个系统中所处的特殊地 位去提高系统的可靠性。因而研究者对o s 在自愈计算中的可靠性并不特别关心。 但这并不是说,章鱼体系架构是凭空产生的。相反,它的设计是在前人的基础之 上进一步研究的结果,它不但借鉴了前人有关o s 的研究成果,而且借鉴了经典软 件容错体系架构、自愈技术以及错误恢复技术。为此本文从o s 架构、软件容错体 系架构、自愈软件体系架构和错误恢复技术四个方面,对前人的相关工作进行了 综述,并且将这些工作成果与章鱼体系架构进行了比较。 2 1o s 体系架构 传统的观点将o s 看成是一个虚拟机或一个资源管理器,这两种观点容易使人 对o s 的研究方向和目的产生错觉以为o s 的研究所要解决的主要问题是:i 如何对系统进行抽象。i i 如何优化o s 的资源调度。事实上,这两点仅仅是o s 研 究的重要方面,而非o s 研究最终要解决的问题。o s 研究最终都是要解决各种应 用中的问题,应用是o s 研究最主要的推动力。所以本文从o s 所针对的应用问题 的角度出发,将o s 分为两类:通用型o s 和专用型o s ,并对通用型o s 体系架构 和解决可靠性问题的专用o s 体系架构的研究进行了综述;最后,本文将章鱼体系 架构下的o s 内核和一些当前的主流o s 内核进行了比较。 2 1 1 通用型o s 体系架构 通用型o s 是指那些不针对某类上层用进行优化的o s 。此类o s 仅仅是一个资 源管理器,这种o s 面向的是普通应用,所要解决的问题是如何尽可能地去适应上 层千变万化的应用。这种o s 又可细分为两大类:巨内核结构o s 和微内核结构 o s 。 2 相关工作 5 2 1 1 1 巨内核结构 巨内核结构出现于o s 的早期,这种结构出现的最初目的是为了使上层应用开 发者能够不必关心系统的硬件细节,便捷地开发出各种应用,因而这种o s 所解决 的核心问题仅仅是如何为上层提供一个屏蔽底层硬件细节的接口,对o s 的其它属 性如可扩展性等,并不关心。它的特点在于:通过定义良好的规范( 例如:p o s i x 标 准) ,对底层硬件进行抽象,为上层提供一个便于应用开发者理解及使用的概念和 通用接口,如“进程”的概念和写文件接口函数w r i t e 。由于这种o s 遵循标准中 制定的接口规范,所以它的优势是通用性非常强。然而没有一种接口规范可以适 应任意情况下的应用需求。正是这些定义良好的接口规范,从某种程度上限制了 o s 的灵活性,导致o s 无法很好的匹配上层的某些应用。以数据库中的缓冲区管 理为例【1 3 】:一般的o s 本身有自己的一套缓冲区,不过缓冲区的大小和管理缓冲 区的策略在编译内核时就已经确定了,而数据库上的各种应用却是千变万化的, 所以数据库本身不得不维护自己的一套缓冲区,直接导致数据库设计的复杂和总 体性能的下降。另外,从内核开发者的角度而言,巨内核由于内部结构的无序性 导致内部的交互很复杂,它们是难于维护的。 2 1 12 微内核结构 正是上述巨内核结构的那些弱点,促使人们提出微内核结构。它背后的理念 在于将系统的设计目标和它的实现机制相分离,并将机制的实现交由用户处理, 从而获得较好的可伸缩性。它的缺点在于 1 4 ,1 5 】: i 大多数的微内核o s 事实上不是“微”内核;因为它们提供一般性的系统服务, 导致微内核的接口复杂,并且占用较大的内存。 i i 微内核系统在性能上不足;由于许多功能是在内核以外实现的,那么,应用就 会与内核频繁通信,从而加大了系统的整体开销。但也有不同的声音,有人认为 这是因为i p c 的低效实现造成的,i _ 3 ,l 4 1 6 1 就是一个例子。 i i i 大部分微内核系统的自适应性不好。原因是微内核的系统接口在设计时,是用 来提供通用的服务而非面向专门的应用领域,导致接口和实现机制的固定化。所 以微内核系统并不能在不同的系统环境和应用下均表现出令人满意的适应性。 2 1 1 3 可扩展内核结构 正是因为微内核结构有这么多的问题,所以在微内核还未成熟之前,研究者 就把重心移向了可扩展内核结构。可扩展内核结构按接口划分一共分为如下几种 形式: i 硬件资源接口集 这种方法认为,不论向用户提供哪种接口,总存在某些应用,使得提供的接 口不能很好的适应这些应用的要求。所以这种内核直接将底层的硬件资源提供给 上层应用,这种内核唯一的职责是对底层硬件资源进行安全的复用。最典型的例 6 一种面向白愈计算的o s 体系架构的研究 子就是e x o k e r n e l 和a g e i s i i 固定接口集 这种o s 内核不像上一种o s 内核那样,直接将底层的硬件资源暴露给上层, 而是通过提供一个抽象接口集合,用户可以通过这些抽象接口集合实现特定应用 的定制,最典型的是s p i n 和c a c h ek e r n e l 。以s p i n 为例,用户可以动态的将自己 的代码通过这些接口动态的加入到内核中。 i i i 元接口集 这种o s 内核提供一个元抽象接口层,用户可使用这些元抽象接口实现用户自 己需要的接口。 i v 构件接口集( 即构件化o s 内核) 这种o s 内核将o s 划分成各个构件,好处是1 上层的面向对象应用可以根据 实际情况,通过诸如反射机制对下层o s 作出调整,从而提高系统的自适应性。2 节省o s 的开发时间。 虽然可扩展内核结构o s 的思想非常诱人,但它存在着如下缺陷: 它们实际上对0 s 进行了3 层抽象【1 5 1 : i 最高层抽象:应用程序界面抽象 i i 最底层抽象:系统资源抽象 i i i 中间层抽象:位于上面两层之间的内容的抽象。 i ,i i 两层的抽象的变动较小,而中间层抽象的变化最大。因为这一层位于高层 a p i 和底层最基本的硬件抽象之间,为了达到定制化的设计目标,就必须非常仔细 的对这一层进行抽象( 各种可扩展内核的区别之处也是在这里体现的) ,从而得到 可以针对具体应用进行裁剪的b u i l d i n gb l o c k 。这虽然是一个非常诱人的思想,但 在现实中难于实现。因为上层的应用总是千变万化的,不论怎么对中间这一层进 行抽象,总会存在一些这种抽象无法胜任的应用。除此之外,为了适应更多的应 用,中间这一层抽象出来的b u i l d i n gb l o c k 就必须越细致,那么控制这些b u i l d i n g b l o c k 的组装机制也就越复杂,也就越容易出错。需要指出的是,对于该问题,可 扩展内核的解决方式是:对组装机制进行限制,即仅允许用户按照某些预先设定 的计算模型进行组装。但这种解决方式带来了问题是:在减少了b u i l d i n gb l o c k 的 组合方式的同时,也降低了可扩展内核对上层应用的适应性。 基于以上的认识,章鱼体系架构采用“两层闭环反馈+ 共享内存”的方式,使 自身具有清晰的结构,从而避免了o s 内核内部结构的无序性,降低了系统的复杂 度。其次,章鱼体系架构吸收了微内核结构和可扩展内核结构设计中这样的理念: 允许用户对内核进行修改,它仅仅允许用户依据预先提供的计算模型进行非常有 限的修改,即仅允许用户按照预先规定的容错架构,将监控进程放入内核中。除 此之外,章鱼体系架构假定上层应用均是基于闭环反馈范型的应用,以避免像微 2 相关f :作 7 内核或可扩展内核那样将不得不去研究如何为上层无穷多的应用提供良好的位于 不同层次的接口,以及如何保证这些接口和接口的组合所形成的新的接口的可靠 性上。 2 1 2 专用o s 体系架构 专用o s 是指针对某类特殊应用所开发的o s ,比如为分布式应用所开发的分 布式o s 、为了上层数据库应用所开发的数据库o s ,以及为了节约嵌入式系统中 的能源所开发的p o w e r - a w a r eo s 。由于本文面向的研究领域是自愈系统,所以本 文仅对解决可靠性问题的专用o s 进行综述。 最著名的是t a n d e m 公司( 后被c a m p a q 并购,现属于h p 公司) 的n o n s t o p k e r n e l ,n o n s t o pk e r n e l 的设计目标是对系统中出现的暂态错误进行容错。这是因 为【1 7 】n o n s t o pk e r n e l 的设计者们观察到最终成品软件中所存在的错误大部分均为 暂态错误( t r a n s i e n te r r o r ) 。通常大部分的确定性错误( d e t e r m i n i s t i ce r r o r ) 可在 软件系统的测试阶段,或者在软件交付使用后的初期阶段就可被发现并修复,而 暂态错误却难以去除。 n o 璐m p k e r n e l 达到上述设计目标所采取的方案是在系统中引入大量的冗余, 每个计算节点均配备并行执行的硬件模块和并行执行的软件模块,使得系统能够 通过多条路径完成指定功能,从而达到任意单个的硬件模块或单个的软件模块错 误均不会引起系统的瘫痪。 章鱼体系架构和n o n s t o pk e r n e l 不同之处在于: i 在硬件层次上,n o n s t o pk e m e l 采用的是加入了额外比较电路的专用冗余硬 件体系架构,而章鱼体系架构所假定的硬件是普通的非冗余硬件体系结构。 j i 在软件层次上,n o n s t o pk c m d 主要通过p r o c e s sp a i r 技术为上层应用的可 靠性提供支持。p r o c e s sp a i r 由一个主进程和一个备用进程构成,主进程和备用进 程均执行同一份程序代码,当主进程发生错误后,由备用进程接替主进程继续执 行。除此之外,n o n s t o pk e r n e l 还和上层的中间件( 如t u x e d o ) 等软件一起,为上 层应用开发提供一个分布式的高可靠的软件开发环境。章鱼体系架构则不同,它 主要关注的是分布式系统中单个节点上的可靠性问题。它主要采用的是基于 r e c o v e r yb l o c k 的软件多版本,并通过位于特权级的监控进程,确保单个节点上层 应用的可靠性。 另一个比较著名的解决可靠性问题的专用o s 是i b m 的z o s ,它与n o n s t o p k e r n e l 所采用的技术类似,这里就不再赘述。 8 一种面向自愈计算的o s 体系架构的研究 2 1 3 主流o s 内核与章鱼体系架构下o s 内核的比较 i 1 i n u x2 4 0 内核与章鱼体系架构下的o s 内核的比较 不同点1 : l i n u x2 4 0 内核下的监控进程位于用户态下,它若要读写一个设备上的状态, 需要执行切换到内核态下的指令。由于需要两次切换( 从用户态到系统态,再从 系统态切换回用户态) 。两次切换共至少需执行2 4 条指令( 保存现场状态1 3 条, 恢复现场状态1 1 条,而定位系统调用对应的内核函数的语句没有计算在内) 。 章鱼体系架构下的监控进程位于内核中,所以,监控进程若要读取一个设备 上的状态,无需执行切换到内核态下的指令。 不同点2 : l i n u x2 4 0 内核下的监控进程在读写设备状态时,至少要进行3 层函数调用, 以写函数为例:l i n u x2 4 0 内核将会逐层调用s y s、 和_ w r i t e 0g e n e r i cf i l ew n m o g e n e r i e _ _ c o m m i t _ w r i t e 0 ,这3 个函数分别位于不同的层次上,其中s y s _ w r i t e 函数 的参数个数是3 ,g e n e r i cf i l ew r i t e o 和g e n e r i cc o m m i t _ w r i t e o i 函数的参数个数均为 4 ,那么至少需1 4 条语句( 1 1 条参数压栈语句,以及3 条保存现场语句。需要指 出的是:g e c 视函数破坏的现场情况不同,保存现场的语句数也不同,在1 1 6 条 语句之间,这里取最小值) 。并且每次写均要重走上述函数调用路径。 章鱼体系架构下的监控进程在读写设备状态时,只需一层函数调用,即可完 成,无需上述因分层带来的额外参数压栈语句和现场保存语句。另外,由于章鱼 体系架构可以直接采用内存映射的方式进行读写,所以,在某些情况下需要连续 写时,无需函数调用即可完成。e g :设备状态的大小为定长,当第一次写该设备的 状态时,可以获得指向该设备状态的位置指针,那么当下次需要更新该状态时, 可以重用该位置指针,直接进行赋值即可,无需再次进行函数调用。 章鱼体系架构下o s 内核的上述两点特性在本文的实验中作了展示( 6 2 2 2 节) i i 4 4 b s d 内核与章鱼体系架构下的o s 内核的比较 4 4 b s d 同样具有类似于上述l i n u x2 4 0 内核的缺点。除此之外,4 4 b s d 为访问本地底层的块设备,要经过:a c t i v ef i l ee n t r y 层、r h o d e 层、l o c a ln a m i n g 层、文件系统层、b u f f e r c a c h e 层以及块设备驱动层才能访问到块设备。那么, 如果监控进程需要块设备驱动层上的信息和块设备上的信息,那么它只能通过 两次始于a c t i v ef i l ee n t r y 层上的函数调用完成信息的获取,而这两次函数调用 不能合并,也就是不能在当获取块设备层上的信息时,捎带获取块设备驱动层 上的信息。而若要想一次性的获取两层的信息,那么就必须从a c t i v ef i l ee n t r y 2 相关工作 9 层起,在各层上增加新的接口。而章鱼体系架构由于将这些信息作为关系文件 进行存储,所以对于上面的情况,可以生成一个索引文件,无需修改内核。 i i i s o l a r i s1 0 内核与章鱼体系架构下的o s 内核的比较 s o l a r i s1 0 中引入了一种名为p r e d i c a t i v es e l f - h e a l i n g 的机制( 简称s p s h l 0 ) , 该机制的实现主要位于o s 内核之上,它对o s 内核本身的影响很小,没有改变传 统的s o l a r i s 内核架构。它对o s 内核的主要改动在于规整了o s 发送消息机制( 如 更加严格地限定了消息的格式) 。 它与章鱼体系架构下的o s 内核的不同之处在于: 不同点1 :解决的问题不同 s p s h i o 主要解决的问题是应用进程崩溃后如何重启的问题,对于该问题 s p s h l 0 中o s 内核需要解决的主要问题是如何发现应用进程的崩溃,并交由 o s 上层应用中的 e s t a r t e 处理。而对于应用进程崩溃这种错误,o s 内核利用 硬件提供的接口很容易发现,传统o s ( 包括早期的s o l a r i so s 版本) 已经较好 的解决了这一点,所以s p s h l 0o s 内核本身无需做大的变动:s p s h l 0 解决的 另外一个问题是硬件错误的诊断与处理【1 3 6 】,这一问题同样可以通过硬件接口 很容易的做到。而章鱼体系架构主要解决的问题是: ( 1 ) 规整o s 内核的数据流,以降低o s 内核本身的复杂度,这将对o s 内 核本身的结构做大的调整 c 2 ) 如何在o s 内核中协调多监控进程。即解决“监控进程由谁来监控的 问题” 不同点2 :s p s h l 0 中o s 内核架构和章鱼体系架构下的o s 内核架构不同 ( 1 ) 该架构属于自愈架构中的”层次化语义规则,状态分散式的体系架构” ( 见论文2 3 1 节) ,而章鱼体系架构属于”分散式语义规则,状态集中式的体 系架构”( 见论文2 3 2 节) ( 2 ) s p s h l 0 中的o s 内核架构依然属于传统的微内核结构,它并不是一个 全新的o s 内核体系架构,还是基于原来成熟的s o l a r i s 架构( 如s o l a r i s7 等) 【1 3 4 ,1 3 5 ,s p s h l 0 对o s 内核的改进之处主要集中在对硬件错误消息管理上。 这还意味着,s o l a r i s 架构在设计之初,并未将容错系统作为系统架构设计的一 部分,而将其作为系统设计的附加部分 另外,需要指出的是s o l a r i s 内核同样也具有类似于上述l i n u x2 4 0 与 4 4 b s d 内核的哪些缺点。 塑一种面向自愈计算的o s 体系架构的研究 2 2 多版本软件体系架构 2 2 1r e c o v e r yb l o c k ( r b ) 最早的成熟的软件多版本体系架构可能是r e c o v e r yb l o c k 1 8 1 ,r e c o v e r y b l o c k 体系架构的提出是因为其设计者观察到:造成软件系统运行时出现错误或失 效的根本原因是软件系统中存在着缺陷。而造成这些缺陷的本质原因是软件系统 中固有的复杂性。那么,如果软件系统架构本身混乱,那么容错机制的引入将势 必进一步增加系统的复杂度,最终导致适得其反的结果。所以r e c o v e r yb l o c k 体 系架构的设计者认为:良好的体系架构是软件系统容错的先决条件。基于这样的 理念,r e c o v e r yb l o c k 对软件系统中各个组件的交互关系,尤其是组件问的控制流 进行了规整。 一个最基本的r e c o v e r yb l o c k 的体系架构如图2 - 1 所示,在r e c o v e r yb l o c k 中, 一个软件版本称为一个a l t e r n a t e ,这些最基本的r e c o v e r yb l o c k 可以通过串联或 并联的方式进行组合,形成新的r e c o v e r yb l o c k 。 l 图2 1r e c o v e r yb l o c k 的控制流图 r e c o v e r yb l o c k 中控制流的伪代码描述如图2 - 2 1 8 : 图2 - 2 伪码表示的r e c o v e r yb l o c k 控制流 2 相关1 :作 也就是说,r e c o v e r yb l o c k 在执行时,首先,选择p r i m a r y 进行执行,当p r i m a r y 出错时,选择a l t e r n a t e1 执行,如果a l t e r n a t e1 依然出错,那么就依次选择剩余的 a l t e r n a t e 执行,直至所有a l t e r n a t e 失效或某个a l t e r n a t e 执行成功,即r e c o v e r yb l o c k 每次只选择一个软件版本执行。 章鱼o s 体系架构吸收了“良好的体系架构是软件系统容错的先决条件”这个 核心理念,不过它与r e c o v e r yb l o c k 所强调的重点不同,r e c o v e r yb l o c k 强调的是 规整控制流,而章鱼体系架构则主要对数据流进行了规整。 2 2 2n - v e r s i o np r o g r a m m i n g ( n v p ) n v p 1 9 与r e c o v e r y b l o c k 之间的区别是:n v p 同时并行执行各个不同的软件 版本,最后比较这些版本的执行结果,根据预定的判断规则,选取其中某个版本 的执行结果作为最终的执行结果。 n v p 的优点在于,能够容硬件错误,并且,无须像r e c o v e r yb l o c k 那样,系 统出现错误后,还要向后回滚,这样在错误出现时系统的响应时间不会受太大影 响。其主要缺点在于,它需要多套( 至少3 套) 硬件支撑其执行,这样导致系统 的成本费用较大。 章鱼体系架构与n v p 的不同之处在于:n v p 关注的是如何利用多个运算节点 的冗余,以提高系统的可靠性,而章鱼体系架构关注的是如何提高单运算节点( 这 里的单运算节点是指在该运算节点上的硬件在任意时刻最多只能运行应用程序的 一个版本) 的可靠性。章鱼体系架构通过在单运算节点上使用多个软件版本达到 这一点。 2 2 3n - s e l fc h e c k i n gp r o g r a t m i n g ( n s c p ) n s c p 实际上是n v p 的一种变种,n s c p 一共有两种方式:i 每个版本对于最 终的结果各自拥有一个a c c e p t a n c et e s t 。i i 将所有的软件版本进行分组,两个为一 组,每组有一个a c c e p t a n c et e s t ,该a c c e p t a n c et e s t 对组内的两个版本的结果根据某 种规则( 一般采用判断两组结果是否相同) 进行比较,以确定该组的结果是否有 效。接着进行组间比较,最终确定有效结果,或者触发异常处理机制。以拥有四 个版本的软件系统为例:其具体的执行过程如图2 - 3 1 2 0 所示: 一种面向自愈计算的o s 体系架构的研究 r u r iv a t l a n t83a n d2o nh a r d w a r ep a i r1 v a r l a n t s3a n d4o nh a r d w a r ep a u : c o m p a r er e s u l t s1a n d2 c o m p a r ee e g u l t g3 a n d4 i n o t e a t c h ;i n o tm a t c h s e tn a m a t c h l s e tn o m a tc h 2 e l s e3 e tr e s u 2 tp a i r1e l s es e tr e s u l tp a i r2 i fn g m a c h a n dn o tn o m a t o h 2 。e e s u i t :r e s u t tp a i r2 e l s ei fn o n a t c h 2a n dn o tn o m a t c h l r e s u t = r e s u l tp a i r1 e l s ei tn o r 4 a t c h la n dm o m a t c h 2 ,r a i s ee x c e p ti o n e l s ei n o th o m a t c h la n dn o th o n a t c h 2 t h e nc 。【t 黼r er e s u l tl a i r1a n d2 i tn o t r n a t c h | 。r a i s ee x c e p t i o n i f m a t c h ) jr e s u l t = r e s u l tp a i rlo r2 r e t u r nr e s u l t 图2 - 3 伪码表示的n s c p 控制流 章鱼体系架构中的监控比对吸收了n s c p 的分组比对的思想,不过它与n s c p 的比对逻辑略有不同,因为它通过监控进程相互比对,所以只要其中一个监控进 程认为应用出错,那么就认定应用程序出错。 2 3 自愈软件体系架构 自愈软件体系架构是近年来出现的一种新的软件体系架构,为了能够对自愈系 统体系架构进行综述,那么就必须首先清楚什么是自愈系统,非常遗憾的是目前 自愈系统还不存在一个公认的严格的定义。大部分研究者仅仅从功能上对自愈系 统进行了说明,大致有五种观点:第一种以【3 】为代表,它认为“自愈系统是这样 的一个系统:它能够首先检测、隔离失效的组件,然后将该失效的组件进行修复 或替换,并且,在这一过程中不会对应用程序造成明显的影响”,这一种观点的缺 点在于无法区分普通的容错系统。第二种观点v 2 1 为代表,它认为:“自愈系统 追求的目标是系统的健康状态对于当前的任务足够好”,也就是说,它仅仅指明了 自愈系统的特点,即自愈系统可以暂时不纠正那些对所要完成的任务影响不大的 错误。第三种观点以【2 2 1 为代表,它认为存在于生物体中的自愈系统才是真正的自 愈系统。第四种观点2 3 甚至认为:自愈、自配置( s e l f - c o n f i g u r i n g ) 、自组织 ( s e l f - o r g a n i z i n g ) 、自治是同一个概念。这种观点的优点在于从宏观的角度上去理 解自愈技术,能够看到不同技术的共同点,缺点在于过于笼统,不能清晰的区分 各种技术细微的差别。最后一种观点是绕过“自愈系统的定义”这一问题,仅仅 对当前研究者研究的内容进行了阐述,如 2 4 1 ,它只是将自愈技术按照所解决的问 2 相关1 - 作 里 题划分成为:i 错误模型i i 系统响应i i i 系统完整性i v 设计上下文,进行综述。 并未对自愈系统这一概念进行严格的定义,从而无法揭示自愈系统的本质。 综合分析上述观点后,本文对自愈系统定义如下【2 5 】: 定义2 1 :如果一个系统在运行时,能够显式地知道自己整体的行为自动机模 型,并根据该模型,自主完成错误的发现、诊断及排除,那么该系统就是一个自 愈系统。 采取定义2 1 的原因是: i 自愈系统是在高可信计算和自治计算的双重背景下出现的,自愈技术若从高 可信技术的角度来划分【9 】,它属于高可信技术中的“容错技术”分支,它与传统 容错技术的目标一样:在软件系统运行时,系统能够发现错
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 质量知识竞赛题目及答案
- 医院人事准入制度
- 22 羿射九日 课件(共23张)
- 电力电子技术 教案 上 大连工业版 0.1 电力电子技术-2.3 集成移相触发电路
- 子宫输卵管造影共识操作规范与分人群诊疗方案总结2026
- 年产20000吨高端装备及高品质轨道交通环境影响报告表
- 2026福建农科所面试题及答案
- 2026年6G网络干扰感知路由优化
- 2026安防运维管理面试题及答案
- 住房城乡建设系统城市内涝风险普查技术导则试 行
- 关于初、高中地理衔接问题的探究获奖科研报告
- 项目三南美白对虾的人工育苗技术
- 全国中小学生安全知识竞赛试卷及答案
- (完整)管理学决策树习题及答案
- GB/T 6451-2015油浸式电力变压器技术参数和要求
- GB/T 5751-2009中国煤炭分类
- CB/T 3226-1995驾驶室固定矩形窗
- 第一性原理方法介绍-讲座1
- QBY3气动隔膜泵说明书
- 《思想政治教育学原理》第一章-思想政治教育发展-第二章思想政治教育本质特征-第三章-思想政治教育地位功能课件
- 校外实习考勤表(模板)
评论
0/150
提交评论