您的位置:首页 > 其它

miniVM Virtual Machine毕业设计论文之开题报告

2005-02-16 12:19 351 查看


淮 阴 工 学 院
毕业设计(论文)开题报告

学生姓名: 朱德伦 号: 10113612
业: 计算机科学与技术专业
设计(论文)题目: 基于C++的虚拟机及其
编译器系统设计
指导教师: 于永彦


2005年 2 月 15 日

开题报告填写要求

1.开题报告(含“文献综述”)作为毕业设计(论文)答辩委员会对学生答辩资格审查的依据材料之一。此报告应在指导教师指导下,由学生在毕业设计(论文)工作前期内完成,经指导教师签署意见及所在专业审查后生效;
2.开题报告内容必须用黑墨水笔工整书写或按教务处统一设计的电子文档标准格式(可从教务处网页上下载)打印,禁止打印在其它纸上后剪贴,完成后应及时交给指导教师签署意见;
3. “文献综述”应按论文的格式成文,并直接书写(或打印)在本开题报告第一栏目内,本科学生写文献综述的参考文献应不少于15篇(专科生不少于10篇,不包括辞典、手册);
4.有关年月日等日期的填写,应当按照国标GB/T 7408—94《数据元和交换格式、信息交换、日期和时间表示法》规定的要求,一律用阿拉伯数字书写。如“2002年4月26日”或“2002-04-26”。

计(论文)开
1.结合毕业设计(论文)课题情况,根据所查阅的文献资料,撰写2000字左右(专科生1500字左右)的文献综述(包括目前该课题在国内外的研究状况、发展趋势以及对本人研究课题的启发):

一、历史与困惑
自从1945年世界上第一台电子计算机的出现到现在,电子计算机技术已经发展了近60多年。也正是因为有了电子计算机的出现,人类社会在二十世纪中的发展进程是如此之快,很难想象在上世纪初,电力都属于稀有的东西,然而到了世纪末,关于电的运用是何其的丰富。特别是电子计算机的出现,减轻了摆在人类面前的繁重计算任务,科学技术凭借着计算机的出色计算能力得到迅猛的发展,但是人们面对如何充分用计算机的计算能力来帮助自己更好的工作的问题上,还是充满了困惑。
特别是在Gordon Moore于1965年做出了一个震惊世界的预言:每隔18个月或24个月,在芯片上的容纳的晶体管数量将翻一倍,而其价格将成为原来的一半。这就是我们所熟知的摩尔定律。在这之后,电子计算机技术也正如Moore先生所预言的那样发展神速。现在,这个定律依然有效,也就成了目前IT业界,特别是电子计算机硬件领域的风向标。可是,作为人类工作生活的一个工具,计算机解决事务的能力也随之加强,但是还远没有达到人们预期的那样神奇,反而在某种程度上说还带来了更多的困惑。
在电子计算机发展刚开始的日子里,特别是以ENIAC为代表,都是一些巨型机。那个时候的电子计算机都是一些巨大而又笨重的家伙,如此庞大的机体需要占用更多的空间,并且造价昂贵,操作与维护自来也非常的复杂、困难甚至是枯燥乏味,此时的计算机更像是一个巨大的工程计算器,没有处理大型事务的能力,良好的交互性和网络互联性更是与大型机无缘。直到1961年,著名的Digital Equipment Corporation(数字设备公司,DEC)推出了PDP-11计算机,PDP-11的面市标志着小型机时代的到来,在这之后,很多中小型公司都可以买得起计算机,慢慢的很多计算机都开始放弃使用大型机,开始使用小型机,因为价格便宜而且性能不比大型机差多少,且出现了一些比较的事务处理软件系统。渐渐的出现了计算机有巨型机向小型化,甚至是微型化的发展趋势,这种潮流趋势在1981年IBM公司推出个人电脑(PC)之后变得更加迅猛,个人电脑现象对于IBM公司来说是“微型机杀手的攻击”。由于微型计算机的出色性能,多种多样的软件支持,出色的网络互连能力,微型计算机成为了当今的王者。
随着PC的流行,逐渐也出现了PC机上的硬件级别的标准,以此来规范硬件市场。也正是PC规范的出台,软件行业也得到了迅猛的发展,各式各样的软件产品纷纷上市,特别是操作系统市场上出现了Microsoft DOS、Microsoft Windows、UNIX、Linux、MacOS、BeOS等多种操作系统平台。特别是Microsoft公司的Windows系统占据了目前国际市场上90%的桌面市场。同样在计算机硬件市场上,Intel也成为了龙头老大,并出现了Intel和Microsoft两家公司紧密联合的Wintel联盟。但是软件业多样化的趋势还是没有变,特别是出现了有Linux引起的自由软件风之后,商务平台趋于多元化,而各个平台之间的数据互联却变得越来越难,运用的技术越复杂。在商务技术中,多个交易平台之间无法通过有共识的互联方法进行数据交换,特使在设计通用商务系统软件时,更多的是需要考虑的是各个平台之间的差异而不是商务活动本身的需求,这样就违背了软件设计的初衷,使得在商务软件领域出现更多失败的案例。为了解决个棘手的问题,业内由此引发了很多技术方面的讨论和争论,出现了很多的解决方案,但是很多都是有针对性地对特定平台进行设计的,没有通用性可言,而且各个解决方案直接还是无法互通,唯一成功的恐怕就是“非标准”的TCP/IP协议的出现。TCP/IP协议的出现从底层的协议层面上解决了网络互联所带来的困难,然而远没有达到预期的目的。

