• 1631阅读
  • 1回复

天道酬勤2016 VT驱动 笔记1-2015-12-14 [复制链接]

上一主题 下一主题
离线啊冲
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2016-07-31
大家好,我是天道酬勤
QQ:394999482

VMX架构基础分为两种模式
    Root模式 non-Root 模式
VMCS结构是VMX架构下最基础最重要的数据结构
    分为6个区域,每个区域有若干字段
VM-Entry
    在VMX架构下,Guest运行在NON-Root模式下
    而Host运行在Root模式下
    从Root切换到NON-Root模式下(Host--->Guest)这个过程,被称为VM-Entry
VM-Exit
    在Guest运行过程中,会因某些事被迫返回Host环境(Guest--->Host),被称为VM-Exit
内存虚拟化
    VMX架构引进了EPT机制来实现对物理内存的虚拟化管理,使得每个VM在物理平台上都拥有独立的内存区域,
    而不受VMM以及其他VM的干扰,同时也避免了VM对VMM的干扰
中断虚拟化
    VMX架构下也实现了对Local APIC 的虚拟化管理,引入两个重要页面Access Page与Virtual Page
    从而实现访问和管理Virtual-APIC组件

//=============
虚拟化概述
英特尔提供了三个层面的技术
VT-x(for x86),他的实现框架是Virtual Machine Extensions(VMX),两种模式(root,non-root),分别支持Guest与Host软件的运行
VT-d(Driected I/O),这个实现在虚拟芯片组层上,提供了DMA remapping 与Interrupt remapping等技术来支持外部设备I/O访问的直接虚拟化
VT-c(Connectivity)部署在Intel的网络设备上,基于PCI总线域设备实现的虚拟化技术

主要学习VT-x

虚拟化之前,软件运行在物理机上,对物理资源的直接控制,比如中断请求,Guest的内存访问,设备的IO访问等。直接反映在物力资源上。

在虚拟化里,VMX(Virtual-Machine Extensions,虚拟机扩展)存在两种角色环境(VMM)虚拟机监管者,和VM虚拟机,
host端软件运行在VMM环境里,可以仅仅作为Hypervisor角色存在(作为全职的虚拟机管理者),或者包括VMM(虚拟机监管者)职能的Host OS

guest端软件运行在VM环境里,一个VM代表一个虚拟机实例,一个处理器可以有多个虚拟机实例存在,VM资源被虚拟化,每个VM都是独立的

guest软件访问的资源受到VMM监管,guest想要访问某些物力资源,VMM返回一个虚拟化的结果给guest,这个过程中可以修改其想要的结果(比如中断),返回一个并不真实的结果

设备不能跨越VMM直接访问资源(比如访问内存,或者中断请求),而Guest访问的也不是最终的物理地址,而是要经过EPT翻译的最终物理地址,如果设备通过DMA访问,则由VT-d来映射到他们的domain(区域)
//==============
虚拟设备
设备发生中断请求(产生ISR:中断服务例程),由VMM或者Host OS来处理
两种情况:
(1)设备属于Host,物理设备的ISR由VMM来执行
(2)设备分配给VM使用,那么ISR将在VM中运行

Host与Guest都有自己的IDT,Host的IDT就在Host里,Guest的对应是VMM反馈给他的IDT表,中断请求通过VMM给VM使用(使用注入事件)
如果外部中断控制权在Guest手里,那么VMM不监管或转发,有Guest自己执行
//==============
地址转换
Guest不能干扰VMM的执行(Guest与Host都要访问0x100000时)
VMM通过EPT(Extend Page Table)扩展页表来实现“Guest端物理地址到Host端物理地址”的转换

EPT原理与分页机制一样,经过多级转换产生最终的物理地址

开启EPT机制的时候有两个概念(GPA)(HPA) Guest/Host Paysical Address,HPA是真正的物理地址,没有启用的时候
GPA才能是真正的物理地址
//===============
设备的I/O访问
CPU自己发起的访问外部设备,通过PCI/PICE总直接到达,由Guest发起的,则经过VMM途径虚拟地址转化到达设备
//===============
VMX架构
VT-x --->VMX operation
CPU引入了一系列指令支持这个模式

VMXON 与VMCS区域

VMXON对应与VMM,VMM使用VMXON对一些数据进行记录和维护
每个VM对应自己的VMCS

VMX operation模式下处理器会自动维护“四个”指针
VMXON pointer 有时候也称作VMX指针
current-VMCS pointer 可以有多个,但同一时刻只能有一个
executive-VMCS pointer 与SMM-transfer VMCS pointer


检查VMX支持

通过CPUID指令检查CPU是否支持VMX
通过修改CR4.VMXE控制位,开启进入VMX允许,然后就可以执行VMXON指令了,否则会有异常

VMX运行在Root模式下,VM运行在non-Root模式下

Guest受到VMX的限制,部分指令行为也会发生改变
在VMX-non-Root模式下,Guest软件执行任何VMX指令(除VMFUNC指令外)都会导致VM-Exit的行为发生
另外执行MOV 对CRO寄存器设置时,行为将改变,导致CR0寄存器的值允许写入或被拒绝修改。
善者 慈悲心常在 无怨无恨 以苦为乐
默认压缩密码www.hifyl.com
文件分享密码问题:http://www.hifyl.com/read-htm-tid-4444.html
离线565352671

只看该作者 沙发  发表于: 2016-09-14
每天回復一次!
本人以學習為本
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个