论文部分内容阅读
虚拟机作为一种软件工具已经在各个领域得到广泛的应用,如处理器仿真、反病毒、系统调试器和网络虚拟主机。因此,虚拟机技术一直是当今计算机学科研究的热点之一。x86作为目前应用最广的体系结构,在PC、工业控制等领域仍占据着不可动摇的地位。一方面,商业化x86虚拟机产品已经得到业界认可,另一方面,一些非营利组织和团体也在积极研究x86虚拟机并取得了不少的成果。本文结合开源项目Bochs,具体分析了虚拟机的原理和实现中一些关键技术问题。Bochs作为指令级的x86模拟器,其工作除了对x86处理器的基本指令集和部分扩展指令集的取指-译码-执行过程进行软件仿真外,还模拟了包括存储器和常用的外设在内的一套完整的PC系统。论文首先对虚拟机的相关概念和研究现状作了综述,接下来引入开源项目Bochs。先结合虚拟机软件设计的思想对项目进行了宏观介绍。然后从源码出发,对虚拟机CPU和PC系统的具体实现作了细致的剖析。包括CPU部分的寄存器、MMU单元以及取指和译码过程实现和PC部分对存储器与I/O访问管理等。在完成了对各部件工作原理解析后,论文对虚拟机实现过程中的相关问题作了深入探讨,如定时器问题、Cache和TLB的模拟等。此外,通过在Bochs源码中加入统计代码,进行一组实验,包括指令统计和高速缓存命中率实验,文中给出了实验结果并作了简要论述。本文的另外一个工作是实现了一个可视化x86指令级调试器程序――IA-32 Debugger。IA-32 Debugger的编写建立在Bochs虚拟机项目基础之上,通过在虚拟机内部插入控制和监视代码。实现了主界面和虚拟机窗口的数据同步和数据交换。文中给出了IA-32 Debugger工程的实现过程,包括设计思路,工程组织以及各部分具体实现。论文的最后,结合其它虚拟机软件的优化技术以及创新点,对虚拟机及虚拟化技术发展趋势作了展望。