一盏茶的时间来聊一聊---虚拟化

在这里插入图片描述

事不可去尽,话不可说尽,凡事太尽,缘份势必早尽

云计算

随着云计算的大力发展,云原生、serverless等云相关概念层出不穷,那么什么是云呢?

其实,云的本质就是开发者自己研发基础架构,应用开发者不需要关注基础设施,就像我们刚发明电的时候,工厂需要自己建电站,而现在,只需要电线和插座就可以上网。

云计算可以使我们按分钟甚至是秒级时间内获得计算、存储和操作系统等资源,尤其是serverless概念的提出,可以按照你应用的访问量进行收费,还可以进行毫秒级的弹性收缩,不由得感叹一下,时代的发展真是一日千里。

有了云计算,我们可以

  • 买走一个64核CPU机器中的0.1个CPU
  • 买走一个128G内存的机器中的512G内存
  • 还可以买走1/2台机器的三个小时的执行时间

当然,你们可能会好奇,云计算是如何实现这些神奇的功能的,这就引出了今天的主角----虚拟化

虚拟化

在计算机的发展史中,很多地方都出现了虚拟化这个词,用软件模拟计算机,出现了虚拟机;采用虚拟内存技术,可以使我们使用大小远远超出我们实际物理内存大小的内存;进程的概念又何尝不是对CPU的虚拟。

在虚拟化的舞台上,VMware和Docker是比较具有代表性的两种技术,VMware可以为我们的应用模拟出一台虚拟的计算机,称之为虚拟机,Docker可以为我们的应用提供一个完整的运行时环境,我们称之为容器,我们接下来就来好好聊聊他们

虚拟机

一个好的虚拟机的设计离不开三大特点 : 隔离、仿真、高效
隔离性: 指的是我们的虚拟机实例之间不可以相互影响,比如说,我们在一个实体电脑上同时运行跑着windows、mac、linux三台操作系统的虚拟机, 各个虚拟机之间不可以相互影响
仿真: 指的是我们的虚拟机用起来要像我们的真机一样逼真,包括开关机和各种硬件设备,其主要贡献就是使我们的进程在虚拟机环境下的运行效果和在真机是一样的,使得我们进行应用迁移的时候,不需要修改任何的源代码
高效: 指的是减少对CPU和其他硬件资源的占用,虽然我们本身在虚拟机中执行指令就会不可避免的造成额外的性能开销,但是我们还是要想办法将这个开销降到最低

虚拟机在最初设计的时候一种是依赖Hypovisor(虚拟机管理程序), 它是各个虚拟机和硬件交互的桥梁,通常硬件的设计假定是由单操作系统控制的,如果我们想让多个操作系统共享这些硬件,就需要通过Hypervisor来进行指令的翻译,将其要运行的指令翻译为目标机器上的二进制代码。种设计的瓶颈就在于他的性能,每一条指令都需要翻译一下才可以继续执行。

另外一种虚拟机的设计就切换世界,所谓切换世界,就是交接系统的控制权,比如说由虚拟机上的操作系统直接进入内核接管中断,称为实际机器的控制者,这样的条件下,程序的执行就变成了本地执行,效率要比上面那种翻译的方式要好很多。

容器

虚拟机虚拟的是一个计算机,而容器虚拟的只是一个执行环境,每一个容器都是一个独立的执行环境,直接被操作系统管理,不需要Hypovisor程序

在这里插入图片描述

虚拟化内存

我们的虚拟化内存技术的实现目标,和虚拟机是一样的,也是隔离、仿真和效率

隔离 : 在没有虚拟内存的时候,我们实现多进程是很麻烦的,因为各个进程之间没有他们独立的地址空间,很容易引发安全问题,比如说qq的进程修改了腾讯视频的进程数据

仿真 : 很好理解,使得进程使用虚拟内存的时候就跟使用真实的内存一样

效率 : 在没有虚拟内存的时候,我们运行多个进程,如果将要运行的进程所占的内存比较大的话,我们就得将其他的进程资源先放入到磁盘中,需要的时候,再拷贝回内存,这无疑增加了一次上下文切换的开销。在出现了虚拟化技术后,我们仍然没有放弃对效率的优化问题,使用了TLB等技术优化了内存页与内存框之间的查找速度。

当一个进程试图访问虚拟地址空间中的某个数据时,会经历下面两种情况的过程:

  1. CPU想访问某个虚拟内存地址,找到进程对应的页表中的条目,判断有效位, 如果有效位为1,说明在页表条目中的物理内存地址不为空,根据物理内存地址,访问物理内存中的内容,返回
  2. CPU想访问某个虚拟内存地址,找到进程对应的页表中的条目,判断有效位,如果有效位为0,但页表条目中还有地址,这个地址是磁盘空间的地址,这时触发缺页异常,系统把物理内存中的一些数据拷贝到磁盘上,腾出所需的空间,并且更新页表。此时重新执行访问之前虚拟内存的指令
  3. 在使用了TLB技术后,每一次的查找就会先搜索TLB,如果发现TLB中有,返回,若TLB中没有,就会去查找页表,返回页面,并将页面替换掉TLB中的不经常使用的页面(即加入到TLB中)

最后

虚拟化技术使得我们的计算机实现异构资源的重组利用,强化系统的可靠性以及容错性,并能够大幅增强系统的安全性。虚拟化技术的日渐完善加上计算机系统对虚拟化的支持利用,使虚拟化技术的性能开发利用的开销得到大大的缩减。现如今,高性能计算机体系正面向结构多层次、多方向、异构化、新局面的方向发展,虚拟化技术创新性地应用于高性能计算机系统,也必将使计算机系统的安全性和可靠性得到有效保障。使高性能计算机系统与虚拟化技术得到双向发展。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值