二、为什么是虚拟机技术
1995年末,SUN公司出台了Java语言标准。Java最初并不是打算运用于Internet,而是作为一个小型家用电器的编程语言,用来解决诸如电话、电视机、闹钟、微波炉等小家电的控制和通讯问题,而且其命名最初并不是Java,而是Oak,因为版权的问题,在后来推出的时候最终命名为Java。但是由于当时智能化家电市场需求没有预期的高,Sun公司放弃了该计划。正当Oak几乎夭折的时候,Internet技术异常火爆起来,那个时候正好是二十世纪九十年代初,由于Oak在计算机网络上的广阔应用能力,Sun公司开始重新考虑开发改造Oak技术,于是,1995年的冬天,Java诞生了。其标志就是一杯冒着热气的香浓咖啡。这正是由于这杯咖啡,使得计算机软件行业内的软件设计理念发生了质的变化。Java是一个简单、面向对象、网络适用、解释型、健壮、安全、结构中立、可移植性、多线程、动态的计算机程序设计语言。
Java的成功得益于它的Java虚拟机所建立的运行时系统平台,在操作系统和客户运用程序之间加入了由虚拟机建立的一层实现,而在这一层实现上的运用程序可以不用理会底层机制是如何实现的,唯一要关心的是如何实现自己的事务处理,这样就达到了底层细节的透明性。
所有通过Java语言编写的程序可以在世界上任何一个拥有Java虚拟机的计算机系统上运行,做到了“一次编写,随处运行”。正因为这个原因,由Java语言所带出来的相关虚拟机技术在Internet商务领域得到了快速的发展,而商务方面的多个异类平台之间的互联问题也迎刃而解。
在设计与实现商务交易平台的过程中,系统分析师们不用再为各个平台之间的差异而变得困惑了,而将开发中的重心放在业务设计实现本身,由此带来的好处就是加速开发进度、保证软件开发的成功率和系统自身在解决客户需求的准确率。再加上虚拟机本身的可移植性,针对由某个虚拟机的系统在任何一个支持该虚拟机系统的平台上都能够运行。这既节约了开发时间,又节约了开发带来的维护成本。特别是J2EE Platform, Enterprise Edition为设计、开发、装配和部属企业级应用程序提供了一个机遇组件的解决方案。使用J2EE可以有效的减少费用,快速设计和开发企业级的应用程序。J2EE平台提供了一个多层的分布式的应用程序模型,该模型具有重用组件的能力、基于扩展标记语言(XML)的数据交换、统一的安全模式和灵活的事务控制。使用J2EE布景可以更快的发布新的解决方案,而且独立于平台的特性让使用J2EE的解决方案不受到任何提供商的产品和应用程序编程界面(API)的限制。用户可以选择最合适自己的商务应用和所需技术和产品。也正是因为这个原因,传统的软件开发由面向代码转变为面向组件的开发设计方式,更加还引入了中间件、AOP等新的软件开发技术。

