虚拟化实现架构(处理器虚拟化)
2015-12-17 14:54
344 查看
首先需要理解一个概念——可虚拟化架构与不可虚拟化架构
特权指令:系统中用来操作和管理关键系统资源的指令,这些指令只有在最高特权级上可以执行。如果在非最高特权级上运行,特权指令会引发一个异常,处理器会陷入到最高特权级,交由系统软件来处理。
敏感指令:在虚拟化世界,操作特权资源的指令,包括修改虚拟机运行模式或者下面物理机状态;读写敏感的寄存器或是内存,例如时钟或者中断寄存器;访问存储保护系统、内存系统或是地址重定位系统以及所有的I/O指令。
所有的特权指令都是敏感指令,然而并不是所有的敏感指令都是特权指令。判断一个结构是否可虚拟化,就在于该结构对敏感指令的支持上,如果在某些结构上所有敏感指令都是特权指令,则它是可虚拟化的结构;否则,如果它无法支持在所有敏感指令上触发异常,则是不可虚拟化结构,也就是所谓的虚拟化漏洞。
重要概念:虚拟处理器、虚拟寄存器、上下文
当虚拟机操作系统访问关键资源时,该请求不会直接访问物理寄存器,VMM会模拟物理处理器的行为,将其访问定位到与物理寄存器相对应的虚拟寄存器上,这样的虚拟寄存器往往是在内存中。
在操作系统进行调度时,需要保存当前进程的寄存器状态到内存中,并将下一个进程寄存器状态值恢复到相应寄存器中,这些寄存器的状态集合就是进程的上下文,虚拟机中对敏感指令的处理都会试图访问和修改物理机上所有寄存器,这种访问会被VMM重定位到虚拟机上,这就需要保存虚拟寄存器上下文。
无论是定义虚拟寄存器还是虚拟处理器,还是利用上下文进行虚拟处理器调度,都是让虚拟机执行的敏感指令陷入下来,让VMM进行模拟,而不是直接作用的真实硬件上。
陷入方式:
1、基于处理器保护机制触发的异常
2、虚拟机主动触发异常,也就是通常所说的陷阱
3、异步中断,包括处理器内部的中断源和外部设备的中断源
特权指令:系统中用来操作和管理关键系统资源的指令,这些指令只有在最高特权级上可以执行。如果在非最高特权级上运行,特权指令会引发一个异常,处理器会陷入到最高特权级,交由系统软件来处理。
敏感指令:在虚拟化世界,操作特权资源的指令,包括修改虚拟机运行模式或者下面物理机状态;读写敏感的寄存器或是内存,例如时钟或者中断寄存器;访问存储保护系统、内存系统或是地址重定位系统以及所有的I/O指令。
所有的特权指令都是敏感指令,然而并不是所有的敏感指令都是特权指令。判断一个结构是否可虚拟化,就在于该结构对敏感指令的支持上,如果在某些结构上所有敏感指令都是特权指令,则它是可虚拟化的结构;否则,如果它无法支持在所有敏感指令上触发异常,则是不可虚拟化结构,也就是所谓的虚拟化漏洞。
重要概念:虚拟处理器、虚拟寄存器、上下文
当虚拟机操作系统访问关键资源时,该请求不会直接访问物理寄存器,VMM会模拟物理处理器的行为,将其访问定位到与物理寄存器相对应的虚拟寄存器上,这样的虚拟寄存器往往是在内存中。
在操作系统进行调度时,需要保存当前进程的寄存器状态到内存中,并将下一个进程寄存器状态值恢复到相应寄存器中,这些寄存器的状态集合就是进程的上下文,虚拟机中对敏感指令的处理都会试图访问和修改物理机上所有寄存器,这种访问会被VMM重定位到虚拟机上,这就需要保存虚拟寄存器上下文。
无论是定义虚拟寄存器还是虚拟处理器,还是利用上下文进行虚拟处理器调度,都是让虚拟机执行的敏感指令陷入下来,让VMM进行模拟,而不是直接作用的真实硬件上。
陷入方式:
1、基于处理器保护机制触发的异常
2、虚拟机主动触发异常,也就是通常所说的陷阱
3、异步中断,包括处理器内部的中断源和外部设备的中断源
相关文章推荐
- CSDN网站系统升级公告
- 网站发布
- python编程非常有用的网站
- IIS发布网站遇到的问题
- 有用的iOS网站地址
- 双重OAuth 2.0架构
- ubuntu android环境搭建-转载自google官方网站
- 三层架构
- 关于高可用架构的思考(1-历史与纲要)
- ssh代理上国外任何网站,ssh教程
- Maven构建SSM架构,并分离层次,使用Maven 组织多项目
- Windows平台分布式架构实践 - 负载均衡
- 解决IIs 服务器 用户浏览网站需要提供用户名的问题
- 支付宝钱包系统架构内部剖析(架构图、消息系统)
- 12月上旬国内网站流量统计TOP5:火狐中文网上榜
- 构建高并发高可用的电商平台架构实践
- Code Kata编码套路练习网站参考
- RESTful 架构风格概述
- 百宝云网站监控系统运行教程
- 屏蔽各大视频网站播放前15秒30秒广告