已阅读5页,还剩62页未读, 继续免费阅读
(计算机科学与技术专业论文)基于net框架cobol+2002集成开发环境的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 基于n e t 框架和c o b o l2 0 0 2 语言标准,设计并实现了c o b o l2 0 0 2 集成 开发环境( i d e ) 。研究了n e t 的内存管理,编译模型,v s i p 等相关的基本理 论知识,提出了基于n e t 框架的c o b o l2 0 0 2 集成开发环境体系结构,论述了 该系统的主要组成部分,重点阐述了编辑器模块,调试器模块的设计和实现。 主要工作和研究成果如下: 1 ) 在研究n e t 集成开发环境v s i p 的基础上,首先,提出了c o b o l2 0 0 2 集成开发环境的框架,该框架所描述的开发环境一方面具有与n e t 集成 开发环境一致的用户界面,另一方面在工程类型,编辑器和调试器等模 块体现了c o b o l 2 0 0 2 语言特点;其次,提出了管理c o b o l 2 0 0 2 工程的 层级模型,该模型保留了n e t 工程文件管理和维护的实现方案,但简化 了管理和维护的具体操作。 2 1 设计和实现了c o b o l2 0 0 2 集成开发环境编辑器模块。在对工程文件管 理需求分析的基础上,设计了针对c o b o l2 0 0 2 工程文件的运行文档列 表,该列表中的字段能满足集成开发环境对当前打开着的c o b o l2 0 0 2 文档的管理需求;此外,在n e t 一维结构文本缓存的基础上,提出了二 维结构的文本缓存,该结构的文本缓存能够提高文档窗口的处理性能, 实现复杂的c o b o l 2 0 0 2 源程序的层次格式。 3 ) 设计和实现了c o b o l2 0 0 2 集成开发环境调试器模块。提出了调试信息 的中间存储模型和保存格式c d i 文件。该中间存储模型通过n e t 提 供的p d b 文件编程接口可以将c d i 文件的调试信息转化为n e t 调试器 组件支持的程序数据库( p d b ) 文件,从而使性能优良的n e t 调试器组 件能够支持c 0 8 0 l2 0 0 2 程序的调试过程,避免了重新定义调试器组件, 简化了集成开发环境中调试器模块的实现。 上述技术成果已在一个国际合作项目中得到成功的应用。基于n e t 框架的 c o b o l2 0 0 2 集成开发环境将在微软公司授权后,作为下一代n e t 产品向市场 推广。 关键词:n e t 框架,c o b o l ,集成开发环境,编辑器,调试器 a b s t r a c t c o b o l2 0 0 2i n t e g r a t e dd e v e l o p m e n te n v i r o n i n e n t ( i d e ) i sd e s i 印e da i l d i m p l e m e n t e d b a s e d n e t 觚n e w o r ka n dc o b o l 2 0 0 2s t a n d a r d t h cm 伽o r y m 锄g e i n 蜘t ,c o i n p i l cm o d e la i l dv s i po f n e t 撕r c s e a r c h e d b 勰e do nm er e s e 眦h r e s u i t ,t 1 1 ea r c h i t e c t u r eo fc o b o l2 0 0 2i si s s u e da f l dt h em a i nc 0 i n p o n c mo f 恤 s y s t e mi si n 们d u c e d 1 1 1 ee d i t o rm o d l d e 趴dd e b u g g e rm o 叫eo f i d e 撇d i s s e r t e d i nt l l et l l e s i s a l lt h ew o r ka n dr e a r c hr e s l l l tc 觚b e 翻n m a r i 为e da sf o u o w s : 1 )b ym er e 训to f r e s e 郴l l i n gv s 琅也ea r c l l i t e c _ t 啪o f c o b o l2 0 0 2f o r n e t 丘御n e w o 出i si s s u e d o no n es i d c ,t h ei d ew l l i c hd e s c r i b e db yt l l e a r c l l i t e c t l l r eh a st l l es a m el l s e ri m e r f a c ew i mm e n e t 【d e o nt h eo t l l c r s i d c ,m e c o b o l2 0 0 2p r o p 哪i sc o n 协妇d i n t l l ep r o j e c t t y p e ,c d i t o ra n d d c b u g g e r 咖ha d d i t i 吗m eh i e r a r c h ym a n a g e m e n tm o d i ef o rc o b o l 2 0 0 2p r o j e c tm a i l a g e m c n ti si s s u c d ht l l em o d e l ,也er e s o l u t i o f 1 e n e t p r o j o c t 黝n a g e m e n t 粕dm a i l l t e l 】a 1 1 c ei sf c m a i :n e db u tt h ei m p l 朗n i ;n t a t i o ni s s i m p l 箍e d 2 ) d e s i 鲈a n di m p l e m e r 他t 量l ee d 的rm o d i l l ef o r t h ei d e a i l a l y z e dt l l e 舱q u i r e m e mo ft l l ep r o j e c t f i l em 锄a g e m e m ,t h es 劬j c t l i o fn l 彻j i l g d o c 啪e n t 协b l e ( r d di sd e s i 粤同f o rc o b o l 2 0 0 2p r o j e c tf i l e s ,1 1 1 ef i e l d s i i lm et a b i es i l i tm er e q u i r e m e n to f l 啪a g ec o b o l2 0 0 2d o c 岫髓t b e s i d e s , ak m do f2 d i l n e n s i o nt e ) 【tb u 丘宅fi si s s u e db a s e do n1 d i m 曲s i o nf b r 仕圮 c a p a b i l 酊i m p r o v e m e i l t “d o c u m e m 讹d o wa 1 1 dm e 矧c tf o 】咖i a t o f c o b o l u r c e 3 ) d e s i 驴锄di m p l e m e n t e 恤ed e b u g g c rm o d i l l ef o rm ei d e am i 删es t o f a g e m o d e l 锄dak 砌o ff i l cf o 姗a t - c d if i l eo fd e b u gi n f b n n a t i o na r ci s s u e d t km o d e lt r a l l s 觚吐l cd e b u gi n f o m a t i 证c d if i l e si n 屯op d bf i l e b y n e tp r o 伊锄i n t e 而c e a sar e s u 地t h cc o m p o n e i l 协o f d e b u g g e rw m c h a r es u p p l i e db y n e ti d ec 姐b e 璐e df o rc 0 b o l2 0 0 2p f o j e c ta n dw o r k 、) l ,e 1 1 b yt 1 1 i s ,t l l ep r o c e d u r eo fr e d e 舶ed e b u g g e rc o m p o n e n t sc mb c a v o i d e d 锄dt l l ei l p l e m c n 拓出o no f d e b u g g e ri nt l l ei d ec a nb cs i l p l i f i e d t h et e c h l l i q u i n v o l v e di nt l l i st i l e s i sh a v eb e c ns u c c e s s m l l ya 印l i e di n 锄 i i l t 啪a t i o n a lp r o j e c t a 盼g e tm e 岬“f 0 姗m s ,c o b o l2 0 0 2i d ef o r n e t f e w o f k 、】v i nb ep r o m o t e di m op u b l i ci n a r k e t k e y w o r d s :n e tf r a m e w o r l ,c o b o l ,i d e ,e d “o r d e b u g g e r i i l 西北工业大学业 学位论文知识产权声明书 本人完全了解学校有关保护知识产权的规定,即:研究生在校攻读学位期间论文工作 的知识产权单位属于西北工业大学。学校有权保留并向国家有关部门或机构送交论文的复 印件和电子版。本人允许论文被查阅和借阅。学校可以将本学位论文的全部或部分内容编 入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 同时本人保证,毕业后结合学位论文研究课题再撰写的文章一律注明作者单位为西北工业 大学。 保密论文待解密后适用本声明。 学位论文作者签名: i l 型竭! a 口司年j 月j 日 指导教师签名 2 口习年月7 日 西北工业大学 学位论文原创性声明 秉承学校严谨的学风和优良的科学道德,本人郑重声明:所呈交的学位论文,是本 人在导师的指导下进行研究工作所取得的成果。尽我所知,除文中已经注明引用的内容 和致谢的地方外,本论文不包含任何其他个人或集体已经公开发表或撰写过的研究成 果,不包含本人或其他已申请学位或其他用途使用过的成果。对本文的研究做出重要贡 献的个人和集体,均已在文中以明确方式表明。 本人学位论文与资料若有不实,愿意承担一切相关的法律责任。 学位论文作者签名! 避 硼f 年j 月1 日 西北工业大学硕士学位论文绪论 1 1 研究背景 第1 章绪论 c o b o l 是一种面向过程的高级程序设计语言,是目前国际上应用最为广泛 的一种编程语言。c o b o l 是c o l 咖nb l l s i n e s s o r i e n 矧l 锄g u a g e 的缩写,原意 为面向商业的通用语言,以一种接近于英语书面语言的形式描述数据特性和数据 处理的过程。自上世纪6 0 年代初,它就广泛地应用于计算机、经济、金融等领域, 主要应用在统计报表、财务会计、计划编制、作业调度、情报检索等方面。经过 近半个世纪的演变和发展,c o b o l 吸收了计算机科学技术的进步成果。与其他 语言不同的是,c o b o l 针对商业领域。如今,它依然是真正商用应用程序开发 的首选语言。 c o b o l 语言的特点是:面向文件。文件是事物数据处理的基础。c o b o l 将处理对象组织成文件,通过对数据层次结构的描述,说明文件之间的联系,实 现数据的检索和处理。文法接近自然英文语言。c o b o l 语言中大量采用了英 语词汇和句型;c 0 8 0 l 程序看起来就像一篇英文文章,语句通顺,条理清晰。 通用性强,标准化程度高,容易移植。c o b o l 程序中的数据、运行环境、处 理过程等都是单独描述的,只要对设备描述和记忆名定义做少量修改,即可将 c 0 b o l 程序移植到另一台机器上执行。功能模块化。c o b o l 对每一个功能 模块( 如通信,调试,报表) 的特性、语义及限制都作了严格规定。编译系统的 设计者可以根据需要选用全部或者部分模块【1 1 。 上世纪5 0 年代中期,电子计算机开始应用于商业和企业事务处理,这种处理 运算简单而数据繁多。在1 9 6 0 年公布了第一个c o b o l 文本,称为c o b o l 6 0 。 1 9 6 8 年,美国国家标准化协会公布了c o b o l 的第一个标准化文本一一 a n s i c o b o lx 3 2 3 1 9 6 8 ,简称c o b o l 6 8 。1 9 7 4 年美国国家标准化协会对 c o b o l 6 8 做了修改补充,公布了新文本a n s i c o b o lx 3 2 3 1 9 7 4 ,简称 c 0 8 0 l 7 4 。此后,又分别公布了c o b o l 8 5 ,c 0 b o l 2 0 0 2 两个标准化文本。现 在,c 0 b o l 2 0 0 2 标准还在不断地改进和完掣。 可以看到。c o b o l 语言随着计算机技术的进步一直发展着。在最新的 c o b o l 2 0 0 2 标准中,为了适应当前软件技术的发展潮流而增加了许多新的功能, 比如:面向对象思想,多国文字对应,地址指针,异常处理,条件编译,c 语言 嵌入操作等。面向对象思想作为c o b o l 2 0 0 2 的核心内容之一,在兼容c o b o l 8 5 所有处理机制的同时,支持类,对象,方法,继承,属性,多态,c o b o l 类库 等面向对象编程的元素。 西北工业大学硕士学位论文 绪论 作为一种元老级的高级编程语言,c o b o l 拥有庞大的用户群和代码。世界 上7 0 的数据都是用c o b o l 语言来处理的,9 0 的a 删事物处理都是采用 c o b o l 语言的;每天的在线数据处理次数超过3 0 0 亿次:世界5 0 0 强中有4 9 2 家( 包 括全部l o o 强) 都使用了c o b o l 语言;目前,在c o b o l 方面的投资已经超过了 3 0 ,0 0 0 亿美元。据统计,用c o b o l 书写的代码已超过l o o o 亿行,占商用软件的 7 0 以上,并且以平均每年5 0 亿行的速度增长【1 1 。可以说,历史赋予了c o b o l 特殊的使命,由于其在商业领域的雄厚基础,即使对于很有经验的i t 公司来说, 把已有的c 0 b o l 语言应用软件采用其他高级语言重新开发,也是不实际的或者 从商业角度来说也是不可行的。最主要的是,c o b o l 语言也有其他编程语言无 可比拟的自身优点,比如他对数据的格式有较强的控制等。 但是直到今天,c o b o l 语言开发环境的发展还是相当滞后。即便最成熟的 c o b o l 开发环境呻o 惯c o b o lv 3 ( 觚i t s u 公司的产品) ,虽然提供了g u i 界面,但整体功能比与v b ,v c 开发环境无法相提并论。这对熟悉了w i n d o w s 程 序的开发人员来说,在d 0 s 或者u n 的黑屏环境下去做调试,心情实在无法好 起来,也直接影响了工作效率。 1 2 国内外研究现状 自c 0 8 0 l 语言诞生以来,c o b o l 程序的开发环境随c o b o l 程序一起被定 位于主机系统。例如i b m 的大型机,中型机普遍配置了c o b o l 的编译程序。p c 机的发展,给主机系统的编程产生了很大的影响。目前,业界比较成熟的c 0 b o l 开发工具主要有以下几种: ( 1 ) i b m 的v i s u a l a g ec o b o l 产品,具有远程编辑、编译、调试能力,包括 工作站编辑器和调试器,编译器和运行时库,执行时分析器,开发图形 界面的可视化工具等等。 ( 2 ) a c u 公司的a c u c o b o l g t 是一个扩展c o b o l 、a n s i 标准兼容的开 发环境,整合了编译器、运行库、i s a m 文件系统、调试器等功能,应用 程序可获得完整的c l i e i l t s e e r 支持。 ( 3 ) f 画i t s u 的n e tc o b o l 。已开发出面向w i n d o w s 、l i n u x 和h pu x 等多种 操作系统的版本,并且包含有其他的开发套件,包括:编译器,运行库 和调试工具。 ( 4 ) f l ! j i t s u 的p o 州c o b o l 是一个面向w i n d o w s 的可视化面向对象的 c o b o l 开发环境,支持创建g u i 应用程序和a c t i v e x 控件的调用。 ( 5 ) l i a n t 公司的r m e n t e r p r i s ec o d e b e n c h ,是一个远程的开发环境,代表了 基于c s 架构的c o b o l 开发环境的主流,用户在w i i l d o w s 客户端就可 2 西北工业大学硕十学位论文绪论 以对u n i x 上的c o b o l 代码进行编辑、编译和调试。 ( 6 ) m i c r of o c u s 的m i c r of o c 懈n e te x p r e s s 诵t h n e t 除了支持创建新的应 用程序,也支持对已有商业逻辑,数据,编程资源进行整理,缩短开发 周期。 目前,国际上关于c o b o l 的研究主要集中于如何将c o b o l 程序进行转化 ( 如转化成x m l 、j a v a 或c 群程序) 和如何将c o b o l 程序与其他程序结合( 如将 c o b o l 与w e b ,m o b i l e 编程结合) 。关于c o b o l 集成开发环境的研究,依然停 滞在传统的c s 架构上。因此,开发出独立地依赖于p c 机的c o b o l 2 0 0 2 集成开 发环境,将具有广阔的研究和应用前景。 1 3 研究意义 c o b o l 应用程序在商业领域中所占的巨大比重以及从事c o b o l 软件开发 的庞大人员队伍,都使得c o b o l 语言在未来占有极其重要的地位。因此,为了 提高工作效率,减轻开发人员的负担,研究针对c 0 b o l 语言的集成开发环境是 很有现实意义的。起初,c o b o l 语言的应用程序都部署在u n 系统上,配置这 些u n 系统的大型机或者中型机都非常昂贵。若为程序的每一个开发人员配置 这样一套独立的u n 系统环境,将使软件的开发成本大幅度增加。因此,为了 降低开发成本,以前的c o b o l 开发环境都采用c s 架构开发人员通过位于本 地p c 机的客户端登录到远程u n 操作系统服务器上,将本地编辑好的开发程序 上传到共享的u n 服务器上进行调试,编译。但是,c s 架构的开发环境存在如 下缺点: ( 1 ) 用户授权控制复杂。在c s 架构上,多个用户在c l i e n t 端进行程序开发, 为了避免互相冲突,开发环境必须对用户进行授权控制。但是,程序开 发过程中又不可避免的要进行交互,比如,程序a 中引用了动态链接库 b ,当b 被重新编译后,a 必须重新引用b 才能访问到最新版本的b 。 这时,b 的开发人员必须申请修改a 的引用授权,如果这时a 的授权 已经分配给了另一位开发人员,这项工作就无法继续进行了。 ( 2 ) 网络通信负荷问题。在c s 架构的开发环境中,所有c l i e n t 端的代码必 须经过网络上传到s e n r e r 上,才能编译和调试。这种情况下,客户端关 于代码的一个微小修改( 比如:修改了一个字符) ,会引起从c l i e n t 向 s e r v c r 的一次全部代码的重传过程。虽然,在代码的保存处理上可以实 现差分重传,但这样又会增加服务器的负荷。总之,这种负荷问题反映 到c l i e n t 就是开发人员点击保存按钮后,必须等几秒钟后才能进行下一 步的工作。 3 西北工业大学硕士学位论文 ( 3 ) 单点故障。在c s 架构中,服务器是整个开发系统的瓶颈,如果服务器 出现问题,会引起整个系统发生故障,所有开发人员的工作必须中断, 直到故障恢复。 随着计算机硬件技术的发展,在u n 系统上开发c o b o l 程序已不再完全是 一种必要,f u i i t s u 公司正在做只依赖于p c 的c o b o l 开发环境的尝试;另一方面, 随着网络技术的发展,特别是微软提出n e t 框架以后,如何采用c o b o l 语言编 写网络服务( w e bs e 九r i c e s ) 应用程序也向传统c s 架构的c o b o l 开发环境提出 了新的挑战。 本课题在对n e t 框架研究的基础上,利用n e t 集成开发环境的v s i p 技术实 现了基于c o b o l2 0 0 2 集成开发环境。该开发环境摈弃了传统的c s 架构,仅依 赖于独立的p c 机,节省了配置大型机和u n 操作系统的开支,缩减了软件开发 成本,为众多中小企业开发c 0 b o l 应用程序提供了可能。同时,该开发环境提 供了与n e t 一致的用户图形界面,使熟悉n e t 应用程序开发人员可以轻松,熟 练地完成开发工作。 同时,本课题所研究的集成开发环境完全支持c o b o l2 0 0 2 标准,也对开发 c o b o lw e bs e r v i c e 程序进行了简单的尝试,这与软件发展的潮流相吻合,可以 促进c o b o l 语言的进一步发展。 1 4 研究工作与论文组织 本课题在对n e t 框架基本理论研究的基础上,利用n e t 集成开发环境的 v s i p 技术实现了c o b o l2 0 0 2 集成开发环境。主要进行了以下方面的工作:n e t 框架的分析,核心内容和关键技术的研究;v s i p 技术研究;开发环境工程管理、 编辑器,调试器的设计和实现。 论文按照作者的研究和开发工作组织安排,共分为6 章,每一章的主要内 容如下: 第1 章:绪论。介绍了研究工作的背景,国内外研究现状,研究的意义以 及研究工作与论文的组织。 第2 章:n e t 和n e t 框架核心内容和关键技术的研究。本章分析了n e t 的基本组成结构,研究了内存管理技术,编译模型,中间语言和n e t 框架的类 库等内容。 第3 章:v s i p 和c o b o l2 0 0 2 集成开发环境。v s i p 是n e t 框架提供的集成 开发环境的组件接口,它为实现基于n e t 框架的c o b o l2 0 0 2 集成开发环境提供 了可能。本章首先研究了v s i p 的基本理论及共享服务。然后提出了基于n e t 框 架的c o b o l 2 0 0 2 集成开发环境的框架结构及主要模块,并对c o b o l 工程的层级 4 西北工业大学硕士学位论文绪论 管理模型进行了详细研究。 第4 章:c o b o l 集成开发环境编辑器的研究。针对c o b o l 集成开发环境 的功能需求和c o b o l 程序的格式特点,设计了运行文档列表和二维文本缓存结 构。论述了编辑器的实现流程。 第5 章:c 0 8 0 l 集成开发环境调试器的研究。设计了调试器的结构,提出 了调试信息的中间存储模型,并设计了保存c o b o l 程序调试信息的文件格式一 c d i 文件。 第6 章:结束语。总结了全文的主要内容和主要研究工作,指出了后续工 作的研究内容。 5 两北工业大学硕士学位论文 n e t 和n e t 框架 第2 章。n e t 和。n e t 框架 本章首先论述了n e t 和n e t 框架,并结合研究课题,对n e t 框架的内存管 理技术,编译模型,中间语言和程序集等内容进行了详细论述。 2 1 n e t 和n e t 框架概述 m i c r o s o f t n e t 是微软推出来的下一代基于互联网平台的软件开发构想,其 背后的理念是:不再关注单个网站和单个设备,而是让所有的计算机群、相关设 备和服务商协同工作,提供更加广泛和丰富的解决方案。人们将能控制各种信息, 在何时以何种方式传递给自己。那么,究竟什么是n e t 呢? 引用微软总裁兼首 席执行官史蒂夫鲍尔默的话说:“n e t 代表了一个集合,一个环境,一个编 程的基本结构,作为一个平台来支持下一代的互联网。n e t 也是一个用户环境, 是一组基本的用户服务,可以用作客户端、服务器或任何地方,与该编程模式具 有很好的一致性,并有新的创意。因此,它不仅是一个用户体验,而且是开发人 员体验的集合。【2 】” 2 1 1 n e t 的组成结构 从软件开发人员的角度理解,n e t 是为了简化在下一代因特网分布式环境 下的应用程序开发,基于互联网的标准和协议,实现多种编程语言和跨平台构建 的新一代计算和通信平台。如图2 1 所示,n e t 主要由三个部分组成【3 】; ( 1 ) n e t 框架 ( 2 ) w e b 服务 ( 3 ) n e t 企业服务器 n e t 框架是n e t 的基础,它提供了创建、部署、运行n e t 应用程序的核心 技术和开发平台。n e t 框架由层次化的服务,类和工具组成,这些服务、类和 工具组合在一起形成了全新的n e t 开发平台。 w e b 服务是肥t 的核心理念。它是基于标准因特网协议的平台与语言无关的 可重用组件,可以实现跨平台和语言的数据共享。在w e b 服务中,使用m 。实 现消息收发、数据表示和类型信息。w e b 服务的功能将利用用户与服务之间互相 传递消息来实现,可以简单地发送一个) 0 l 有效载荷到远程服务器上,该服务 器就可以处理) ( m l 的有效载荷请求。 n e t 企业服务器是为了定位n e t 技术推出的一系列基于服务器的应用程 7 西北工业大学硕士学位论文 n e t 和,n e t 框架 序,它能够使企业系统网络化。典型的n e t 企业服务器有:w i n d o w s2 0 0 0 a d v 觚c e ds e r v e r ,a p p l i c a t i o nc e n 衙2 0 0 0 ,s q ls e r v e r2 0 0 0 ,e x c i l a i l g es e e r2 0 0 0 等。 2 1 2 n e t 框架 图2 - l - n e t 的组成结构 n e t 框架是一种新的计算平台,提供了一系列丰富、集成的类和服务,简 化了在高度分布式因特网环境中的应用程序开发。其主要目标是提供一个一致的 面向对象编程环境,这个环境可以控制版本冲突并且保证代码安全执行。图2 2 显示了n e t 框架的体系结构【3 】。 图2 2j 姬t 框架的体系结构 在该体系结构中,建立在操作系统层之上的服务是管理代码运行需求的公共 8 西北工业大学硕七学位论文 n e t 和n e t 框架 语言运行库( c o m m o nl a i l g u a g er l m t i i n e ) 。可以被开发者用任何语言编程的基类 库是n e t 框架的主要组成部分,包含了n e t 框架的核心内容。所有在n e t 开发 平台上创建的应用程序都需要运行这两个核心块。在下面的章节,将对它们及其 它关键技术进行深入阐述。 2 2 公共语言运行库( c l r ) 运行库是计算机程序得以执行的环境。在n e t 框架中,公共语言运行库主 要提供管理内存,线程执行,代码执行,代码安全验证,编译程序以及其他系统 服务。 2 2 1c l r 的结构模型 c l r 是n e t 框架的一个重要组成部分,它为简化应用程序开发及代码重用, 提供了大量的运行时服务,如编译,无用单元回收,内存管理等。c l r 的体系结 构如图2 3 所示【4 】: 图2 3c l r 的体系结构 从图2 3 中可以看到,c u t 的一个主要模块是类的加载器,它把类装入存储 器并为其运行做一些准备工作。累加载器处理组件的元数据所提供的信息,包括 程序集名称,版本信息及引用类型信息。类加载器在代码编译和执行之前,先进 行完整性检查,这能够确保类型安全,从而改善运行时代码的稳定性。 内存管理和编译模型是c u t 的另外两个重要模块,在接下来的小节中详细论 述。 9 西北工业大学硕士学位论文 n e t 和n e t 框架 2 2 2 内存管理 内存提供了一种存储信息的方法。计算机的存储部件可以依照存取速度由快 到慢分为:寄存器,缓存,随机存取存储器,磁盘,网络存储器。内存是指上述 分类中的随机存取存储器,它在计算机数据存储系统中起着承上启下的作用。在 机器层级上,内存是由一系列由处理器进行读写的内存单元构成的。一个内存单 元就是一个基于晶体管的电子部件,对应0 和1 两种状态。在系统层级上,内存可 以被看作是一批“0 ”、“1 ”符号首尾相连的字节序列。序列中的每一个字节都 被赋予一个从“o ”开始的非负递增整数标号,这些标号成为内存中字节的地址。 处理器在内存上的读写操作是基于多字节进行的。典型的i n t e l 系列芯片是以4 字 节( 3 2 比特) 为单位进行读写数据的。多字节数据在内存中的存放方式有升序( 高 位字节存放在低位地址中) 和降序( 高位字节存放在高位地址中) 两种。对每一 个系统来说,多字节数据在内存中的具体存放方式取决于所使用的硬件平台 嗍。这是软件代码移植首先必须考虑和解决的问题。 为了让操作系统有效的管理内存,通常采用内存分页和内存分段两种机制。 计算机的物理内存容量一般远远小于内存寻址空间的容量( 如3 2 位i n t e l 处理器的 寻址空间是4 g b ,实际使用中的内存容量只有几百m b 。) ,因此,为了有效地 增加可寻址内存的数量,磁盘被用来模拟内存。在这个模拟过程中,通过软、硬 件结合,把内存中的数据以“页”为单位交换到磁盘上。i n t e l 3 2 位处理器页容量 有三种:4 k b ,2 m b ,4 m b ,现在,p c 机上的w 砌o w s n t 操作系统允许页容量 最小单位是2 m b 。内存分段技术是指把一个程序分配到被称之为内存段( s e 舯e n o 的内存区域里。应用程序的各个段被划分为不同的类型,这样操作系统就能针对 不同类型的程序段定义相应的安全防预策略,实现系统保护。在内存分段技术上, 有一些完全建立在软件机制上的技术,如软件沙箱【s 】、自检查代码【8 】。 在应用程序的内存管理上,操作系统首先要为应用程序分配内存,然后再把 分配给应用程序的内存划分为一个或者多个内存段。应用程序使用的内存段可以 分为几种不同的类型:正文段,数据段,堆栈段,数据堆。正文段存储的是程序 指令;数据段存储的是各种全局数据( 在编译时确定) ;堆栈段存储的是函数参 数,局部变量以及函数返回值等;数据堆可以没有,其作用是提供在程序中动态 分配内存的空间。c 0 b o l 语言的内存分配机制相对比较简单,它只支持由数据 段实现的静态存储分配功能,没有数据堆。 不同于c + + 的内存管理,n e t 的内存管理采用一种垃圾收集系统【4 】【5 】。 在n e t 中,初始化新进程时,公共语言运行库会为进程保留一个连续的地址空 间区域托管堆。托管堆用来维护指向分配队列中下一个对象的地址的指针。 最初,该指针指向托管堆的基址。当应用程序创建一个对象时,垃圾收集系统将 1 0 西北工业大学硕士学位论文n e t 和n e t 框架 在托管堆上指针指向的位置为它分配一段内存空间。只要地址可用,垃圾收集系 统就以这种方式为新对象分配内存。垃圾收集系统通过检查应用程序的内存请求 来确定回收内存空间的时间。应该程序的内存请求涉及全局对象指针、静态对象 指针、线程堆栈中的局部变量以及c p u 寄存器。回收过程中,垃圾收集系统维护 托管堆中所分配内存空间的记录,参照每一个记录的所有对象。当这些对象都被 删除时,该内存空间被释放。图2 4 描述了内存单元的回收流程。 优化垃圾收集系统的性能的内存单元回收算法依据以下三个实验结论: ( 1 ) 压缩托管堆的一部分内存要比压缩整个托管堆的速度快。 ( 2 ) 较新的对象生存期较短,较旧的对象生存期较长。 ( 3 ) 较新的对象趋向于相互互联,并且由大约同期的应用程序访问。 托管堆根据分配的先后被分为三代o ,l ,2 。在应用程序早期创建的对象为第o 代对象,如果未被回收,会升级为第1 代和第2 代对象。如果应用程序在托管堆被 分配完后继续尝试新建对象,垃圾回收通过检查第o 代生成结果中的对象来执行 回收。单独回收第o 代得生成结果通常可以回收足够的内存。这样,垃圾收集系 统每次执行回收时只需释放特定的内存块,而不需要回收整个托管堆。在垃圾收 集系统执行第o 代对象回收以后,会压缩可访问对象的内存并升级未被回收的第o 代对象成为第1 代对象,这些对象被认为具有较长的生存期,在下一次回收第o 代对象时不被检查。当回收完第o 代对象后,如果没有回收到足够的内存,垃圾 收集系统会检查并回收第l 代对象。经过检查未被回收的第l 代对象将被升级为第 2 代对象,这些对象在回收第o 代和第1 代对象时不进行检查。由于垃圾收集系统 只支持三代对象,因此第2 代未被回收的对象不再升级而继续保留为第2 代对象, 直到将来回收中确认他们不再访问为止。如果直到回收完第2 代对象,垃圾收集 系统还未回收到足够的内存单元,则垃圾收集系统等待一定的周期后,从第o 代 对象开始重新回收的过程。 2 2 3 编译模型 运行库是一个多语言的环境,它支持多种数据类型。为了获得运行库的优点, 必须使用多种针对运行库的语言编译器,如v i s l l a lb a s i c ,c 群,v i m a lc + + 及第三方 编译器( 如c o b o l 2 0 0 2 编译器) 。编译器确定可用的运行库功能,规定了编写 代码的语法。 为了增强程序的可移植性,n e t 首先将源程序翻译为m i c r o s o r 中间语言 ( m s i l ) ,该语言是一组可以有效地转换为本机代码且独立于c p u 的指令。m s i l 包括用于加载、存储和初始化对象以及对对象调用方法的指令嘲。 西北工业大学硕士学位论文 n e t 和n e t 框架 图2 4 内存单元回收流程图 西北一i :业大学硕七学位论文 n e t 和n e t 框架 在执行m s i l 之前,必须通过即时编译器( j i t 编译器) 将m s i l 转换为本机 代码。本机代码是运行于j i t 编译器所在的同一计算机体系结构上的特定代码。 公共语言运行库为每种受支持的计算机体系结构都提供了j i t 编译器,这在理论 上,实现了程序跨平台移植。然而,源程序中如果调用了平台特定的、本机a p i 或平台特定的类库,则它只能运行于特定的操作系统。为了保证效率,j i t 编译 时考虑了在执行过程中某些代码可能永远不会被调用的事实,在将m s i l 转换为 本地代码时,j 1 1 r 编译器是在执行期间根据需要转换,并存储转换的结果以供调 用【7 】。j i t 编译的过程是:n l 玎可执行文件中每一个方法都提供一个记录, 在 加载类型时,加载器创建记录并将其附加到类型的每个方法。当对方法进行初始 调用时,记录将控制传递给j i t 编译器,而编译器将方法的m s i l 转换为本机代码 并修改记录以直接执行到本机代码的位置。以后对j i t 编译的方法的调用将直接 进行到以前生成的本机代码,从而减少了实时编译和执行代码所需的时间( 如图 2 - 5 ) 。 亘 吨习 函, 图2 5 c l r 的编译模型 除了采用j i t 编译器编译代码外,n e t 还提供了另外一种编译模式安装 时代码生成模式。安装时代码生成模式不同于j i t 编译器的是它在转换代码时, 会将较大模块的代码单元转换并存储;在代码生成时,它会考虑有关其它已安装 程序集的已知信息。与使用标准j i t 编译器转换代码相比,安装时代码生成模式 的加载和启动速度较快。 n e t 中,作为将m s i l 编译为本机代码的一部分,代码必须通过安全验证过 程。验证过程检查m s i l 和元数据以查看m s l l 是否正确编译,本地代码是否正确 生成,代码是否访问了未被授权的内存区域及代码的类型安全【3 】。如果代码不能 通过安全策略的验证,则在执行时将引发异常。这样就可以避免无心或恶意的损 坏。 将源程序编译为m s i l ,再由j i t 编译器编译生成本地代码后就可以在本地平 台上执行。因为皿r 并不是一次性将所有m s i l 代码编译成本地代码,所以在执行 西北工业大学硕士学位论文n e t 和n e t 框架 过程中将根据需要继续编译m s i l ,这种过程将一直持续到代码执行结束。 2 3 1 l ( i n t e r m e d i a t el a n g u a g e ) 传统的编程模型中,每种编程语言都有自己的数据类型,函数都有自己特殊 的参数传递机制,参数的入栈和出栈的顺序也不相同,每种语言编译后都产生自 己唯一的中间二进制代码形式。所有这些差别增加了用多种语言构建组件的难 度,并且需要对多种系统进行改进。在n e t 中,m i c r o s o f i 提出了不再依赖于编 程语言的编程模型。该模型中,所有语言首先都被编译成相同的目标代码一中 间语言字节代码,再由低层编译器或者即时编译器( j i t ) 将中间语言字节代码 编译为指定平台的可执行代码【9 j 。 2 3 1i l 的基本结构 i l 不是一种真正低级、像汇编一样的语言;它也不是一种面向对象的语言, 所以本身不需要创建类。m 是一种基于栈的语言,函数参数被压入栈,该函数被 调用;为了更好的支持多种源语言和结构,允许创建类和类的实例。被调用函数 负费从栈中删除所有参数,并将为该函数调用者的所有返回值压回栈【9 】。 i l 的基本结构包括以下方面: ( 1 ) 在a s s e m b l y 指令后跟程序集名声明程序集,程序集名后面的 中可以声 明其他与程序集有关的标识。 ( 2 ) 利用嬲s e m b l ye x t e n l 指令引用程序包含的外部程序集。 ( 3 ) 利用n 锄e s p a c e 指令后跟命名空间的名字声明命名空间。 ( 4 ) 在命名空间的 内,利用c l a s s 指令后跟类名声明一个类。 ( 5 ) 在类的 内,利用m e t l l o d 指令后跟方法名声明类的成员函数,在中间 语言中保留了类的访问权限饰词( p u b l i c 等) 。 ( 6 ) 在e 1 1 n y p o n 指令处,中间语言指出了程序的入口点。 以上这些仅仅是i l 的基本结构,此外,i l 还提供了更多的功能,例如可以在 例程中加入1 i i l e 指令来扩展历程的功能。可以通过n e t 的反汇编工具i l d a s m c x e 查看复杂代码的中间语言。 2 3 2 元数据 元数据是一种二进制信息,用来描述存储在公共语言运行库的可移植可执行 文件( p e 文件) 和存储在内存中的程序。当执行代码时,运行库将元数据加载 到内存中,并引用它来发现有关代码的类、成员、继承等信息。这些信息在运行 1 4 西北工业大学硕士学位论文n e t 和n e t 框架 时决定了程序的流程,包括了:程序集的说明,如标识,导出的类型,该程 序集所依赖的其他程序集等;类型的说明,如名称、成员,可见性,基类和 实现的接口等;属性,修饰类型和成员的其他说明性元素【9 】。 元数据允许n e t 不再需要接口定义语言文件( i d l 文件) 或其他引用外部组 件的方法,其主要的优点是:自描述文件,元数据提供c 0 m 中i d l 的功能, 允许将一个文件同时定义和实现,不再需要向操作系统注册,从而提高应用程序 的可靠性。语言互用性和简单地基于组件的设计,元数据提供所有必需的有 关已编译代码的信息,可以创建任何托管语言( 任何面向公共运行库的语言) 。 编译文件的特性,n e t 框架允许在编译文件中声明用来精确地控制运行时程 序工作的元数据,也可以向n e t 框架文件发布用户自定义的元数据。 在p e 文件中,元数据包含一系列的表和堆数据结构。例如,一个元数据表 用来说明代码中的类,另一个元数据表用来说明字段等。如果代码中有1 0 个类, 类表将有1 0 行,每行代表一个类。而所有对类型和成员进行命名的字符串及组件 的g u i d 都存储在元数据字段表中。m i c r o s o f i 中间语言( m s i l ) 为了能正确地识 别元数据,引用了元数据标记。元数据标记是一个四个字节的数字,在m s i l 中 唯一确定每个元数据表的一行。如o x 0 6 0 0 0 0 0 4 ,其中最高位字节o ) 【0 6 表示这是 一个方法或者类型等的标记,其余三位字节( o o 0 0 0 4 ) 指示公共语言运行库在元 数据表的第四行查找描述信息。 2 。4 。n e t 框架类库 n e t 框架的一个重要组件是类库,它是一个综合性的面向对象的可重用类 型集合,利用它可以开发包含从传统的命令行或图形用户界面( g u i ) 应用程序 到a s p n e t 所提供的最新的应用程序。 2 4 1 基本功能 n e t 框架类库包括类,接口和值类型,它们可以加速和优化开发过程并提 供对系统功能的访问。开发人员可以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工方案修订职责
- 实体商场活动策划方案
- 减肥培训营销方案
- 企业薪酬绩效管理系统需求分析
- 消防设备日常维护操作细则
- 市级中考语文模拟试题汇编
- 城市轨道交通施工工艺技术方案
- 标准离婚协议书模板
- 个人职业礼仪心得体会分享
- 企业员工激励与绩效管理策略
- 小学英语-I can speak French教学设计学情分析教材分析课后反思
- 冷却塔填料更换施工方案
- 桥梁工程数量表
- 会员充值消费管理明细表
- 国家肥料执行标准大全
- (7)-第七章性与生殖健康
- 江苏省重大建设项目档案验收办法
- 建筑施工安全员学习资料
- 励盈港式茶餐厅员工手册
- LY/T 3292-2021自然保护地生态旅游规范
- GB/T 14608-1993小麦粉湿面筋测定法
评论
0/150
提交评论