虚拟机CPU平台的核心模块的设计与实现

来源 :中国科教创新导刊 | 被引量 : 0次 | 上传用户:cjjelly
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:本文设计对虚拟机CPU平台的核心模块进行设计分析。将以虚拟机技术为主要研究对象,较深入地分析和研究了核心模块的设计与实现,为最终用C++实现一个基于Windows平台的面向科学计算的小型虚拟机软件系统ICU的实现做好准备。
  关键词:虚拟机 CPU C++
  中图分类号:G4 文献标识码:A 文章编号:1673-9795(2013)02(b)-0181-01
  虚拟机发展到今天已经有几十年的历史了,在很长一段时间内虚拟机技术完全没有引起人们的足够重视,但最近几年在计算机工程应用领域范围内,随着计算机性能的不断增强,计算机能力的不断增加,人们对传统的虚拟机技术的研究重新成为计算机领域的热点。
  1 小型虚拟机软件系统ICU的基本环境设置
  1.1 64位CPU平台设计
  本文将要设计的虚拟CPU环境包括23个64位寄存器和5个32位寄存器。将其分为以下几大类:
  3个段寄存器($CC、$DD、$VV);
  3个指针寄存器($SS、$PS、$JS);
  12个通用型整数寄存器($T1-$T12);
  5个双精度IEEE754浮点寄存器($S1-$S5);
  5个单精度IEEE754浮点寄存器($D1-$D5);
  以下是用C++语言描述的小型虚拟机软件系统ICU的CPU环境的内部结构:
  Public://定义一个共有类型变量
  Struct ICUprocessor{
  ICU_W BB;//定义一个累加器BB
  ICU_W SI;//定义一个堆栈指针SI
  ICU_W CC;//定义一个保存代码段开始的段寄存器CC
  ICU_W DD;//定义一个保存数据堆段开始地址的段寄存器DD
  ICU_W VV;// 定义一个保存堆栈段开始地址的段寄存器VV
  ICU_W ZZ;//定义一个变址寄存器ZZ
  ICU_W IR;//定义一个指令寄存器IR
  ICU_W PC;//定义一个程序计数器PC
  ICU_W SS;//定义一个基址指针SS
  BOOL A,B,C;//定义一个标志寄存器ABC保存指令操作的结果状态
  ICUprocessor cpu;//小型虚拟机软件系统ICU的中央处理器
  在以上程序中ICU_W是定义的一个字类型。小型虚拟机软件系统ICU包括一个累加器BB,一个堆栈指针SI,一个用于记录代码段起始地址的段寄存器CC,一个用来保存数据堆段起始地址的段寄存器DD,一个用于保存堆栈段起始地址的段寄存器VV,一个变址寄存器ZZ,一个指令寄存器IR,一个程序计数器PC,一个基址指针SS,一个标志寄存器ABC,用来保存当前指令操作的结果状态。64位寄存器$T1到$T12用来存放整数值。32位寄存器$D1到$D5用来存放单精度IEEE754浮点数。64位寄存器$S1到$S5用来存放双精度IEEE754浮点数。
  1.2 CPU平台的栈设计的特点
  由于堆栈在处理函数调用方面有着很高的效率、在解决递归问题上也相当的简单明了、在切换上下文时开销也比较小等优点,所以决定建立一个堆栈,将堆栈段设置为虚拟机地址空间最顶部的那个内存段,用来支持以后所有的操作。
  2 虚拟机CPU平台的核心模块的实现
  小型虚拟机软件系统ICU实际上是一个程序,由于在堆设计与实现过程中内存的分配和释放存在内存泄露问题和悬空指针等等诸多问题,急需解决。针对这种情况,我将采取的研究方法是使用一种基于顺序匹配算法的最先匹配算法对内存进行分配和回收。所谓顺序匹配算法既是允许内存以可变的尺寸进行分配和回收。这种解决办法的关键是需要使用某种数据类型的链接列表来跟踪数据堆里的已经分配和没有分配的内存块。这是因为链接列表这种数据结构只关心内存块的起始位置和结束位置,所以无论从数据结构的大小还是从搜索时间等等方面来讲,它对性能的影响会小很多。最先匹配算法既是把第一个尺寸足够大的可用内存块分配给最先提出请求的程序段。
  当小型虚拟机软件系统ICU程序成功正确的启动时,首先开始执行的是保存在字节码里的可执行文件里的指令。这些字节码可执行文件是一种二进制的文件,在启动ICU前在命令行上要先给出一个正确的字节码可执行文件名,这样才能保证ICU成功正常的运行。字节码可执行文件里主要是一些字节长度和指令,小型虚拟机软件系统明确知道这些字节码指令的作用,程序开始工作后,ICU将不断的从存储器里将字节码文件里的指令加载到已经开辟出来的内存空间里,然后开始执行这些指令。
  小型虚拟机软件系统ICU的生命周期可以划分为五个阶段。第一阶段建立系统的出错日志;第二阶段处理命令行数据;第三阶段构造虚拟CPU环境;第四阶段字节码的验证阶段;第五阶段执行指令阶段。这五个阶段的组织形式是按顺序发生的。当虚拟机在命令行上成功启动后,小型虚拟机软件系统就已经进入到它自己的第一个阶段建立系统的出错日志,然后进入第二阶段在命令行处理数据,如果一切正确,就会进入到第三个阶段也就是成功的建立起虚拟CPU的基本执行环境,然后进入第四阶段对字节码进行验证的阶段。当字节码指令全部通过验证检查之后,真正的执行阶段就开始了。执行阶段位于小型虚拟机软件系统生命周期中的最后一个阶段。虚拟机不断连续地执行字节码指令,直到处理完所有的指令和数据或者是遇到极其严重的问题后方能截止。和C++语言写成的绝大多数程序一样,小型虚拟机软件系统ICU的基本操作是从main函数开始执行的,小型虚拟机软件系统生命周期中的五个阶段将通过这个函数来启动和执行。以下为main函数主体。
  Void main(int grac,char *grav[])
  {
  Struct cmdline aq;
  /*开始建立出错日志*/
  Setuperrorfile();
  ……
  /*处理命令行数据*/
  Dbg_maino(invoking handlearguments()\n);
  C1=handlergrments(grac,grav);
  ……
  /*初始化虚拟环境*/
  Dbg_maino(invoking initICU()\n);
  ……
  /*字节码验证*/
  Dbg_maino(invoking reformat()\n);
  ……
  /*执行指令*/
  Dbg_maino(invoking run()\n);
  ……
  }/*end main*/
  综上所述,小型虚拟机软件系统ICU的核心模块的设计与分析基本全部完成,我的大致设计理念就是用C++语言实现虚拟CPU平台的核心模塊的设计与实现,主要包括虚拟寄存器的实现。对虚拟机的一些关键技术进行了探讨和研究。
  参考文献
  [1] Bill Blunden.虚拟机的设计与实现[M].机械工业出版社,2003.
  [2] 朱成光.栈式虚拟机的开发运行平台的设计与实现[D].硕士学位论文,2007.
其他文献
文章对上海石化的Cl-甲、乙混合酸塔器选用00Cr20Ni25Mo4.5Cu钢17年来的使用与腐蚀情况作了讨论与分析,并提出了防腐蚀改造建议。
文章对防静电涂料进行了综述,并重点介绍了PE-8810型油罐专用防静电涂料的性能及技术指标。
从总体上看,高校校办产业已开始进入稳定发展时期,校办产业的作用已为人们所认识。与此同时,因各校体制不同、专业性质不同、地区情况不同以及学校管理改革的差异,也使校办产
通过对宝浪油田注水井油管内壁腐蚀产物及注水水质的分析研究,得出了宝浪油田注水井油管内壁的腐蚀主要是氧去极化腐蚀,同时存在SRB细菌腐蚀和HCO3^-腐蚀的结论。
作为广播电视台的关键性基础设施,中波广播发射技术的应用在很大程度上提高了广播信息传输的效率及质量,有利于推动我国的广播发展进程。在现代社会发展的背景下,听众愈加注
基于FCC硫转移机理,开发了不降低系统催化剂活性的LST-1型液体硫转移助剂。实验室实验和工业应用结果表明:使用该剂可使FCC再生烟气的SOx浓度降低50%;不仅减轻了环境污染,而且可减缓再生系统的设备
摘 要:学生在学习机械制图课程时,在立体与平面图形这一对矛盾的相互转化问题是学习的难点,如何帮助学生解决这一问题,在教学中充分发挥轴测图在教学中的作用,通过轴测图辅助教学方法改革,学生们的思路开扩,空间思维能力增强,看图和画图水平有所提高,学生们对制图课更加感兴趣,增强了学生学习的自信心。  关键词:机械制图课程 轴测图辅助教学方法 难点 平面图形 空间立体 兴趣 自信心  中图分类号:G420
<正> 在现今经济生活中,往往可以看到一些规模、实力大体相当的大学,凡是把握住资金运动规律和运筹技巧的,资金环境就比较轻松,反之,则资金周转不灵,负债累累,陷入困境。因此
一、实施背景 目前,会计电算化在我国越来越受到人们的重视,它给会计工作带来了新的契机,使会计人员从繁重、复杂、重复的工作中解放出来,而把主要精力投入到管理、决策中,为
本文在光的折射定理的基础上,将费马定理中光程的概念与水库管道建设费用相类比,利用光束在两点间传播时,光程最小的原理,设计了一种使包括公共管道和非公共管道在内的水库灌