三、虚拟机技术(虚拟机技术的详细流程)
虽然虚拟机技术的流行似乎是到了1995年Java发布才开始的,但事实上,虚拟机技术已经存在很多年了,早在二十世纪的六七十年代,虚拟机技术就已经出现在计算机的操作系统开发领域(或许应该称其为计算机监控系统)。因为这是一个母鸡生蛋,蛋孵小鸡的原理,在过去那个软件匮乏的时代,一般计算机都没有自己的操作系统,慢慢的因为用于计算机运算的算法越来越复杂,逐步的出现了操作系统概念。然而操作系统是如何开发的呢?这就是虚拟机技术出现的契机。整个开发思路是这样的:
先通过软件构造出一个能够模仿目标计算机硬件平台的仿真机。这个仿真机其实就是一个虚拟机,只不过它的模仿对象只有一个——给定的目标计算机的处理器。仿真机的性能和可移植性没有什么讨论的价值,它只要能令人信服的把目标硬件一模一样的仿真出来就可以了。
把仿真机制做完成后,还需要一个可以交叉编译的编译器。这个交叉编译器能够运行在仿真机的宿主系统上,但是他生成的可执行目标文件却需要运行在目标操作系统上,并有仿真机来执行。
这样就可以舒舒服服的从一个安全而又熟悉的系统上开发另一个不同的操作系统了。这个开发方法也是比较原始的,目前已经有了新的开发方法了。
当然,现在虚拟机技术并不只运用于操作系统的开发上,在很多其他的领域中都能够看到虚拟机的身影,只要在软件系统中存在中间语言或者中间数据表示的都会出现虚拟机的相关技术,例如网页设计中,使用的HTML和其他的网页脚本语言都是虚拟机语言,只是这个虚拟机并不是很大也不是模拟的某些计算机的处理器;又如使用Flash做矢量动画设计的时候使用的ActionScript语言也是相同的原理;另外在计算机游戏开发领域中也有虚拟机的身影,由于计算机游戏中运用的人工智能技术自身的特点,NPC动作的人工智能不可以通过语言在程序设计的时候就固定下来,必须在游戏过程中随着情况的不同而做出不同的相应动作,所以,在构造计算机游戏的时候,必须构造人工智能系统。所以由此可见,虚拟机技术的运用领域费城广泛,特别是在系统开发设计领域。
随着这么多年的发展,虚拟机技术已经变得非常成熟,为了适应多种不同的宿主系统也出现了很多的变种系统。虚拟机技术的主要思路其实很简单:
1、确定目标系统的处理器规格及其指令集系统,比如有哪些及其操作指令,是属于堆栈处理器还是给予寄存器处理器,寄存器的分布是如何的,字宽是多少等等多种问题。
2、接下来是设计虚拟机系统的结构。利用各种设计工具描述系统结构、系统组成,同时也要注意虚拟机自身的移植性问题。
3、然后根据虚拟机的指令机系统设计交叉编译器的系统结构,有针对性的做一些设计。
4、最后就是代码实现了。
5、测试、测试、再测试。
虽然有了大概的工程开发过程,但是利用建模语言实现系统结构模型和用代码来实现系统结构却是最最重要的,虚拟机核心流程思路如下:
1、接收从宿主系统传过来的消息,包括运用程序的参数和一切其他的信息。
2、根据消息设置并读取所需要的相应信息,如字节码可执行文件等。
3、初始化系统,将可执行文件解读并加载到“内存空间”中。
4、在系统“内存空间”中读出一条虚拟机机器指令。
5、根据指令作相应的操作。
6、回到第四步,直到可执行程序执行完毕并返回值。
7、输出系统运行结果信息。
8、退出。
从上面的虚拟机执行流程来看,整个过程不是很复杂,总体上跟一般的处理器运行过程差不多,属于一般的冯·诺伊曼型计算机。但是,事实上一些商业虚拟机的构造远远比上面的流程要复杂得多,因为随着商业功能的趋于复杂化,软件设计过程的智能化,要求虚拟机系统支持的功能越来越多,特别是要实现面向对象程序设计方法、实现面向方面程序设计方法、实现智能型、通用性方面的设计更多。

