读书笔记---xen虚拟化

在cup切换进程的时候,cpu是运行在特权级别,这允许它有一些特殊的操作,譬如用物理地址直接访问内存,而这在通常是不被允许的。为了让cpu达到真正的全部虚拟化,有一个人提出了一个概念,他开始把指令分为三种类型。
1,特权指令。
2,控制指令,用于改变系统种的资源配置,譬如转换虚拟地址到物理地址,与设备通信,操作全局控制寄存器。
3,表现指令,随着资源配置的不同而表现出不同的效果,如在虚拟地址上进行存储和加载指令。

首先,计算机硬件为直接运行在起上的软件(操作系统)提供的接口是一组指令集合ISA,不同的处理器硬件提供的接口不经相同。例如Iterl奔腾的接口就是著名的x86指令集合,它基于CISC,而IBM公司生产的power系列就是基于RISC。理论上,如果操作系统希望在一个特定的硬件上运行,就必须遵守和使用该硬件提供的指令集合。

再次,为了方便上层程序的开发,一个完善的操作系统往往会提供一组程序开发库(lib),这些库为应用程序的编写提供了大量的应用变成接口(API)。如c库。

而程序库在和操作系统交互时候,是用的系统调用。




虚拟化技术采用的抽象层次可以在图1-1所示的几个层中自由选取。而实际上,选择的多样性,就决定了虚拟化技术的多样性。然而,虚拟化技术的实质是一样的:将底层的资源进行分区,并向上层提供特定的和多样化的执行环境。

虚拟机VM是指在一个硬件平台上模拟多个独立的、ISA结构和实际硬件相同的虚拟硬件系统,在每个虚拟硬件系统上都可已运行不同的OS,这些OS通过虚拟机监视器VMM访问实际的物理资源。




混合模式集合在结构上与独立监控模式类似,VMM直接运行在裸机上,具有最高的特权及,起上运行VM,区别在于:混合模式中的MM相对小很多,它只是负责向Guest OS 提供一部分基本的寻及服务,例如CPU和内存等,而把I/O设备的虚拟交给了一个特权VM来执行。由于充分利用了原来操作系统的设备驱动,VMM本身并不含有设备的驱动。xen所采用的就是混合模式。




在VMM对机器硬件资源的虚拟化过程中,CPU虚拟被认为是最为重要的一个环节。只有在保证各个虚拟机的指令能够被正确执行,各个虚拟机之间不相互影响,及指令的执行结果补钙变其他虚拟机状态的情况下,才能保证整个虚拟机环境的正确和有效。
cpu虚拟化是为每个虚拟机提供一个或多个虚拟cpu及vcpu。多个vcpu分时复用物理cpu,任意时刻一个物理cpu只能被vcpu使用。

虚拟化场景下,要求将Guest OS内核的特权解除,从原来的0降低到1或者3。这部分特权指令在Guset OS中发生的时候,就会产生Trap,被VMM捕获,从而由VMM完成。这就是虚拟的本质方法,特权解除和陷入模拟。
不会触发异常的特权指令也是敏感指令,也即,敏感指令范围更大,有些敏感指令不能触发异常,这是x86设计的原因。

在引入虚拟化后,位于虚拟机内的Guest OS 就不再处于CPU最高级别状态下。因此,原本需要在最高级别状态下执行的指令就不能够直接执行,而是需要交给由VMM处理后在执行。这部分指令称为敏感指令,及当执行这些指令时候,都会产生Trap,并被VMM捕获,交由VMM模拟执行。这些敏感指令主要包括如下指令:
1,企图访问或修改虚拟机模拟或机器状态的指令
2,其他访问或修改敏感寄存器或存储单元,如时钟寄存器,终端。
3,所有的IO指令。
在一般情况下,如果不处于特权级别,执行特权指令会trap,这时候就可以被VMM捕获。
但VMM要捕获所有的敏感指令。如果指令集合支持虚拟化就必须满足所有的敏感指令都是特权指令这一要求,即当GuestOS运行在非特权级别时候,GuestOS执行任意敏感指令都trap,这会被VMM捕获而将控制权转给VMM上,从而保证了虚拟机环境的等价性和资源的可控性。

遗憾的是x86架构并不满足这个田间,某些敏感指令不属于特权指令,因此在执行这些敏感指令时候,并不会自动的产生Trap而被VMM所捕获。这种敏感而非特权指令的指令称为临界指令,这类临界指令在x86种有17个之多,主要包括敏感寄存器指令和保护系统指令。
1,敏感寄存器指令,SGDT,SIDT,SLDT。
分别存储全局描述符寄存器的值到一个6B的存储单元,中断描述副寄存器值到6B的存储单元,本地描述副寄存器的值到一个16位或32的寄存器种或存储单元中。

