(计算机软件与理论专业论文)基于linux的car构件与dotnet构件互操作运行平台的研究与实现.pdf_第1页
(计算机软件与理论专业论文)基于linux的car构件与dotnet构件互操作运行平台的研究与实现.pdf_第2页
(计算机软件与理论专业论文)基于linux的car构件与dotnet构件互操作运行平台的研究与实现.pdf_第3页
(计算机软件与理论专业论文)基于linux的car构件与dotnet构件互操作运行平台的研究与实现.pdf_第4页
(计算机软件与理论专业论文)基于linux的car构件与dotnet构件互操作运行平台的研究与实现.pdf_第5页
已阅读5页,还剩60页未读 继续免费阅读

(计算机软件与理论专业论文)基于linux的car构件与dotnet构件互操作运行平台的研究与实现.pdf.pdf 免费下载

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

文档简介

摘要 摘要 构件技术的一个目标是构件具有平台无关性。一个开发好的构件,理想情况 下,应该可以在任意操作系统,软件平台上独立部署,正常运行。但是构件技术 最初并不能达到这个目标。虚拟机技术的主要特点就是屏蔽系统环境,为程序的 运行提供一个虚拟的环境。虚拟操作系统是虚拟机技术的一部分,它对操作系统 进行抽象,在新的操作系统环境中虚拟出原来操作系统的环境。 构件互操作是指两个或者两个以上的构件,尽管它们的构件实现语言、运行 环境不同,但是它们仍然可以协同工作,相互调用,完成更加复杂的功能。 论文源于上述背景,在l i n u x 上虚拟了e l a s t o s 操作系统和d o t n e t 运行平台, 并以e l a s t o s 的c a r 构件和c 撑语言编写的d o t n e t 构件为实例,实现了基于l i n u x 的c a r 构件与d o t n e t 构件的运行平台。另外,采用s o c k e t 通信原理实现了c a r 构件与d o t n e t 构件在l i n u x 平台上的互操作。 本文介绍了一种在l i n u x 上加载p e 文件的p e 加载器,该加载器利用l i n u x 操作系统未使用的1 0 8 m ( 从0 x 0 4 0 0 0 0 0 到o x 0 7 0 0 0 0 0 0 ) 空间加载p e 格式的应 用程序,利用l i n u x 操作系统在运行时为应用程序分配的4 3 2 m ( 从0 x 1 5 0 0 0 0 0 0 到0 x 3 0 0 0 0 0 0 0 ) 空间来加载p e 格式的d l l 模块,从而避免了与l i n u x 程序在空 间使用上的冲突。采取m m a p 方式为p e 文件分配内存,避免了加载应用程序后, 复杂的重定位操作。该加载器采取链表的方式来管理已加载的模块和使用的内存 空间,采取这种方法可以防止模块的重复加载和内存泄漏问题。为了支持c 社可 执行程序的运行,该加载器采取链表的方式来存储c # 程序集中方法的i i 。或者本 机代码的地址。 本文分析了c a r 构件元数据和d o t n e t 构件元数据,提出了一种构件互操作 描述语言c i d l ( c o m p o n e n ti n t e r a c t i v ed e s c d p f i o nl a n g u a g e ) ,并实现了c i d l 描 述文件的自动生成器。定义了c a r 构件与c 撑支持的数据类型的映射关系,采用 s o c k e t 通信方式,实现了c a r 构件与c 存编写的d o t n e t 构件间的互操作。 关键词p e 加载器;构件互操作描述语言:构件间的互操作 a b s t r a c t t h eg o a lo ft h et e c h n o l o g yo fc o m p o n e n ti st h a tt h ec o m p o n e n ti si n d e p e n d e n to f t h ep l a t f o r m i ti ss a i dt h a tap e r f e c tc o m p o n e n tc a nr u no na n yo p e r a t i n gs y s t e m s u c c e s s f u l l y b u tt h et e c h n o l o g yo fc o m p o n e n th a dn o tm a d et h i sg o a lc o m et r u eu n t i l t h ev i r t u a l t e c h n o l o g ya p p e a r e d v i r t u a lt e c h n o l o g ys u p p o r t s av i r t u a lr u n n i n g e n v i r o n m e n tf o r t h ep r o g r a m v i r t u a lo p e r a t i n gs y s t e mi sap a r to ft h ev i r t u a l t e c h n o l o g y , w h i c hi m p l e m e n t sav i r t u a lo l do p e r a t i n gs y s t e mo nt h en e wo p e r a t i n g s y s t e m t h ei n t e r o p e r a b i l i t yb e t w e e nc o m p o n e n t si st h a tac o m p l e xf u n c t i o ni sf i n i s h e d b yc o o p e r a t i o nb e t w e e nh e t e r o g e n e o u sc o m p o n e n t s t h e r ea r es o m ed i f f e r e n c e s b e t w e e nt h eh e t e r o g e n e o u sc o m p o n e n t s ,f o re x a m p l e s :p r o g r a m m i n g ,i n t e r f a c e ,a n d r u n n i n gp l a t f o r m t h e r e f o r et h ec o o p e r a t i o nb e t w e e nt h eh e t e r o g e n e o u sc o m p o n e n t s s h o u l dt h i n ko v e rt h e s ef a c t o r s b a s e do nt h eb a c k g r o u n d t h i sp a p e rt a k e sc a ra n dc 样a sr e p r e s e n t a t i v eo f e l a s t o sa n dd o t n e tr e s p e c t i v e l ) ;i m p l e m e n t sar u n n i n gp l a t f o r mo fc a ra n dc 撑o n t h el i n u x e x c e p tt h a t ,i m p l e m e n t sa c o o p e r a t i n gp l a t f o r mb e t w e e nc a rc o m p o n e n t a n dc 舟c o m p o n e n to nt h el i n u x m a k eu s eo fs o c k e tc o m m u n i c a t i o nt e c h n o l o g y t h i sp a p e ri n t r o d u c e sap el o a d e ro nt h el i n u x t h e r ea r e1 0 8 ms p a c ei su s e l e s s a n d4 3 2 ms p a c ec a na l l o c a t eb ym a l l o cf u n c t i o no nt h er u n n i n gt i m e t h el o a d e r m a k e su s eo ft h e s es p a c e st ol o a dt h ep ea p p l i c a t i o na n dp ed y n a m i cl i n kl i b r a r y r e s p e c t i v e l y t h es t r a t e g yo ft h em e m o r ya l l o c a t i o nc a np r e v e n tt h es p a c ec o n f l i c t w i t ht h el i n u xa p p l i c a t i o n ,t h el o a d e ru s e sm m a pf u n c t i o nt oa l l o c a t et h es p a c et o a v o i dt h er e o r i e n t a t i o n t h el o a d e ru s e sl i n kt a b l et om a n a g et h el o a d e dm o d u l e sa n d a l l o c a t e dm e m o r yt op r e v e n tt h ep r o b l e mo fl o a d i n gt h el o a d e dm o d u l e sa n dm e m o r y l e a k i no r d e rt o s u p p o r tt h ec 样p ef i l e t h el o a d e ru s e sl i n kt a b l ef os t o r a g et h e a d d r e s so f t h ei lo rn a t i v ec o d e so f t h ec a l l e dm e t l l o d s t h i sp a p e ra n a l y s et h em e t a d a t ao ft h ec a ra n dc # d e f i n e sac o m p o n e n t i n t e r a c t i v ed e s c r i p t i o nl a n g u a g e ( c i d l ) ,i m p l e m e n t saa u t o m a t i ct o o l st oc r e a t e r c i d lf i l e s ,d e f i n e s m a p p i n gr e l a t i o nb e t w e e nt h eb a s i cd a t at y p e ss u p p o r t e db yc a r a n dc 拌i m p l e m e n tt h ec o o p e r a t i o nb e t w e e nt h ec a r c o m p o n e n ta n dc # c o m p o n e n t b ys o c k e tc o m m u n i c a t i o nt e c h n i q u e k e y w o r d sp el o a d e r ;c i d l ;c o o p e r a t i o nb e t w e e nh e t e r o g e n e o u sc o m p o n e n t s i i i 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其它 人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 已在论文中作了明确的说明并表示了谢意。 签名:壶盈堕蜀f 1 期:塑亟区! 兰 关于论文使用授权的说明 本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部 分内容,可以采用影印、缩印或其它复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 签名:乏鹭i 鲰导师签名:甚j l 缉 日期:逸a : 2 第1 章绪论 1 1 课题的目的和意义 第1 章绪论 本课题的目的主要是试图探索这样一种方法:通过在l i n u x 上提供一个特定 的构件运行环境,研究实现一套成熟的不同种类的构件之间的互操作机制,使得 网络环境下的各种构件能够以二进制形式直接运行于l i n u x 操作系统之上,向应 用程序提供更好的服务。 当前,构件技术在迅速发展中遇到了一些问题: l 、由于历史和市场的原因,当前微软的d o t n e t 构件、c o m 构件、j 2 e e 的 e j b 、e l a s t o s 的c a r i i - 2 构件等不同种类的构件同时存在,而且这种情况势必长 期存在。 2 、很多比较大的应用程序可能需要多种异构构件协作运行。 3 、构件的运行需要“构件运行平台”,而一般来说构件运行平台的实现都是 基于特定的操作系统的。例如:m i c r o s o f tc o m _ 【3 构件技术的运行环境主要内建 于m i c r o s o f tg r m d o w s 系列操作系统;0 m gc o r b a 、s u nj 2 e e 中的构件技术主 要依赖的运行平台是已在各种操作系统中被广泛实现的j a v a 虚拟机;m i c r o s o f t d o t n e t 提供的构件运行环境是d o t n e t 虚拟机。 所以,迫切需要在一个特定的构件运行平台上,实现多种网络构件的互操作。 目前在l i n u x 系统上,还没有被普遍采用的构件规范,绝大部分的l i n u x 应 用程序仍然采用传统的基于动态链接库的架构。而且,当前在l i n u x 上实现的构 件方案都不能够满足网络服务、按需下载的需要。 本课题选择了l i n u x 操作系统作为多种构件的运行平台,选择了e l a s t o s 的 c a r 构件和m i c r o s o f t 的d o t n e t 构件作为构件互操作研究对象。在l i n u x 上实现 了c a r 构件与d o t n e t 构件的互操作运行平台 本课题选择了c # 语言编写的构件作为d o t _ n e t 构件的代表,因为c 样是一种 现代的面向对象的程序开发语言,是专门为d o t n e t 应用开发出来的语言,是 d o t n e t 的典型代表。 1 2 构件技术与s o c k e t 通信原理 1 2 1o a r 技术 c a r ( c o m p o n e n t a s s e m b l yr u n t i m e ) 是面向构件编程的编程模型它规定 北京工业大学工学硕士学位论文 了一组构件伺相互调用的标准,使得二进制构件能够自描述,能够在运行时动态 链接。c a r 兼容微软的c o m 标准,但和c o m 相比,它删除了c o m 中过时的 约定;完备了构件及其接口的自描述功能( 即元数据) ,实现了对c o m 的扩展; 对c o m 的用户界面进行了简化包装,易学易用1 1 3 1 c a r 技术是在总结面向对象编程、面向构件编程技术的发展历史和经验之 上,为更好地支持面向以w e b 服务为代表的下一代网络应用软件开发而发明的。 c a r 很大程度地借鉴了c o m 技术,保持了和c o m 的兼容性,同时对c o m 进 行了重要的扩展。 为了在资源有限的嵌入式系统中实现面向中间件编程技术,同时又能得到 c 坨+ + 的运行效率。c a r 没有使用j a v a 和d o t n e t 的基于中间代码一虚拟机的机 制,而是采用了用c + + 编程,用“和欣”s d k 提供的工具直接生成运行于“和 欣”构件运行平台的二进制代码的机制。用c 卜+ 编程实现构件技术,使得更多的 程序员能够充分运用自己熟悉的编程语言知识和开发经验很容易掌握面向构 件、中间件编程技术。 c a r 的重要特点是构件的相互操作性:软件升级的独立性;编程语言的独 立性;进程运行透明度。在实际的编程应用中,c a r 技术可以使程序员得到以 下几方面的受益; l 、易学易用 基于c o m 的构件化编程技术是大型软件工程化开发的重要手段。微软 w i n d o w s2 0 0 0 的软件全部是用c o m 实现的。但是微软c o m 的繁琐的构件描述 体系令人望而生畏。c a r 的开发环境和欣s d k 提供了结构简洁的构件描述语言 和自动生成辅助工具等,使得c + + 程序员可以很快地掌握c a r 编程技术。 2 、可以动态的加载构件 在网络时代,软件构件就相当于零件,零件可以随时装配。c a r 技术实现 了构件动态加载,使用户可以随时从网络上得到最新功能的构件 1 2 2d o t n e t 技术 2 0 0 0 年6 月2 2 日,m i c r o s o f t 宣布了d o t n e t 战略,并宣称“其意义不亚于 从d o s 到w i n d o w s 的转变过程”【1 4 j 。d o t n e t 战略是含义广泛的运算设想,将改 变在i n t e m e t 上存储和传送信息的模式、各运算单元相互连接的方式、对软件应 用的思路、甚至改变与计算机进行交流的方式。 d o t n e t 战略是一场技术革命。对最终用户来说非常重要,因为计算机的功 能将得到大幅度的提升,同时计算机操作也变得非常简单,将完全摆脱人为的硬 件约束用户可以通过i n t e r n e t 自由访问、自由查看、自由使用自己自馓据,而 不是约束在单机环境中。d o t n e t 对开发人员也相当重要,因为它不但会改变开 第1 章绪论 发人员开发应用程序的方式,而且使开发人员能够创造出全新的各种应用软件, 大幅度提高软件生产率。 d o t n e t 作为一个开发平台,它定义了一种公用语言子集c l s ( c o m m o nl a n g u a g e s u b s e t ) 。它的主要组成部分是:公共语言运行库和d o t n e t 框架类库。 i 、公共语言运行库 使用针对运行库的语言编译器开发的代码称为托管代码。若要使运行库能够 向托管代码提供服务,语言编译器必须发出对代码中的类型、成员和引用进行描 述的元数据。元数据与代码一起存储;每个可加载的公共语言运行库可移植可执 行p e 文件都包含元数据。公共语言运行库使用元数据查找和加载类、在内存中 对实例进行布局、解析方法调用、生成本机代码、强制安全性以及设置运行时上 下文边界。 运行库自动处理对象布局和管理对对象的引用,当不再使用对象时释放它 们。其生存期以这种方式来管理的对象称为托管数据。自动内存管理消除了内存 泄露以及其它一些常见的编程错误。 公共语言运行库使设计跨语言交互的组件和应用程序变得容易。用不同语言编写的对象 可以互相通信。并且它们的行为可以紧密集成。这种跨语言集成成为可能是因为针对运行 库的语言编译器和工具使用由运行库定义的通用类型系统,而且它们遵循运行库关于定义新 类型以及创建、使用、保持和绑定到类型的规则 2 、d o t n e t 框架类库 d o t n e t 框架类库包括类、接口和值类型,它们可加速和优化开发过程并提 供对系统功能的访问。为推动语言间的互操作性,d o t n e t 框架类库必须符合通 用语言规范c l s ,并由此可在任何编译器符合公共语言规范c l s 的编程语言中 使用3 6 l 口7 】 d o t n e t 框架提供一组丰富的接口以及抽象类和具体( 非抽象) 类。可以按 原样使用这些具体的类,或者在多数情况下从这些类派生自己的类。若要使用接 口的功能,既可以创建实现接口的类,也可以从某个实现接口的d o t n e t 框架类 中派生判3 8 】口9 】。 1 2 3s o c k e t 通信原理 s o c k e t 接口是t c p 印网络的a p i ,s o c k e t 接口定义了许多函数或例程,利 用这些函数或者例程开发t c p i p 网络上的应用程序。s o c k e t 同时支持数据流 s o c k e t 和数据报s o c k e t p 6 】。一般无连接服务器都是面向事务处理的,一个请求一 个应答就完成了客户程序与服务器程序之间的相互作用。面向连接服务器处理的 请求往往比较复杂,不是一来一去的请求应答所能解决的,而往往是并发服务器。 其工作流程如图1 1 所示。 北京工业大学工学顼士掌位论文 由图l l 可以看出,s o c k e t 通信工作过程是: 服务器端: l 、启动调用s o c k e t 4 ) 建立一个套接口: 2 、调用b i n d ( ) 将套接口与本地网络地址绑定; 3 、调用l i s t e n ( ) 来侦听客户的连接请求: 4 、调用a c c e p t o 接受连接请求。 客户端: l 、启动调用s o c k c t o 建立一个套接口; 2 、调用c o n n 鲥o 和服务器建立连接; 当客户端接收至朔臣务器的确认连接后,双方就开始使用s e n d o r e c v o 来发送 和接收数据。最后当数据传送结束后,双方调用e l o s e o 关闭s o c k e t 。 在具体的实现中,s o c k e t 通信分为三个步骤: i 、客户端连接请求:客户端向服务端提出连接请求,连接目标是服务端的 s o c k e t 。为此,客户端首先对服务器的s o c k e t 地址和端口号进行探测,如果找到 指定的服务器,便向服务器提出连接请求。如果此时,服务器s o c k e t 正处于就 绪状态,就会立即向客户端s o c k e t 发出“允许连接”的答复。这样,服务端s o c k e t 和客户端s o c k e t 的连接就建立了。 2 、服务器监听连接:当服务器端监听到客户端s o c k e t 的连接请求时,就会 响应客户端s o c k e t 的请求,从而建立一个新的s o c k e t 句柄与客户端连接而服 务器端的s o c k e t 继续处于监听状态,准备接受其它客户端的连接请求。 3 、服务器端连接:当服务器端s o c k e t 接收到客户端s o c k e t 的连接请求后, 若它已经处于就绪状态,就会把服务器端s o c k e t 的描述信息发送给客户端,一 旦客户端收到服务器端的确认信息,连接就建立了 第l 章绪论 服务端 客户潴 圈1 - 1s o c k e t 工作;砸 r i g e1 - 1t h e w o f 虹培p r o c e s so f s o c l 咄 1 3 构件跨平台技术的研究与现状 软件系统的复杂性不断增长,为了能缩短软件产品的开发周期,提高软件产 品质量,产生了集软件复用、分布式对象计算、企业级应用开发等技术为一体的 基于构件的软件开发( c b s d ,c o m p o n e n tb a s e ds o f t w a r ed e v e l o p m e n t ) 。构件实际 是些小的二进制可执行程序,它们可以给应用程序、操作系统以及其它构件提供 服务。开发出来的构件可以被连接起来形成应用程序或构件系统,并且构件可以 在运行时刻、在不重新链接或编译应用程序的情况下被卸载或替换。构件跨平台 北京工业大学工学硕士学位论文 技术也是如火如茶,许多公司都推出了不同的构件标准,支持不同的系统平台之 间的构件互操作。 目前主流的构件技术包括:微软d o t n e t 4 1 构件、c o m t 5 1 构件、j 2 e e 的e j b t 6 1 、 e l a s t o s 的c a r 构件等。尽管构件技术已经在w m d o w s 上得到了广泛的应用,但 在l i n u x u n i x 系统上,并没有制定相应的构件规范标准。 平台无关性是构件技术的一个目标。一个开发好的构件,理想情况下,应该 可以在任意操作系统,软件平台上独立部署。正常运行。在此领域,著名的构件 标准是由o m o 组织研发的c o r b a i t i 。c o r b a 规范充分利用了现今各种技术发 展的最新成果,在分布环境下实现应用的集成,使得基于对象的软件成员在分布 异构环境中实现可重用、可移植和可互操作。 c o r b a s - j 0 ) 规范主要分为5 个层次:对象请求代理o r b 、对象服务、公共 设施、应用对象和领域接口。c o r b a 标准的核心部分一对象请求代理o r b , 它规定了分布对象的接口定义语言i d l ,i d l 到c + + 、c 和s m a l l t a l k 语言的语 言映射,实现对象间的通信和互操作,是分布对象系统中的“软总线”。o r b 也 可看作是在对象之间建立客户服务关系的一种中间件。基于o r b ,客户可以透 明的调用服务对象提供的方法,该服务对象可以与客户运行在同一台机器上,也 可以运行在其它机器上通过网络与客户迸行交互o r b 截取客户发送的请求。 并负责在该软件总线上找到实现该请求的服务对象,然后完成参数、方法调用, 并返回最终结果;在o r b 之下定义了很多对象服务,为实现和使用对象而提供 的基本服务集合;最上层的是公共设施、应用对象和领域接口,公共设施是提供 给不同应用的共享服务集合,应用对象是相应于传统的应用表示,领域接口是为 应用领域服务而提供的接口 3 2 1 【蚓1 4 s ) 。 1 4 互操作技术的研究与现状 构件互操作是指:两个或者两个以上的构件,尽管它们的构件实现语言、运 行环境不同,但是它们仍然可以协同工作,相互调用。完成更加复杂的功能u ”。 在开放w w w 系统中,不可能再使用传统的集中管理的固化接口的方式,因为这 种方法根本无法适应其灵活多变的要求。进而希望能提供一种方式,在这种方式 下w e b 服务对客户必须是透明的,即使得客户在要求服务时,能够不必知道所 用的服务是由谁、以及用什么方式提供,而提供服务的软件或构件可以用不同语 言实现,运行在不同的机器、平台上。对软件构件来说,人们考虑更多的处理互 操作性的方案是采用类似于工业生产中的插头与插口的接口技术,还有人们现在 广泛提到的软件代理( s o f t w a r ea g e n t ) 等技术。 目前有两种处理软件构件互操作性要求的构件接口技术:一种称为标准化接 口;另一种称为桥接口。前者要求客户构件与服务构件的接口变换成共同的标准 第1 章绪论 形式,即有一种大家都认可的统一的软件接口。但是这是一种封闭的机制,灵活 性差一些。如果产生新的构件要求,已经制定的标准无法适应新需要,而且在整 个应用领域推行一个统一的标准当前看来还不成熟,也没有相应的技术标准可以 为大家所接受。桥接口是在不同的软件构件之间加入一种交互接口,以实现异构 构件的互操作。用桥接口来处理n 个构件间协同工作所需的交互,则需要n ( n 1 ) 种映射。其优势在于,这是一种开放式的机制,应用起来极为灵活,如果要加入 任意一种新的构件来与原来n 种构件交互,只要再增加2 n 种映射即可;但是实 现其工作量太大,而且效率显然不是很高。 c o r b a 2 0 规范及其后版本中都指定了c o m ,c o r b a 互操作规范,在 c o r b a 对象和c o m 之间定义了一种桥接机制【1 2 1 ,以实现二者之间的互操作。 其目的在于制定统一的c o m 和c o r b a 对象之间的通信机制,用于保证基于规 范开发的互操作产品之问的互操作性和用户应用程序的可移植性 3 5 1 。 c o m c o r b a 的互操作模型如图l - 2 所示: 对象系统a对象系统b 、 ,a 中的对、 象引用 桥 i t b 中对象在l b 中的对b 中的对 象引用 象实现 a 中的视图 图1 2c o m c o r b a 互操作模型 f i g u r ei - 2t h e m o d do f t h e c o o p e t 缸o a b e t w e e nc o m a n dc o r b a 这种桥接机制,从概念上讲,桥拥有目标对象的引用,并且为系统a 中的 客户提供视图对象。对象系统a 通过某种方式得到目标对象的引用后,向目标 对象提出请求:对象系统a 所在的o r b 通过“b 在a 中的视图”,将请求转换 成目标对象b 所在的o r b 可以识别的形式,将a 的请求传递给对象b 所在的 o r b ;对象b 所在的o r b 根据单一o r b 的工作原理,让对象b 处理a 的请求; 最后,请求处理结果返回。 c o r b a 的技术具有模型完整性和先进性,它独立于系统平台和开发语言。 已逐渐成为分布计算技术的标准。 1 5 课题的来源与主要研究内容 本文所涉及的工作是项目“基于l i n u x 的构件互操作运行平台”的一部分, 北京工业大学工学硕士学位论文 本论文的主要研究内容是:在l i n u xo s 系统中,实现一个c a r 构件与d o t n e ( 构件互操作的平台。 本人的主要研究内容包括以下几个方面: l 、在l i n u x 地址空间中加载p e 格式文件 ( 1 ) 、比较p e 文件格式与e l f 文件格式 ( 2 ) 、比较w i n d o w s 、e l a s t o s 与l i n u x 地址空间的分布状况 ( 3 ) 、设计并实现在l i n u x 中加载p e 文件的方式 2 、定义构件互操作描述语言 ( 1 ) 、分析c a r 构件与d o t n e t 构件的元数据信息 ( 2 ) 、定义一种统一的形式描述c a r 构件与d o t n e t 构件的元数据信息 3 、通过s o c k e t 机制,实现c a r 构件与d o t n e t 构件的互操作 1 6 论文的组织结构 本文的组织结构如下: 第一章介绍构件跨平台技术和互操作技术的研究与现状,以及本论文的主要 研究内容。 第二章主要介绍了基于l i n u x 的c a r 构件与d o t n e t 构件运行平台的整体结 构、基于l i n u x 的c a r 构件运行平台和d o t n e t 构件运行平台的框架结构,以及 平台实现的关键技术。 第三章着重介绍了p e 加载器的实现。包括:p e 文件和e l f 文件的比较、 p e 加载器的设计原理、p e 加载器的实现机制、p e 加载器中模块的管理,以及 为了支持c # 可执行程序的加载,进而对p e 加载器所进行的功能性扩展。 第四章介绍了构件互操作描述语言c i d l 。这一章主要是为第六章互操作机 制做铺垫。这一章描述了构件互操作语言c i d l 的定义,分别介绍了c a r 构件 和d o t n e t 构件的c i d l 描述文件的生成过程。 第五章着重介绍c a r 构件与d o t n e ( 构件的互操作的实现。包括:互操作的 设计原理、互操作实现技术的细节和应用实例。 最后,对工作进行了总结 第2 章基于l i r u x 构件互操作运行平台的设计 由于很多企业和组织,它们需要使用最好的技术处理手头的工作。但是,它 们往往习惯于使用一种特定的运行环境。所以,如果它们需要实现第三方解决方 案或者利用只有某种构件技术( 如d o t n e t ) 才能提供的功能时,构件互操作性 就提供了一种有效的机制,用于确保两个环境的共同工作,既提高了效率,又降 低了成本。如图2 ,1 说明了e l a s t o s 客户端如何与d o t n e t 服务端之间进行互操作。 图2 - 1e b g t o g 客户嫱调用d o t n e t 构件 v i g u r e2 - 1f 蚁o s a p p l i c a t i o nc a l l d o t n e tc o t i l p 删 该课题实现了l i n u x 上的c a r 构件和d o t n e t 构件的运行平台,同时根据图, 2 1 所示,实现了c a r 构件与d o t n e t 构件的互操作平台。 本章主要介绍了基于l i n u x 的c a r 构件与d o t n e t 构件互操作运行平台的整 体结构。 2 1 基于l i n u x 的构件互操作运行平台系统结构 基于l i n u x 的c a r 构件与d o t n e t 构件互操作运行平台的整体结构如图2 2 所示。该图中的构件互操作平台,仅仅是一个图示,并不能够真正描述构件互操 作平台的实现过程,图2 1 和图5 1 真正体现了构件互操作平台的实现机制 北京工业大学工学硕士学位论交 曼目鼍皇曼鼍| 詈笪皇量量詈一it 量皇宙曼曼置皇皇 圈2 2c a r 构件与d o t n e t 构件互操作运行平台结构圈 l i g u r e2 - 2t h e f r a m e o f u l ec o l o r o n 门i 曲gp m f b | mb c c w 嘲c a ra n dd o b n e t 此平台分为四个层次: 第一层次是构件运行平台部分这一部分实现了c a r 构件和d o t n e t 构件在 l i n u x 上的运行。其中:红色区域内是c a r 构件在l i n u x 上的运行平台,绿色区 域内是d o t n e t 构件在l i n u x 上的运行平台。在这一章的后两节将会详细介绍这 两个运行平台。 第二层次是构件部分包括c a r 构件和d o t n e t 构件。 第三层次是构件间的互操作平台。构件问互操作平台是根据图2 i 来实现的。 该平台由客户端p r o x y 自动化生成工具、c i d l 描述文件库、客户端p r o x y 和服 务器s t u b 组成。客户端p r o x y 自动化生成工具根据c i d l 描述文件库中的文件, 自动产生客户端p r o x y ;客户端p r o x y 截取客户请求,通过s o c k e t 通信,将该请 求发送给服务器端s t u b ;服务器端s t u b 将客户请求传给服务端处理。将结果返 回至此,构件间互操作结束。这一部分将在第五章、第六章详细介绍。 第四层次是应用程序部分其中,对于一般的应用程序( 即调用c a r 构件 第2 章基于l i n u x 构件互操作运行平台的设计 的应用程序、调用d o t n e t 构件的应用程序) ,直接调用相应的构件,在构件运行 平台上执行。对于需要互操作的应用程序来说,它们的请求由构件互操作运行平 台传送给服务端构件执行。 2 2 基于l i n u x 的c a r 构件运行平台系统结构 基于l i n u x 的c a r 构件运行平台的目标是让采用c a r 构件技术的e l a s t o s 2 0 应用程序可以在l i n u x 操作系统上运行。为了实现上述目标,此平台分为三部分: 第一部分是e l a s t o s 2 0 应用程序以及c a r 构件部分。这一部分是e l a s t o s 2 0 应用程序以二进制形式运行在l i n u x 上的部分。 第二部分是p el o a d e r 和e l a s t o s s o 部分。p el o a d e r 实现了e l a s t o s 2 0 应用 程序在l i n u x 上的加载,e l a s t o s s o 实现了e l a s t o s 2 0 应用程序在l i n u x 上的系统 调用。 第三部分是s e r v e r 部分这部分实现了对e l a s t o s 2 0 内核的支持,使得 e l a s t o s 2 0 应用程序可以在l i n u x 上获得e l a s t o s 2 0 内核提供的服务。如:c a r 构件的跨进程调用,创建新的进程等等。 基于l i n u x 的c a r 构件运行平台框架图如图2 - 3 所示: 图2 - 3 基于l m u x 的c a r 运行平台框来 f i g u r e2 - 3t l a ef r 锄a e0 f t h ec a r 埘曲gp l a t f o r m0 1 1 1t h e l a m 厦 2 3 基于l i n u x 的c a r 构件运行平台实现思路 基于l i n u x 的c a r 构件运行平台的实现思想是 4 6 1 : 1 、s e v e r :此平台的内核模块称为s e r v e r ,它是一个l i n u x 内核模块,因此 处于l i n u x 内核空间,并可以为整个平台提供内核服务,如:进程间通信等 2 、p el o a d e r :由于l i n u xo s 上,可执行程序的格式是e l f 格式,而e l a s t o s 的可执行程序是p e 格式的。所以l i n u x 不能够加载e l a s t o s 的可执行程序1 2 刀。p e l o a d e r 是我们在l i n u x 平台上编写的一个加载e l a s t o s 2 0 可执行程序的应用程序。 在此平台上,每个l i n u x 进程的启动会有一个p el o a d e r ,该p el o a d e r 会将指 北京工业大学工学硕士学位论文 定的e l a s t o s 2 0 的p e 可执行文件,以及与它相关的模块( 如:e i a s t o s s o 、e l a c r t d 1 1 ) 全部加载到该进程自身的地址空间中。 3 、e l a s t o s s o :e l a s t o s 2 0 的应用程序与c a r 构件在执行的过程中,会调用 e l a s t o s 2 0 的系统调用模块e l a s t o s d u 。e l a s t o s s o 旨在l i n u x 上实现与e l a s t o s 叫 功能相同的一个系统调用模块,e l a s t o s s o 综合s e r v e r 和l i n u x 的系统调用,实 现了与e l a s t o s d l l 同名的a p i 。这样,在此平台上,如果e l a s t o s 2 ,0 的应用程序 或者c a r 构件需要调用e l a s t o s a l l 中的函数时,就将它转接到e l a s t o s s o 的同名 函数中。 4 、c a rc o m p o n e t :c a rc o m p o n e n t 是e l a s t o s 2 。0 的应用程序在运行时可能 要调用的d i l 模块。c a rc o m p o n e n t 的运行最终是由e l a s t o s 2 0 的系统调用 e l a s t o s d l l 来支持的。由于在该平台上,e l a s t o s s o 实现了e i a s t o s d l l 的a p i 。所 以c a rc o m p o n e n t 也可以不加修改的在该平台上运行,即c a rc o m p o n e t 不需 要以s o 共享库的形式存在,而是p el o a d e r 直接将其加载后,调用共享库 e l a s t o s s o 就可以运行了。 上述介绍了基于l i n u x 的c a r 构件运行平台框架的实现思路,也是实现此 平台的关键技术,本文后面的章节中将会详细介绍p el o a d e r 的实现过程。 2 4 基于l i n u x 的d o t n e t 构件运行平台系统结构 基于l i n u x 的d o t n e t 构件运行平台的目标是例可执行文件和c 捍编写的 d o t n e t 构件可以在l i n u x 操作系统上运行。为了实现该目标,此平台由以下三部 分组成: 第一部分是c 捍应用程序和c 群编写的d o t n e t 构件。这一部分是c 群程序在 l i n u x 上的运行部分,也是基于l i n u x 的d o t n e t 构件运行平台的目标。 第二部分是p el o a d e r 部分。这一部分实现了c # 应用程序在l i n u x 上的加载。 是c 应用程序在l i n u x 上运行的前提。 第三部分是d o t n e t 类库部分。这一部分是c # 应用程序和c 群编写的d o t n e t 构件调用的d o t n e t 类库在l i n u x 上的实现部分。 第四部分是j i t 编译器部分。这一部分实现了例扩展后的p e 文件中,i l 向 机器代码的转换。 基于l i n u x 的d o t n e t 构件运行平台框架图如图2 4 所示: 第2 章基于l i n u x 构件互操作运行平台的设计 c 硼程序 c # 编写的d o t n e t 构件 客、豳编; l i n u x 0 s 圈2 4 基于幽如【的d o t n e t 构件运行平台框架 f i g u r e2 - 4t h e f r a m e0 f t h e d 0 f l , l e t r u m 蛐g p h t f o r mo a t h e i m u x 2 5 基于l i n u x 的d o t n e t 构件运行平台实现思路 基于l i n u x 的d o t n e t 构件运行平台的实现思想是: l 、p el o a d e r :p el o a d e r 是基于l i n u x 的c a r 构件运行平台中p el o a d e r 的扩展,由于例可执行程序仅仅是传统p e 文件的扩展,因此加载钟可执行程 序的加载器也仅仅是在前面的p el o a d e r 上扩展了一些功能。具体实现在下章中 会有详细的介绍。 2 、d o t n e t 类库。d o t n e t 类库为d o t , n e t 开发人员提供了一致的编程模型, d o t _ n e t 应用程序和用户定义的构件都需要调用d o t n e t 类库的接口实现相应的系 统功能。在基于l i n u x 的d o t n e t 运行平

温馨提示

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

评论

0/150

提交评论