KVM 实现机制

KVM 实现机制

ID:41298986

大小:189.41 KB

页数:13页

时间:2019-08-21

KVM 实现机制_第1页
KVM 实现机制_第2页
KVM 实现机制_第3页
KVM 实现机制_第4页
KVM 实现机制_第5页
资源描述:

《KVM 实现机制》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、KVM实现机制1.概述1.KVM简介2.处理器虚拟化1.VT-x技术2.KVM实现3.内存虚拟化1.VT-x内存虚拟化介绍1.基于VTLB的内存虚拟化2.基于EPT的内存虚拟化2.KVM实现1.客户物理内存管理2.VTLB实现1.概述1.1.KVM简介KVM是一个基于Linux内核的虚拟机,它属于完全虚拟化范畴,从Linux-2.6.20开始被包含在Linux内核中。KVM基于x86硬件虚拟化技术,它的运行要求IntelVT-x或AMDSVM的支持。一般认为,虚拟机监控的实现模型有两类:监控模型(Hypervisor)和宿主机模型(Host-based)。由于监控模型需要进行处理器

2、调度,还需要实现各种驱动程序,以支撑运行其上的虚拟机,因此实现难度上一般要大于宿主机模型。KVM的实现采用宿主机模型(Host-based),由于KVM是集成在Linux内核中的,因此可以自然地使用Linux内核提供的内存管理、多处理器支持等功能,易于实现,而且还可以随着Linux内核的发展而发展。另外,目前KVM的所有I/O虚拟化工作是借助Qemu完成的,也显著地降低了实现的工作量。以上可以说是KVM的优势所在。本文仅分析KVM中与IntelVT-x相关的实现,不考虑KVM中与AMDSVM相关的实现,因此有关术语的使用与IntelVT-x保持一致。2.处理器虚拟化2.1.VT-x

3、技术我们知道处理器一般存在应用编程接口和系统编程接口。对于x86处理器来说,应用编程接口仅向应用程序暴露了通用寄存器、RFLAGS、RIP和一组非特权指令,而系统编程接口向操作系统暴露了全部的ISA(InstructionSetArchitecture)。传统的进程/线程模型也是对处理器的一种虚拟化,但只是对处理器的应用编程接口的虚拟化,而所谓的系统虚拟化(systemvirtualization)是要实现处理器系统编程接口的虚拟化。从这个角度讲,系统虚拟化与进程/线程模型相比并无本质的区别。处理器虚拟化的本质是分时共享。实现虚拟化需要两个必要条件,第一是能够读取和恢复处理器的当前

4、状态,第二是有某种机制防止虚拟机对系统全局状态进行修改。第一个必要条件没有必要一定由硬件来实现,虽然硬件实现可能比软件实现更为简单。例如,x86处理器对多任务,也就是应用编程接口虚拟化,提供了硬件的支持,软件通常只需要执行一条指令,就可以实现任务切换,处理器硬件负责保存当前应用编程接口的状态,并为目标任务恢复应用编程接口的状态。但操作系统并不一定要使用处理器提供的这种虚拟化机制,完全可以使用软件来完成应用接口状态的切换。例如,Linux就没有使用x86处理器提提供多任务机制,完全依赖软件实现任务切换。第二个必要条件一定要由硬件来实现,通常处理器采用多模式操作(multi-modeo

5、peration)来确保这一点。在传统x86处理器上,共有4种模式的操作,也就是常说的4个特权级。虚拟机(这里指进程/线程)通常运行在特权级3上,而虚拟机监控器(这里指操作系统)运行于特权级0上,进程/线程的所有访问全局的操作,如访问共享的操作系统所在的地址空间,访问I/O等等,均会导致异常的发生,被操作系统所截获并处理,使操作系统有机会向进程/线程提供一个虚拟的世界。系统虚拟化与进程/线程模型相比并无本质的区别。x86处理器完全有机会以较小的代价提供对系统虚拟化的支持,但很可惜Intel没有考虑那么长远。x86的4个特权级对于实现系统虚拟化已经足够了,但传统的x86处理器上,许多

6、特权指令要求必须在特权级0上执行,如LGDT,因此通常操作系统都占用了特权级0,也就没有特权级供虚拟机监控器使用了。为此,许多基于传统x86处理器的虚拟化软件不得不采用ringdeprivileging方法,让操作系统运行于特权级1,而由虚拟机监控器使用特权级0。ringdeprivileging方法带来了许多问题,包括:ringaliasing、addressspacecompression、nonfaultingaccessingtoprivilegedstate、adverseimpactonguesttransitions、interruptvirtualization、a

7、ccesstohiddenstate等问题,通常将以上问题统称为x86平台的虚拟化漏洞。ringaliasing问题是指,采用ringdeprivileging方法时,由于处理器的CPL保存在CS的低两位,所以操作系统通过执行PUSHCS指令和一条POPEAX指令可以很容易发现其目前不在特权级0上执行,这违背了虚拟化对操作系统透明的原则。addressspacecompression问题是指,操作系统通常期望能够访问整个4GB线性地址空间,但虚拟机监控器可能也需要占用

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。