尽管SGDT,SIDT,SLDT指令只能被操作系统使用,但是并没由设为特权指令。印尼次处于级别较低的Guest OS执行这些指令能够成功,并获得相应的寄存器的值,且不会trap被vmm捕获。但是,由于硬件平台种相应的真实的GDTR,IDTR,LDTR都只有一个,因为位于不同的虚拟机种的Gurest OS所获得的值只能是同一个,这显然是不正确的。因此VMM应该为每个GuestOS配备一套虚拟的GDTR,IDTR,和LDTR,以便GuestOS访问这些寄存器的操作能够被VMM捕获,并重新访问相应的虚拟寄存器。


下面介绍了xen解决x86下cpu虚拟和内存虚拟的方案。
1,cpu虚拟:超级调用
将问题的重心由VMM移动到产生问题的Guest OS 自身,通过主动方式由GuestOS来处理这些指令,而不是被动地交由VMM来处理,在这种设计理念下,修改Guest OS内核成了必然选择。
首先是要处理临界指令的问题,然后是处理特权指令的问题。
在运行在特权级别1的Guest OS 的一部分,将起没有权限执行的指令交由运行在特权级别0的VMM代理执行,这在很大程度上与传统操作系统种的系统调用是类似:系统调用的作用就是将应用程序无权执行的程序交由操作系统代理执行。因此xen向Guest OS 提供的一系列“系统调用”,以方便Guest OS  调用。这部分“系统调用”就是超级调用。

超级调用不仅在设计理念上与系统调用类似,在实现上两者也是及其相似的。。例如,系统调用使用INT 80作为系统调用指令,而超级调用使用INT82.在发送系统调用是,通过寄存器EAX传递系统调用号以区分不同的系统调用。而超级调用同样采用EAX来传递第一关类别参数,以区分不同类别的超级调用。


如果说能够修改guest OS的内核是半虚拟化的核心,那么超级调用和事件通道则构成了半虚拟化的基础。
2,内存虚拟之:分段保护。
在GuestOS向xen申请超级调用时候,处理使用EAX传递超级调用号外,还会用到EBX,ECX等寄存器传递参数。通常情况下,寄存器种保存的都是一个参数结构提的指针,因此xen在处理超级调用参数时候需要访问Guest OS所在地址空间的内存页面。一般的解决办法是完成上下文切换后将需要的内存页因设到xen所在的内存空间。但是频繁地在xen和Guestos见进行切换和内存映射会使系统性能收到很大的印象。

因此,将xen和Guestos地地址合并就成为十分有效的解决方式。由于在同一个地址空间,xen执行超级调用时候不必进行上下文的切换,而且也充分发挥了xen的最高特权的优势,使得xen不需要巾帼内存映射就能直接访问GuestOS的内存页面。

3,机制和策略的分离
xen系统的VMM采用的是混合模式,存在一个经过授权的特权VM系住VMM参与管理,因此,由xen来完成机制的指定,而将策略的具体实现留到特权VM去负责的设计模式就成为了最可行的方案。


4,精简的VMM
尽可能专注基本机制的制定,而将具体的食物交由Dom0去管理。例如,网络分发是Xen1.0的一个部分,但大多数GuestOS都提供了更具灵活性的网络桥接技术,因此,后来,xen就将网络功能屈辱到了Dom0,利用操作系统原有的技术,减少了VMM的代码。


2.1.2虚拟域
相对于Dom0来说,DomU受到了许多限制,首当其冲的就是对硬件设备的访问。无论是HVM还是一般的Dom0都不能直接访问物理设备,必须借助Dom0或IDD才能完成。下面以网络发包为例来说明DomU通过Dom0访问设备的一般步骤。
GuestAPP要发送的数据包,经过TCP/IP栈后,并不是送到一般的网络接口驱动程序(Network Interface Driver)中,而是送到DomU内网卡类(即相似)的前端设备驱动种,然后送入xen提供的共享内存种,同时向Dom0内的后端设备驱动发出处理请求后,经数据包从共享内存种取出,位于Dom0内的TCP/IP栈进行检查和处理,最后将通过检查的数据包经由原生网卡驱动送到真实的网卡中发送。


2.2 CPU虚拟化
通过分段保护机制,位于特权及别1的GuestOS可以访问那些位于特权及别3的应用程序的内存,但应用程序不能访问GuestOS的内存。





































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值