处理器虚拟化简介

处理器虚拟化是虚拟化技术的核心,通过VMM控制处理器资源,模拟指令执行,保证客户机操作系统在非最高特权级上正确运行。VMM通过虚拟寄存器、上下文和虚拟处理器实现对敏感指令的模拟,确保指令行为正确。虚拟处理器提供与物理处理器一致的功能和行为,由物理处理器和VMM共同完成指令处理,允许VMM呈现与物理环境不一致的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、处理器虚拟化是VMM(Hypervison)中最核心的部分,因为内存或者I/O的指令本身就是敏感指令,所以内存虚拟化与IO虚拟化都依赖与处理器虚拟化的正确实现。

1)、指令模拟

VMM运行在最高特权级,可以控制处理器上所有关键资源;而客户机操作系统运行在非最高特权级。所以其敏感指令会陷入到VMM中通过软件的方式进行模拟。从客户机操作系统的角度而言,无论是一条指令是直接执行在物理处理器上,还是被VMM软件模拟,其期望的执行效果必须正确。所以处理器虚拟化的关键在于正确模拟指令的行为。

在介绍指令模拟之前,我们理解三个概念:虚拟寄存器、上下文和虚拟处理器。它们有助于理解虚拟处理器模拟指令。

从某种程度上来说,物理处理器无非包括了一些存放数据的物理寄存器,并且规定了使用这些寄存器的指令集,然后按照一段预先写好的指令流,在给定的部分寄存器来完成某种目的。

在没有虚拟化的环境里,操作系统直接访问物理处理器,处在最高特权级别,可以控制系统中所有关键资源,包括寄存器、内存和I/O外设等。但是当VMM接管物理处理器后,昔日的操作系统称为客户机操作系统而降级到非最高特权级别上,这时,其试图访问关键资源的指令就称为了敏感指令。VMM会通过各种手段,保证这些敏感指令的执行能够触发异常,从而陷入到VMM进行模拟,以防对VMM自身的运行造成破坏。

所以,当客户机操作系统试图访问关键资源的时候,该请求并不会真正发生在物理寄存器上,相反,VMM会通过准确的模拟物流处理器的行为,而将其访问定位到VMM为其设计与物理寄存器对应的“虚拟”的寄存器上。当然,从VMM实现来说,这样的虚拟寄存器往往是在内存中。

当处理器取下一条指令MOV CR0,EAX后,发现特权级别不符合,则抛出异常,VMM截获这个异常之后模拟处理器的行为,读取EAX的内容并存放到虚拟的CR0中。由于虚拟的CR0存放在VMM为该虚拟机设置的内存区域里,因此该指令执行的结果并不会让物理的CR0的内容发生改变。等到下一次,当虚拟机试图读CR0时,处理器也会抛出异常,然后由VMM从虚拟的CR0而不是物理的CR0中返回内容给虚拟机。

在没有虚拟化的环境里,操作系统直接负责处理器管理,负责进程间调度和切

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值