(计算机系统结构专业论文)基于微内核的构件框架设计与实现.pdf_第1页
(计算机系统结构专业论文)基于微内核的构件框架设计与实现.pdf_第2页
(计算机系统结构专业论文)基于微内核的构件框架设计与实现.pdf_第3页
(计算机系统结构专业论文)基于微内核的构件框架设计与实现.pdf_第4页
(计算机系统结构专业论文)基于微内核的构件框架设计与实现.pdf_第5页
已阅读5页,还剩58页未读 继续免费阅读

(计算机系统结构专业论文)基于微内核的构件框架设计与实现.pdf.pdf 免费下载

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

文档简介

浙江大学硕士学位论文摘要 摘要 微内核以其极小化和安全性的特点,被越来越多应用于嵌入式设备。然而随 着嵌入式硬件功能的增加,越来越多的功能被加入嵌入式系统中,导致了日趋复 杂的嵌入式软件系统,嵌入式系统的传统开发方法变得不足以应付日益复杂目益 庞大的系统。构件化软件开发提供了一种开发独立系统的方法,但传统的企业级 软件的构件化设计过于庞大臃肿,无法用于资源受限、具有安全性、实时性和低 功耗要求的嵌入式设备。 本文的主要工作是设计一个基于微内核的构件框架s m a r t u c o m ,具备灵 活的底层通讯扩展机制,可适应于不同的环境;建立一套构件设计规范,作为基 于s m a r t - u c o m 的构件应用开发的标准;提供代码自动化生成工具,依据开发者 提供的接口描述生成通用代码。s m a r t u c o m 是一个轻量级构件框架,针对嵌入式 设备进行快速应用开发和部署,具备良好的结构性和代码重用性,确保嵌入式软 件的高效开发,并保证其质量。 关键词:构件框架,微内核,接口,自动化工具,嵌入式系统 浙江大学硕士学位论文a b s t r a c t a b s t r a c t m i c r o k e m e l b a s e do p e r a t i n gs y s t e m sa r ei n c r e a s i n g l yb e i n gu s e di ne m b e d d e d d e v i c e sf o rt h e i rm i n i m i z a t i o na n dr e l i a b i l i t yf e a t u r e s h o w e v e r , 谢t 1 1i n c r e a s i n g c a p a b i l i t i e so fe m b e d d e dh a r d w a r e ,m o r ef e a t u r e sa l ea d d e di ne m b e d d e ds y s t e m s , l e a d i n gt o i n c r e a s e dc o m p l e x i t yo fe m b e d d e ds y s t e m ss o f t w a r e t h et r a d i t i o n a l d e v e l o p m e n ta p p r o a c hf o re m b e d d e ds y s t e m sh a sb e c o m ei n a d e q u a t et om e e tw i t h m u c hl a r g e ra n dm o r ec o m p l e xs y s t e m s c o m p o n e n t - b a s e ds o f t w a r e e n g i n e e r i n g m e t h o d o l o g ya d d r e s s e st h i si s s u eb yp r o v i d i n gaw a yt od e v e l o paw h o l es y s t e m h o w e v e r , t h et r a d i t i o n a le n t e r p r i s e - c l a s sc o m p o n e n t ss o f t w a r ef r a m e w o r ki st o o b l o a t e dt ob eu s e di ne m b e d d e dd e v i c e s ,w h i c hu s u a l l yh a v es t r i c tc o n s t r a i n ss u c ha s l i m i t e d r e s o u r c e s ,s e c u r i t yr e q u i r e m e n t s ,r e a l - t i m ep r o p e r t y a n dl o wp o w e r c o n s t r a i n t s i nt h i sp a p e rw ei n t r o d u c es m a r t - u c o m ,ac o m p o n e n tf r a m e w o r kb a s e do n m i c r o k e r n e l t h ef e a t u r eo fe a s y e x p a n s i o no ft h eu n d e r l y i n gc o m m u n i c a t i o n m e c h a n i s mm a k e ss m a r t - u c o mf l e x i b l ee n o u g ht oa d a p tt od i f f e r e n te n v i r o n m e n t w ee s t a b l i s has e to fs m a r t - u c o mc o m p o n e n ts p e c i f i c a t i o n sf o rc o m p o n e n t - b a s e d a p p l i c a t i o nd e v e l o p m e n t ,a n da l s op r o v i d ea u t o m a t e d t o o l st o g e n e r a t e c o d e s a c c o r d i n gt ot h ei n t e r f a c ed e s c r i p t i o n ss p e c i f i e db yd e v e l o p e r s m a r t - u c o mi sa l i g h t w e i g h tc o m p o n e n tf r a m e w o r k , a n di sf o c u s e do nr a p i da p p l i c a t i o nd e v e l o p m e n t a n dd e p l o y m e n tf o re m b e d d e ds y s t e m s s m a r t - u c o m - b a s e dc o m p o n e n ts o f t w a r e e n g i n e e r i n gm e t h o d o l o g yp r o v i d e saw a yt od e v e l o paw h o l es y s t e mw i 廿1g o o d s t r u c t u r ea n dh i g hc o d er e u s a b i l i t y k e y w o r d s :c o m p o n e n tf r a m e w o r k ;i n t e r f a c e ;a u t o m a t e dt o o l s ;i am i c r o k e r n e l ; e m b e d d e ds y s t e m 浙江大学硕士学位论文图目录 图目录 图2 1 以度内核为h y p e r v i s o r 的虚拟化架构6 图4 1 总体框架示意图1 6 图4 2 应用、构件、对象间的关系1 7 图4 3o b j e c t 类18 图4 4 对象查询2 0 图4 5 接口定义21 图4 6c + + 语言的接口定义2 3 图4 7c + + 语言的接口内部结构2 4 图4 81 0 r 格式示例。2 5 图4 9 类对象的类型2 5 图4 1o 类对象的g u i d 2 6 图4 1 1 由i o r 获取接口对象。2 7 图4 1 2 远程过程调用2 8 图4 1 3 使用不同通讯协议的各类p r o x y 2 8 图4 1 4 参数收集2 9 图4 1 5m a r s h a l l i n g 格式示例3 0 图4 1 6 对i d l 文件的解析流程3 2 图4 1 7 中间层的接口函数调用过程3 3 图4 18s k e l 函数命名一3 4 图4 19r u n 流程3 4 图4 2 0s k e ! 函数处理步骤3 5 图4 2 1 构件层次结构3 6 图5 1 硬件、内核和调试选项3 9 图5 2 硬件选项4 0 图5 3 内核选项4 0 图5 4 调试选项。41 图5 5 调试选项4 2 图5 6m y t e s t i d l 接口定义文件4 3 图5 7 解析及输出代码文件4 5 图5 8c o n l ls t r 0 函数模板4 5 图5 9g o n ns t r 0 函数具体实现4 6 图5 1o 服务的i o r 4 6 图5 1 1 客户端调用4 7 图5 1 2 服务端响应4 7 图5 1 3 客户端b i r t h d a y ( ) 调用4 8 i v 浙江大学硕士学位论文 图目录 图5 1 4 服务端b i r t h d a y ( ) 响应4 8 图5 15 客户端c o n ns t r ( ) 调用4 8 图5 16 服务端c o n i ls t r 0 响应4 8 图5 17 客户端e x i t0 调用4 9 图5 1 8 服务端e x i t ( ) 响应4 9 图5 1 9l 4 应用与s m a r t - u c o m 应用性能对比5 0 图5 2 0s m a r t - u c o m 带来的额外开销百分比5 0 v 浙江大学硕士学位论文 表目录 表目录 表4 1 生存周期管理相关函数1 9 表4 2 接口定义中支持的数据类型2 l 表4 3 字符转义31 表4 4 从h e l l o i d l 文件自动生成的文件列表3 1 浙江大学硕士学位论文 第1 章绪论 第1 章绪论 1 1 课题背景 嵌入式系统的传统开发方法,正在产生越来越不可靠的嵌入式软件。随着嵌 入式硬件功能的增加,更多的功能被加入嵌入式系统中,导致了日趋复杂的嵌入 式软件系统。然而,从前一节可以看到,随着软件系统复杂性的增加,其开发方 法和技术并没有显著的变化。这些技术用于小型系统尚可,但不足以应付更为复 杂更为庞大的系统,需要使用一种更为先进的软件工程技术,以确保嵌入式软件 质量的提升和开发效率的提高。 基于构件的软件开发方法特别针对这个问题,提供了一种方式开发独立系 统,并且具备良好的结构性和代码重用性。还可以提升系统的灵活性,允许新的 构件加入系统或从系统移除。另外,由于构件相对独立,允许不同的开发者使用 不同的开发语言开发大型系统的各个模块,开发和维护变得简单。 然而,用于嵌入式软件系统的构件化设计方法与用于传统的企业级软件的构 件化设计有很大不同之处,这主要体现在资源限制和非功能性要求两个方面。嵌 入式系统通常有很强的资源限制,例如成本考量、大小限制等,这些因素直接决 定了嵌入式设备的计算能力、内存容量、能耗等,嵌入式软件开发必须提供良好 的机制,确保软件可以在不同处理能力( 通常更慢) 的处理器上正常运行,能适 应不同的内存环境,并且能够在高效运行的同时,节省能耗。嵌入式系统的非功 能性要求主要体现在实时性、安全性和可靠性,实时性意味着软件运行必须是可 预测的,其行为必须是可控的,安全性和可靠性意味着关键任务不能出现失败, 因为这类软件故障会导致严重损失,有时甚至是生命损失。 许多企业级的构件模型,例如n e t 、j 2 e e 、c o r b a 、d c o m 等,虽然这些中间 件平台提供众多丰富的服务和灵活的管理配置,但是获取这些丰富性和灵活性的 副作用是庞大臃肿的软件系统,以及众多安全隐患,未能解决嵌入式系统的实时 性、容错性、能耗等方面的关键问题,很难应用于资源有限的嵌入式设备。我们 浙江大学硕上学位论文第1 章绪论 需要一种专门针对嵌入式系统设计的构件模型以及相应的开发工具和环境。 1 2 研究意义与目的 嵌入式应用软件开发仍是昂贵且容易导致错误的过程,为减少软件代价和提 高软件质量,需要一种专门针对嵌入式系统设计的方法。构件模型的基本好处是 强调模块化和扩展性,在固定的接口内封装了实现细节,增强了软件可重用性, 通过模块化设计提高可伸缩性和可移植性。而微内核以其极小化和安全性的特 点,被越来越多应用于嵌入式设备。 我们希望设计一个构件框架,基于该平台实现软件复用和应用快速开发部 署,将操作系统底层细节对整个系统的影响降到最低,针对特定的构件应用进行 性能和能耗方面的优化。 作为一种尝试,我们在微内核系统上开发一套轻量级构件框架,针对嵌入式 设备进行快速应用开发和部署。该构件框架应当具备灵活的底层通讯扩展机制, 可灵活适应于不同的环境( 如不同操作系统) ;建立一套构件设计规范,作为构 件应用开发的标准;提供代码自动化生成工具,依据设计者提供的接口描述生成 通用代码。 1 3 我的工作 本文基于微内核开发一个轻量级构件框架一s m a r t u c o m ,基于此平台,可 实现嵌入式应用的快速开发部署。另外,由于嵌入式应用通常具有自身的特殊性, 构件框架针对特殊应用进行设计优化,利用有限的资源,发挥最大的效能。 主要工作如下: 1 构建基于微内核系统的底层基础平台支持,包括开发环境的搭建、c c + + 基础库的定制和移植等。 2 设计并实现一个基于微内核的轻量级构件框架,包括构件模型设计、接 口设计、数据类型封装、参数及返回值的传递和解析、通用类型支持、 代理对象机制、代理对象的通讯扩展支持。 2 浙江大学硕士学位论文第1 章绪论 3 设计一套基于该构件框架的规范,从系统的实现机制、功能、提供的接 口、参数类型、出错代码等几方面对构件框架具体实现进行规范。 4 提供一套开发工具,对遵循构件框架规范的接口描述文件进行解析,自 动生成服务端、客户端代码,以及上层对象代理接口、底层封装代码。 1 4 论文组织 本文重点研究了s m a r t u c 0 卜基于微内核的构件框架的设计与实现,实现 一个可运行于嵌入式设备的应用开发框架。 第1 章介绍了课题背景和研究的意义与目的,并提出本文的工作。 第2 章简要介绍了基于l 4 微内核的嵌入式应用开发的发展现状和相关技术, 并详细阐述了构件模型的研究现状和发展趋势。 第3 章将介绍了s m a r t - u c o m 构件框架所涉及到的关键技术研究。 第4 章将介绍s m a r t u c o m 构件框架的具体设计与实现。 第5 章将介绍s m a r t u c o m 构件框架的演示验证,包括平台的移植与搭建。 第6 章将总结本文所做的工作,并对接下来的研究方向作出展望。 浙江大学硕_ 上学位论文第2 章相关技术综述 2 1l 4 微内核介绍 第2 章相关技术综述 今天大部分操作系统,例如l i n u x 内核,功能不断丰富,支持的硬件范围也 越来越广,直接导致内核体积迅速膨胀。然而代码都是有错误倾向的,如此多的 代码中隐藏的缺陷和安全漏洞无可避免,内核中出现的一个小错误可以破坏整个 系统的正常工作。 l 4 是一个微内树1 】构架的操作系统内核,现在已经形成一个微内核家族。l 4 微内核系统是一个基于消息传送( m e s s a g ep a s s i n g ) 机制的内核,它只提供对操 作系统绝对必要的功能,而把其它属于传统操作系统内核部分的功能留给用户态 进程来实现。l 4 微内核系统具有出色的性能和很小的体积。 l 4 的设计原则是“一项特性当且仅当安全需要它在特权模式被实现时才应该 在微内核里 ,根据这一原则,l 4 微内核系统由微内核与用户态服务组成。根据 l 4 的参考文档【2 ,3 ,4 1 可以了解到,l 4 的构建基础由进程线程组成,一个进程可以看 做一个相对独立的地址空间,它是系统资源的一个容器;线程是应用的执行单元, 由内核统一调度。进程间通讯( i p c ) 是l 4 微内核的另一个非常重要的部分,通 过i p c 机制,不同线程以一种高效的方式进行消息的交换。 l 4 微内核系统发展出了很多分支,l 4 原始版本特别注重速度,为了获得高 性能,内核中许多关键代码用汇编写成。l 4 k a :p i s t a c h i o 是l 4 的一个分支,用 面向对象的c + + 语言开发,具有良好的可移植性及可读性;f i a s c o :这一分支包含 对硬实时的支持,其内核是完全可重入的,允许在任何时刻被中断;n i c t a 3 龟;a 建 了一个新的分支l 4 一e m b e d d e d ,用于嵌入式环境。 l 4 微内核设计背后隐藏着组件化设计的思想,许多功能都可以在l 4 上以服 务的形式进行设计。l 4 的每种中断可以被赋予特定的线程进行处理,对于l 4 内 1 p i s t a c h i ow e b s i t e u r l :h t t p :w w w 1 4 k a o r g 2f i a s c o w e b s i t e u r l :h t t p :o s i n t u d r e s d e n d e f i a s c o 3n i c t a w e b s i t e u r l :h t t p :# w w w n i c t a c o m a u 4 浙江大学硕士学位论文 第2 章相关技术综述 核提供的a p i 也以接口的形式对外提供。l 4 本身的这种特性,使得l 4 非常适合 用于组件化设计,一个错误的影响,容易将范围限制在局部范围。 2 2 传统l 4 应用开发 l 4 以自身优秀的性能和灵活性,以及微内核特性,越来越多的应用于嵌入式 设备【1 9 1 。嵌入式移动计算刚刚兴起,未来该领域将有很大增长。随着嵌入式硬件 功能的增加,更多的功能被加入嵌入式系统中,导致了日趋复杂的嵌入式软件系 统。 在l 4 上开发应用有两种方式,一种是原始方式,另一种是虚拟化技术。 原始方式是指直接利用l 4 微内核提供的a p i 接口进行应用程序设计,对于 简单应用而言,这种设计非常便捷,可以避免复杂框架或机制带来的额外开销。 但是这种方式由于很原始,需要了解l 4 系统接口的语义,对l 4 内核机制有深入 的了解。另外,不适合大型复杂的应用系统开发。 另一种方式基于虚拟化技术,即在l 4 微内核基础上通过虚拟化技术运行另 外一个较成熟的操作系统,例如l i n u x ,由该操作系统运行真正需要运行的应用, 提供所需服务。这种方式的好处显而易见,可以在成熟的操作系统环境下开发和 调试应用程序,通常这些应用可以正确无误的在基于l 4 的虚拟化环境中运行。 然而,这种方式的弊端也很明显,对于一个普通应用,需要运行整个操作系统提 供运行环境,额外开销太大,并且整个操作系统的运行依赖于虚拟化技术,而虚 拟化技术本身是一项很复杂的技术,对于运行时出现的错误,不容易定位,可能 是应用本身出错,也可能是虚拟化过程出错。 2 2 1 基于虚拟化技术的应用开发 文献 5 为我们展现了一种典型的在l 4 上使用虚拟化技术的架构,如图2 1 所示。这种架构以l 4 为h y p e r v i s o r ,在此基础上运行各个客户操作系统。l 4 l i n u x 、 o k l 4 、w o m b a t 使用的都是这种架构。 浙江大学硕士学位论文 第2 章相关技术综述 圆圆固h y p e r v i s o r 圆圈 图2 1 以度内核为h y p e r v i s o r 的虚拟化架构 l 4 l i n u x 。是一个移植到l 4 微内核上的l i n u x ,l 4 l i n u x 作为一个普通的l 4 线 程运行于l 4 微内核上,相当于一个运行普通l i n u x 任务的l i n u xs e r v e r 5 。 l 4 l i n u x 与其他的l 4 微内核组件,例如实时组件,一同运行于l 4 微内核上。 l 4 l i n u x 与普通的l i n u x 系统是二进制兼容的,可在普通l i n u x 上运行的应用理 论上都可以运行于l 4 l i n u x 上。目前l 4 l i n u x 的最新版本是l i n u x 一2 6 3 1 。 o k l 4 5 是o k l a b s 专为移动设备平台虚拟化而设计,具备相对完备的功能。 t o s h ib a 的w 4 7 t 手机、m o t o r o l a 的e v o k eq a 4 就使用了的o k l 4 虚拟化技术,o k l 4 提供一个最小化o s 环境,在其上运行成熟的操作系统,以提供完整的功能。o k l 4 是一个具备相对成熟的商业化应用的产品,目前有l i n u x 、a n d r o i d 、s y m b i a n 、 w i n d o w s 多种系统可运行于o k l 4 提供的虚拟化平台上。 w o m b a t 6 与l 4 l i n u x 类似,是一个移植到l 4 i g u a n a 7 上的l i n u x 系统【9 】,不能 单独使用,是i g u a n a 项目的一部分。关于i g u a n a ,我们在下一节中会有详细介 绍。 基于虚拟化技术提供服务的方式在嵌入式设备中的应用越来越多,l 4 作为一 种极其精简的微内核系统,为虚拟化提供基础和支持,克服虚拟化技术的许多缺 4l 4 l i n u x w e b s i t e u r l :h t t p :o s i n f t u - d r e s d e n d c l 4 l i n u x o n l 4 o k l 4w e b s i t e u r l :h t t p :w w w o k 1 a b s c o r n ow o m b m w e b s i t e u r l :h t t p :e r t o s n i c t a c o m a u s o f t w a r e k e n g e w o m b a t l a t e s t 。i g u a n ap r o j e c t , h t t p y e r t o s n i c t a c o m a u s o f t w a r e k e n g e i g u a n a - p r o j e c t l a t e s t 浙江大学硕士学位论文第2 章相关技术综述 吲7 8 】。通过在l 4 微内核基础上通过虚拟化技术运行另外一个较成熟的操作系统, 由该操作系统运行真正需要运行的应用,提供所需服务。这种方式的好处显而易 见,可以在成熟的操作系统环境下开发和调试应用程序,通常这些应用可以正确 无误的在基于l 4 的虚拟化环境中运行,特别是驱动程序【1 0 i 。 然而,这种方式的弊端也很明显,对于一个普通应用,需要运行整个操作系 统提供运行环境,额外开销太大。虚拟化技术本身是一项很复杂的技术,对于运 行时出现的错误,不容易定位,可能是应用本身出错,也可能是虚拟化过程出错。 对于资源受限的嵌入式设备,需要一种更加灵活、开销较小的方式开发应用。 2 2 2 基于库的应用开发 基于l 4 的原始开发方式非常单薄和复杂,不适合大型复杂的应用系统开发。 为此有一些代码集合对l 4 进行扩充,提供更为丰富的功能和调用接口,方便开 发者使用。这些代码集合可以是供直接使用的代码片段、函数调用,也可以是一 种机制和框架,具有自身的特点和约束,为开发者提供更为强大的功能和扩展。 我们把这些代码集合统称为库,基于这些现成的代码或框架的开发称作基于库的 应用开发。 l 4 e n v 8 是一个在l 4 微内核上开发应用程序的编程环境,它最早作为实时操作 系统d r o p s 的一部分而开发。随着l 4 应用开发的增多,许多应用都有一些共同 的需求,包括对开发环境的要求,频繁使用到的功能等。为此,针对这些通用功 能,l 4 e n v 定义了一个最小的开发环境,可以满足大多数请求,避免代码依赖于 特定系统a p i 和硬件架构。l 4 e n v 为l 4 提供了许多扩展,包括内存管理、线程管 理、i p c 扩展、同步管理、输入输出日志机制、i o 资源管理等【1 1 】,这些为应用 开发提供了很大的方便。 l 4 i g u a n a 是n i c t a 的一个项目,为嵌入式系统提供操作系统的基础功能, i g u a n a 运行于l 4 微内核上,具有自身设计框架。i g u a n a 补充了底层的l 4a p i , 提供了几乎所有操作系统环境都需要的基础服务,例如内存管理、保护管理和设 sl 4 e n v i n t r o d u c t i o n :h t t p :w w w i n f t u - d r e s d e n d c m d e x p h p ? n o d e _ i d = 1 4 31 7 浙江大学硕士学位论文 第2 章相关技术综述 备驱动框架,支持低开销的数据共享。在i g u a n a 基础上可运行w o m b a t 操作系统, 通过半虚拟化l i n u x 提供传统嵌入式系统欠缺的功能。与l 4 e n v 相比,i g u a n a 更 多的是提供一种机制和框架,开发者在这些特点和约束基础上开发自己的应用。 无论是l 4 e n v 还是i g u a n a ,都方便了l 4 应用的开发。与直接利用l 4 微内核 提供的a p i 接口进行应用程序设计相比,复杂性大大降低。但是,基于库的应用 开发随机性太大,往往需要对不同的应用作针对性设计,而库是通用设计,针对 特殊需求没有灵活性,类似i g u a n a 这种框架也缺乏扩展性。另外,库本身的设 计通常很松散,缺乏系统化设计,不能形成一套机制。 2 3 构件化应用开发 2 3 1 嵌入式构件特点 从前一节可以看到,随着软件系统复杂性的增加,其开发方法和技术并没有 显著的变化,而虚拟化技术的分隔粒度太大,需要一种更精细的分隔方式。这些 技术用于小型系统尚可,但不足以应付更为复杂更为庞大的系统。嵌入式系统的 传统开发方法,正在产生越来越不可靠的嵌入式软件。需要使用一种更为先进的 软件工程技术,以确保嵌入式软件质量的提升和开发效率的提高。 构件化技术使得大型复杂软件被分割为小而简单的、相对独立得模块。基于 构件的软件开发方法,提供了一种新的开发独立系统的方式,具备良好的结构和 代码重用性。提升系统的灵活性,允许新的构件加入系统或从系统移除。另外, 由于构件相对独立,允许不同的开发者使用不同的开发语言开发大型系统的各个 模块,开发和维护变得简单。 然而,用于嵌入式软件系统的构件化设计方法与用于传统的企业级软件的构 件化设计有很大不同之处,这主要体现在资源限制和非功能性要求两个方面。嵌 入式系统通常有很强的资源限制,成本考量、大小限制等直接决定了嵌入式设备 的计算能力、内存容量、能耗等,嵌入式软件开发必须提供良好的机制,确保软 件可以在不同处理能力( 通常更慢) 的处理器上正常运行,能适应不同的内存环 境,并且能够在高效运行的同时,节省能耗。嵌入式系统的非功能性要求主要体 8 浙江大学硕士学位论文第2 章相关技术综述 现在实时性、安全性和可靠性,实时性意味着软件运行必须是可预测的【2 5 , 3 2 j ,其 行为必须是可控的,安全性和可靠性意味着关键任务不能出现失败,因为这类软 件故障会导致严重损失,有时甚至是生命损失。 许多企业级的构件模型,例如n e t 、j 2 e e 、c o r b a 、d c o m 等,虽然这些中间 件平台提供众多丰富的服务和灵活的管理配置,但是获取这些丰富性和灵活性的 副作用是庞大臃肿的软件系统,以及众多安全隐患,未能解决嵌入式系统的实时 性、容错性、能耗等方面的关键问题,很难应用于资源有限的嵌入式设备。我们 需要一种专门针对嵌入式系统设计的构件模型以及相应的开发工具和环境【l 训。另 外,针对嵌入式系统的特殊性,对某些功能进行硬件上的优化和扩展【2 8 , 3 1 】,可以 在有限资源下达到更高性能,在构件模型设计时可以考虑优化问题。 2 3 2 现有构件模型 o p e n c o m 1 5 , 1 6 】的目标定位是目标应用领域独立、部署环境独立、开销小。该 架构的核心是一个最小化的运行时核心组件,提供加载、绑定组件的基本服务。 核心组件位于硬件软件部署环境之上,核心是策略无关的,它提供的a p i 具备 目标系统无关性和部署环境独立性。在核心层之上是扩展层,根据不同的目标系 统和应用环境提供相应增强型功能,增加了o p e n c o m 的可裁剪性和扩展性。以 o p e n c o m 为代表,我们学习一种新的构件平台设计模式:基于已有的平台,开发 和验证新特性。但o p e n c o m 不适合用作真实的嵌入式设备,一方面因为它依赖于 微软的c o m ,底层机制也深受c o m 的约束,无法独立运作于嵌入式设备;另一方 面,o p e n c o m 是一个通用设计【1 6 1 ,对于嵌入式应用,在效率上不免有所影响。 r u n e s 1 7 】是一个用于网络嵌入式系统的构件平台,架构上分两层:底层是语 言无关、基于组件的编程模型,这一层非常的精简,可以运行于几乎所有典型网 络嵌入式设备;上层是软件构件,提供更为丰富的构件功能,并且按照功能划分 出组件集合,每个组件按照自身提供的功能在需要时自动部署。其a p i 依据o m g 标准接口描述语言定义。r u n e s 构件模型中组件是封装和部署的基础单元,它们 在运行时由组件类型来实例化。组件通过接口提供服务,这些接口的定义具有编 9 浙江大学硕上学位论文第2 章相关技术综述 程语言无关性。值得注意的是,仅仅通过8 种操作,就可以实现对r u n e s 构件模 型的完全管理,这种轻量级的模型很容易实现,并应用于多种平台。这种核心层 的简洁设计为我们的构件平台设计带来启发。 k o a l a 2 0 】是由飞利浦设计,专注于消费电子设备的软件产品开发。k o a l a 主要 强调嵌入式设备的资源受限特点,并且提供了一个轻量级的构件模型。k o a l a 的 构件间通讯通过远程过程调用风格的接口实现,支持构件的静态绑定,为减少运 行时开销,所有的构件调用都是硬编码进构件中的。k o a l a 没有考虑包括实时、 安全特性在内的非功能性要求。 s a v e 【2 1 】( 汽车安全系统的重要组件) 项目开发了一个构件模型一一 s a v e c c m 2 2 1 ,用于车载系统。s a v e c c m 是构件开发框架s a v e c o m p 2 3 】的一个组成部 分,s a v e c c m 支持构件的静态配置和构件绑定,仅仅专注于实时性和构件行为的 可预测性等属性,s a v e c o m p 环境还提供了分析工具。使用s a v e c c m 的一个例子就 是使用s a v e c c m 构件组成的控制环路。 c a m k e s 1 2 1 基于l 4 和i g u a n a 开发的一种构件模型,其中l 4 微内核提供最小 可信计算基础( t c b ) 1 1 9 】,i g u a n a 提供一些基础性的关键服务( 如内存管理、命 名服务、设备驱动支持等) 。c a m k e s 构件概念需要被映射到i g u a n a 所提供的机制 上,一个c a m k e s 构件通常被放在一个独立的i g u a n a 保护域中,被设计为一个单 独的i g u a n a 服务,以提供封装和隔离;c a m k e s 的r p c 接口也是直接映射到i g u a n a 的接口机制上的,i g u a n a 的接口机制在设计时考虑的是如何保护,而非c a m k e s 所强调的封装;c a m k e s 的数据端口机制被映射到i g u a n a 的内存区段机制,以实 现内存共享;c a m k e s 的事件被映射到i g u a n a 的异步通知机制。可以看到,c a m k e s 的许多概念严重依赖于i g u a n a 的机制,如果i g u a n a 不提供或者改变了自身的实 现方法,那么c a m k e s 将受到影响;另外,i g u a n a 的设计有其自身需求和特点, c a m k e s 将构件模型的一些机制映射到另一个系统上,难免产生生硬的套用,在效 率上受到影响。 在c a m k e s 的基础上, 1 3 提出一种基于构件的模型驱动开发架构,可快速 将模型设计转化为代码,构建了在e c l i p s e 上基于u m l 的建模环境,并提供一套 l o 浙江大学硕士学位论文第2 章相关技术综述 基于微内核的构件开发工具。将基于构件的模型驱动开发方法引入嵌入式系统 【2 4 1 ,带来了一些新的概念和挑战,但其带来的好处很多,这也促使我们对构件模 型进行更多的研究。 2 4 本章小结 本章主要介绍了l 4 微内核以及基于l 4 微内核的应用开发。l 4 微内核以其精 简、安全的特性,被越来越多的应用于嵌入式系统中,嵌入式系统通常有较多的 限制,包括实时性、可靠性、资源受限等要求,使得传统的l 4 应用开发越来越 难以满足新的要求,列举了常见的基于虚拟化的开发和基于库的开发。最后介绍 了新兴的嵌入式构件化应用开发方法,列举了现有的一些构件框架,以及各自的 不足之处,促使我们对构件模型进行更多的研究。 浙江大学硕士学位论文 第3 章s m a r t - u c o m 关键技术研究 第3 章s m a r t - u c o m 关键技术研究 3 1 对象管理 构件服务最终都由一个具体的对象提供,需要解决以下几个与对象相关的问 题: 1 构件与对象、对象与接口应当是一个怎样的关系; 2 如何从构件中的一个对象跳转到另一个对象; 3 构件中的对象提供服务的生存周期如何管理; 4 如何定位对象,进而获取服务。 对于第一点,为了保持模块化设计,构件中通常应当包含一个或多个对象, 分别针对不同功能,提供不同服务。对象与接口的关系就比较灵活了,可以有两 种设计方式,一种是一个接口对应着一个对象,这种方式强调接口,不同客户通 过接口访问到的总是相同对象,当所提供的服务具有唯一性特征时,这种实现方 式是合适的;另一种是一个接口可以对应多个对象,为访问对象,需要一种途径 来定位每个服务对象,虽然每个对象服务的功能完全相同,但其处理的数据则具 有局部性特点。不同的应用场景对应着不同的对象模型,构件框架应当提供足够 的灵活性,根据需求灵活选择所需的对象模型,而不应在设计时就将接口与对象 的对应关系限定死。 对于第二点,当获得一个服务对象后,如果需要获得同一构件中的其他对象, 应当有一种便捷的方式进行获取。跳转机制的设计直接关系到构件对象的包容、 聚合等特性【2 7 1 ,因此应当在底层设计时就考虑到跳转机制。并且构件框架应当具 备良好的扩展特性,以方便开发者实现自己的对象包容、聚合等特性。 对于第三点,对象的生命周期管理方案有较多选择,比较常见的有基于计数 管理和全局垃圾回收管理。考虑到l 4 用于嵌入式设备环境,系统资源比较稀缺, 计数管理方法是一个较好的选择。当然,构件框架应当将对象生命周期管理设计 成具有扩展性,可根据策略选择或扩展管理方式。 1 2 浙江大学硕士学位论文第3 章s d a r t u c o m 关键技术研究 对于第四点,如何定位对象,可以根据对象与接口的关系选择不同方案。如 果对象与接口是一对一的关系,那么可根据接口的定位方式定位相应服务对象; 如果一个接口可以有多个服务对象存在,那么需要种机制来定位每一个不同的 服务对象,可以考虑类似c o r b a 【2 6 】的做法,使用抽象地址方法来定位。 解决好上述的四个问题,构件框架的对象模型基本确定。对象模型是构件框 架的基本机制之一,位于底层,对整体产生的影响非常大,应当充分考虑设计时 的灵活性和可扩展性。 3 2 接口机制 接口是隐藏实现细节的关键,设计良好的接口机制是构件框架的基本要求。 接口应当保证与编程语言的无关性,并且能清晰描述接口所提供的服务。接 口的定义应当能够体现构件的设计层次,一个接口对应着一个相对独立的功能设 计;接口自身应当具备完备性,能够表示基本数据类型以及常见的扩展数据类型, 并能够准确描述这些参数的属性。 接口设计的另一个重要方面是保证二进制级别的兼容性。从技术上讲,接口 仅仅是包含一组函数的数据结构,通过这组数据结构,客户代码可以调用构件对 象实现的功能。这组成员函数就是构件对象所暴露出来的所有信息。接口语义不 仅应当在语法层面上保持正确性,在二进制层面依然有效。接口定义的确定性和 参数类型的确定性,应当保证接口调用的正确语义,甚至在二进制级别也能正确 表达。在二迸制层面上的兼容性是保证构件运行时多态的关键,也是实现构件的 编程语言无关性的重要因素。 为方便快速开发,构件框架可以提供一套自动化工具,从接口定义中自动生 成通用代码【3 5 ,3 6 ,3 7 1 ,供开发者使用。当然,这一功能可选,但非常重要。 3 3 代理机制 代理机制3 卅是实现远程服务本地调用的关键,代理作为服务对象在客户端的 代表,为应用开发者隐藏了获取服务的实现细节,是实现分布式特性的重要元素 之一。 浙江大学硕士学位论文第3 章s m a r t - u c o m 关键技术研究 代理将对远程服务的请求转化为远程过程调用,支持多种通讯协议,并保留 扩展接口给开发者,使其能实现自己的通讯协议。不论何种通讯协议,代理都应 当保持统一的调用接口,将服务调用请求正确传送至目的服务端。对于 s m a r t - u c o m 而言,其应用环境为l 4 微内核系统,因此至少必须针对l 4 的i p c 通 讯实现一套代理。 代理机制中的远程过程调用的传输涉及到函数名称封装、数据类型封装、参 数及返回值的传递和解析、通用类型支持等内容。这些内容需要制定规范,以便 开发者遵循共同的规范开发应用。 3 4 间接层 利用构件框架开发应用时,客户端关注服务的快速获取,服务端关注服务的 实现。而对于前述的代理机制具体如何实现分布式应用、远程过程调用如何实施 等内容,应当通过某种方式隐藏起来。 为此构件框架应当根据接口定义生成一些间接层代码。间接层代码【2 9 ,3 3 1 用于 封装获取响应服务过程的一些底层细节,包括r p c 调用、参数封装【3 8 , 3 9 , 4 0 、函数 分派等。这些间接层代码由框架根据一定规则生成,是实现快速开发和分布式特 性的关键,是框架的核心功能之一。 框架提供一套开发工具,对遵循描述规范的接口描述文件进行解析【3 0 1 ,自动 生成服务端、客户端相应代码,这些代码可以看作代码模板。 3 5 本章小结 本章围绕s m a r t - u c o m 关键特性,介绍了构件框架使用到的一些关键技术, 包括对象管理、接口机制、代理机制、间接层。有些关键技术可以有多种实现方 式,我们针对不同情况分别进行了讨论,对于涉及s m a r t - u c o m 核心设计的问题, 我们追求精益求精,对于其他一些非关键问题,我们尽量留下扩展空间,让框架 保持足够的灵活性。所有这些关键技术,为s m a r t u c o m 构件框架的设计初步定 犁。 1 4 浙江大学硕士学位论文第4 章s m a r t o u c o m 构件框架设计与实现 第4 章s m a

温馨提示

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

评论

0/150

提交评论