论文部分内容阅读
虚拟化技术从20世纪60年代诞生到现在,经历了几十年的低潮后,在90年代随着计算机技术的发展再一次发展起来。操作系统领域一直以来面临的一个挑战来自于应用程序间存在的相互独立性和资源互操作性之间的矛盾,即每个应用程序都希望能够运行在一个相对独立的系统环境下,不受其他应用程序的干扰,同时又能够以方便有效的方式和其他应用程序共享和交换系统资源。传统的计算机操作系统缺乏对程序间独立性的有效支持,因此发展了虚拟化技术来解决这些问题,达到同一个计算机平台上运行多个相互独立的操作系统的目标。虚拟技术在最近几年得到了飞速发展,能够有效地提高处理器的利用率,并且处理器厂商相继推出了硬件支持虚拟化的处理器、芯片组等。现在虚拟化技术正逐步在系统软件中得到广泛应用。本文首先研究了计算机虚拟化技术的基本理论和机制,从虚拟化技术分类出发,研究完全虚拟化实现原理,以及全虚拟化中处理器虚拟化、内存虚拟化的实现技术;然后以基于硬件辅助虚拟化技术为目标,研究虚拟机VMX操作模式,并对基于Linux的KVM虚拟化方案进行深入探讨。在研究和总结基于Linux的KVM虚拟机实现原理与关键技术基础之上,本文着重研究了内存虚拟化技术以及基于Intel VT-x虚拟化技术的EPT机制,结合EPT页表地址转换方法,在特定需求下,提出并实现了一种内存虚拟化中EPT机制的优化方案,并将该优化方案应用到实际项目中。本文在研究过程中,分别对Linux分页地址转换方法和虚拟机EPT页表地址转换方法进行了分析测试。实验和分析表明,通过对EPT实现机制优化,进行页表的预分配可以达到为客户机分配固定内存大小的效果。基于处理器虚拟化的技术,本文还进行了Intel VT-x的VMCS技术的研究,并以此为出发点研究了虚拟处理器的创建、初始化与运行的具体实现,并依赖于VMCS技术和Linux进程绑定技术研究了虚拟机与处理器核心绑定的技术,设计并实现了一种虚拟机与处理器核心绑定的方案。本文在研究中对提出的优化方案和实现方案分别进行了大量的测试,其中包括对内存虚拟化中EPT页表的优化、虚拟机绑定实现和客户机内存申请的测试并对测试数据进行统计分析。测试结果的分析表明,本文提出的EPT页表优化方案和虚拟机绑定取得效果,通过长时间运行以及Benchmark、自写测试程序的验证,系统稳定,具有实际应用意义。