虚拟化的分类及作用

关于虚拟化的概念我这里就不说了,不就是通过虚拟化技术将一台计算机虚拟成多台逻辑计算机嘛,没啥说的。今天要说的是虚拟化的种类,一般来说大家接触的比较多的可能是系统虚拟化和桌面虚拟化,其实除了这两种,还有其他类型的虚拟化,首先大家先来看一段引用内容了解虚拟化技术的重要意义!

 操作系统(内核)需要直接访问硬件和内存,因此它的代码需要运行在最高运行级别Ring0上,这样它可以使用特权指令,控制中断、修改页表、访问设备等等。

    应用程序的代码运行在最低运行级别上ring3上,不能做受控操作。如果要做,比如要访问磁盘,写文件,那就要通过执行系统调用(函数),执行系统调用的时候,CPU的运行级别会发生从ring3到ring0的切换,并跳转到系统调用对应的内核代码位置执行,进而完成设备访问,完成之后再从ring0返回ring3。这个过程也称作用户态和内核态的切换。

那么,虚拟化在这里就遇到了一个难题,因为宿主操作系统是工作在ring0 的,客户操作系统就不能也在 ring0了,但是它不知道这一点,以前执行什么指令,现在还是执行什么指令,但是没有执行权限,这时就会出现“非法指令”等异常错误信息。这时,虚拟机就要通过VMM来避免上述错误的发生,根据其实现原理的不同,共有三种实现技术:全虚拟化、半虚拟化、硬件辅助的虚拟,所以接下来咱们就聊聊相关的虚拟化技术。

 

     

1)完全虚拟化:所谓的完全虚拟化就是使用Hypervisor这种中间软件在虚拟服务器和底层硬件之间建立一个抽象层,这个抽象层在底层起到了中介的作用,用于传递指令,而且完全虚拟化还有一个优势,它几乎能让任何一款操作系统不经过改动就能运行在虚拟服务器上,并且它们并不知道自己运行在虚拟化环境中。在实现完全虚拟化的过程中,Hypervisor运行在裸硬件上,充当的是主机的操作系统,由Hypervisor管理的虚拟服务器来运行客户端操作系统(Guest  OS),ESXI就是通过这种方式实现的,看一下下面的图示就可以大致了解完全虚拟化的实现方式

2)准虚拟化:准虚拟化技术要求Hypervisor管理各个虚拟机让他们彼此独立,与完全虚拟化不同的是这项技术的实现需要改动客户机操作系统,让虚拟机以为自己运行在虚拟化环境中,其响应能力基本上等同于未经过虚拟化处理的服务器。客户操作系统集成了虚拟化方面的代码,使得操作系统自身能够与虚拟进程进行很好的协作。

   我在这里先对上面讲述的两种虚拟化技术做一个小的要点分析,通过前面引用的内容可以知道这两种虚拟化技术可以用来避免内核级别指令发布的异常现象,但是二者究竟采用了何种方式呢?先说第一种完全虚拟化,完全虚拟化是将虚拟机发出的指令进行了翻译,客户操作系统运行在Ring 1,它在执行特权指令时,会触发异常,VMM(充当宿主机操作系统)捕获到这个异常信息之后进行翻译模拟处理(避免冲突),最后返回到客户操作系统内,客户操作系统认为自己的特权指令工作正常,继续运行;而准虚拟化之所以要对客户机操作系统进行改动,就是为了将那些在完全虚拟化中需要翻译的命令(不能被虚拟化的命令)替换掉,然后通过超级调用(hypercall)直接和底层的虚拟化层hypervisor来通信,hypervisor 同时也提供了超级调用接口来满足其他关键内核操作,比如内存管理、中断和时间保持。这种做法省去了全虚拟化中的捕获和模拟,大大提高了效率,同时也提供了与原操作系统相近的性能。但是由于需要修改操作系统内核,对于非开放的操作系统,如Windows,则无法支持。

注意:下划线标注的内容纯属个人理解,不一定正确,有兴趣的朋友可以深入研究一下,如果哪里理解的有问题,希望各位朋友及时指正!!!

    除了上面说的两种虚拟化,还有桌面虚拟化、硬件虚拟化等等,这里就不过多的去介绍这些概念了,没啥意义。今天之所以写了这篇文章,最主要还是想给大家说一说我引用的那部分内容,这些才是硬菜。

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金陵大掌柜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值