四、虚拟机的未来
可以说虚拟机技术并不会随着计算机技术的发展而消亡,反而会在更多的技术领域中涉足。Java的出现和发展以及今后的技术延伸就能够说明问题。在Sun公司发布Java技术不久,2000年,Microsoft公司也推出了一个虚拟机系统平台的概念:.net技术。并在2002年末推出的Visual Studio .net 2002中运用了.net 1.0虚拟机系统和相关面向对象程序设计语言C#,随之而来的就是一些新的面向网络运用的技术,如:Web Service,SOAP等。据传闻,Microsoft公司的.net技术在设计和研制过程中,重点研究了曾经流行的20多种程序设计语言,并从中提炼出优秀的设计理念,加入到.net技术中,而.net平台的原生语言C#更是讲些技术运用到了极致。目前,两大虚拟机系统在市场竞争中相互学习发展,Java的虚拟机版本已经达到了5.0版,而.net业到了2.0版,而且系统的各个方面也趋于完善。而且从虚拟机技术上衍生出来的技术也将得到更大的发展空间,Microsoft公司将在2006年推出计算机历史上第一个基于虚拟机的操作系统——Longhorn——这也是第一个基于.net平台的操作系统,可是预料,以后的网络运用将更将简便、开放。也正是这个原因虚拟机技术一直是计算机领域的一个常青树。
从另外一个角度来看,摩尔定律迟早会在未来的某一天得到终结,在聪明的计算机硬件工程系也会因为会硅片上无法容纳更多的晶体管而无能为了,到时候又开始以增大计算机的体积为代价来换取计算机的高性能了。没错,计算机迟早会变得更大的。
因为这个原因,等到摩尔定律被实践终结的时候,计算机理论科学家们将又会回到他们的黑板面前研究更加高效的算法理论。到时候计算机就可以做些目前只能由人类自己参与的事情了,最起码,现在一个并不复杂的递归优化算就能够战胜国际象棋大师了。但是因为算法的越来越复杂,迫使人们不能够在将自己的注意力过多的专注于自己所使用的硬件平台的细节当中,而是要专注于问题需求本身的解决和实现上。

五、虚拟机的诱惑
从很多的角度来看,虚拟机技术的运用领域非常宽广,同时也是个并不是怎么高深的软件开发技术,所以,这也是我学习补全知识结构的一次好机会,同时也对运用到软件设计过程本身的相关设计技术的理解和运用很大的帮助。

计(论文)开
2.本课题的研究思路(包括要研究或解决的问题和拟采用的研究方法、手段(途径)及进度安排等):
构造虚拟机的软件过程是复杂的,更多的技术细节必须要通过前期的精心考虑之后才能够动手开始制作,特别是关系虚拟机的系统结构、指令集的构成与内部指令的分布、功能、构造与使用方法等,以及虚拟机处理器的机器指令与汇编指令之间的对应关系等,这些都是需要先期预先考虑好的重要细节。
虚拟机及其编译器系统主要是运用模拟实际存在或者抽象中的处理器系统,其目的是使得软件开发过程更加高效、方便、可移植性好、费用低廉等。我的这个虚拟机运行是系统位miniVM Virtual Machine Run-time System,其开发代号为:Anya。
首先,根据设计要求进行需求分析,制作相应的系统开发文档;然后,使用UML(Unified Modeling Language 统一建模语言)根据需求分析的结果建立系统模型;接下来,判定使用何种程序设计语言,确定开发难度和工作量;接着开始利用程序设计语言编程实现;最后测试。
整个开发过程的时间表:
工作难度时间备注
需求分析中等一周
系统定义中等一周定义系统结构
系统概要设计中等三周系统总体构成
系统详细设计困难六周模块化设计
系统实现中等二周
测试困难不定
整个虚拟机系统的构造过程预计需要十三周的时间。

计(论文)开
指导教师意见
1.对“文献综述”的评语:

2.对本课题的研究思路、深度、广度及工作量的意见和对设计(论文)结果的预测:

指导教师:
年 月 日
所在专业审查意见:

负责人:
年 月 日
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: