虚拟技术总结
来源:互联网 发布:手绘头像软件是哪款 编辑:程序博客网 时间:2024/06/10 04:07
支持虚拟技术的处理器有一个广义指令集(extra instruction set),代号为Virtual Machine Extensions,或者简称VMX。VMX为CPU带来了10条新的虚拟指令:VMPTRLD、VMPTRST、VMCLEAR、VMREAD、VMWRITE、VMCALL、VMLAUCH、VMRESUME、VMXOFF和VMXON。
在虚拟技术下有两种工作模式:根(root)模式和非根(non-root)模式。一般来说,只有虚拟控制软件(被成为是Virtual Machine Monitor,VMM)工作在根模式。
实际的硬件平台通过VMM与各虚拟机打交道,VMM是建立在处理器、芯片组硬件平台上的一层系统软件,其作用是允许多操作系统共享共同的硬件平台,并且允许应用程序不经修改即能运行在多VM环境中。
软件在进入虚拟模式之前,首先要执行VMXON指令,然后才能成为VMM软件。VMM软件能够通过VMLAUNCH指令进入每一个虚拟机器,若要退出则使用VMRESUME指令。VMM软件若想结束虚拟模式,则使用VMXOFF指令。下面是具体的操作细节:
带有虚拟技术的处理器具有额外的指令集,叫做Virtual Machine Extensions,简称VMX。VMX给CPU带来了10个新的虚拟专用指令:VMPTRLD, VMPTRST, VMCLEAR, VMREAD, VMWRITE, VMCALL, VMLAUCH, VMRESUME, VMXOFF and VMXON
基于硬件和网络虚拟化技术,自主开发的VMM(虚拟监控机)产品(基于KVM/XEN/LXC系统),这是公司产品线Iaas平台产品线的核心部分。
在linux内核上开发,基于分布式/并行计算及大规模的网络环境下实现VMM。
虚拟化原理
虚拟机是对真实计算环境的抽象和模拟,VMM 需要为每个虚拟机分配一套数据结构来管理它们状态,包括虚拟处理器的全套寄存器,物理内存的使用情况,虚拟设备的状态等等。VMM 调度虚拟机时,将其部分状态恢复到主机系统中。并非所有的状态都需要恢复,例如主机 CR3 寄存器中存放的是 VMM 设置的页表物理地址,而不是 Guest OS 设置的值。主机处理器直接运行 Guest OS 的机器指令,由于 Guest OS运行在低特权级别,当访问主机系统的特权状态(如写 GDT 寄存器)时,权限不足导致主机处理器产生异常,将运行权自动交还给 VMM。此外,外部中断的到来也会导致 VMM 的运行。VMM 可能需要先将 该虚拟机的当前状态写回到状态数据结构中,分析虚拟机被挂起的原因,然后代表 Guest OS 执行相应的特权操作。最简单的情况,如Guest OS 对 CR3 寄存器的修改,只需要更新虚拟机的状态数据结构即可。一般而言,大部分情况下,VMM 需要经过复杂的流程才能完成原本简单的操作。最后 VMM 将运行权还给 Guest OS,Guest OS 从上次被中断的地方继续执行,或处理 VMM “塞”入的虚拟中断和异常。这种经典的虚拟机运行方式被称为 Trap-And-Emulate,虚拟机对于 Guest OS 完全透明,Guest OS 不需要任何修改,但是 VMM 的设计会比较复杂,系统整体性能受到明显的损害。
Red Hat产品和技术总裁Paul Cormier表示:“KVM最大的好处就在于它是与Linux内核集成的。未来几年人们的关注焦点仍然集中在hypervisor上。hypervisor是操作系统的一项功能,自然能够被用户所接受。微软和Red Hat操作系统的不同中间件和管理功能将起到重要的作用。”
从Linux 2.6.20开始内核中已经开始集成KVM。因此,由Fedora社区开发的Fedora也开始支持KVM。Linux 2.6.20之后的Linux发行版本的内核中也都将KVM作为基本的hypervisor。
- 虚拟技术总结
- 云计算虚拟化技术总结
- KVM虚拟化网络优化技术总结
- KVM虚拟化CPU技术总结
- KVM虚拟化网络优化技术总结
- KVM虚拟化CPU技术总结
- KVM虚拟化网络优化技术总结
- KVM虚拟化网络优化技术总结
- 虚拟化技术--Xen知识总结
- 虚拟化技术--KVM知识总结
- 虚拟技术
- 虚拟技术
- 虚拟化、(完)全虚拟化、半虚拟化和准虚拟化技术个人总结
- 虚拟化技术性能总结:Zones, KVM, Xen
- (三)虚拟化技术重点笔记与总结
- 全虚拟技术、半虚拟技术和硬件虚拟
- 虚拟局域网技术简介
- 虚拟技术与安全
- Computer Science 学习第四章--CPU 指令集及指令处理
- Halcon学习笔记——常用算子
- DEV express 对Gridview某行的元素赋值
- Sql Server查询远程db 表数据到本地
- PC抓包Android
- 虚拟技术总结
- Scala的object
- 微店双11也狂欢!
- 算法练习--打印Cantor 数表
- js判断操作系统
- 基站使用api说明
- 算法练习--小球下落
- Android 自定义WheelView,时钟等自定义
- HEVC中一些英语简写