容器面试题

虚拟化的三种方式

  1. 全虚拟化 :将非内核态指令模拟成内核态指令再交给cpu处理,中间要经过两重转换,因此效率低,但优点是不会修改GuestOS,所以全虚拟化的VMM可以安装绝大部分操作系统,全虚拟化架构下的GuestOS运行在cpu的用户态(Ring 3),因此不能直接操作硬件设备。为解决这一问题,引入特权解除和陷入模拟机制。典型的全虚拟化软件:VMWare Hyper-V KVM-x86
  2. 半虚拟化:半虚拟化技术是需要GuestOS协助的虚拟化技术,因为在半虚拟化VMM中运行的GuestOS内核都经过了修改。一种方式是修改GuestOS内核指令集中包括敏感指令在呢诶的内核态指令,是HostOS在接收到没有经过半虚拟化VMM模拟和翻译处理的GuestOS内核态指令或敏感指令时,可以准确判断出该指令是否属于GuestOS,从而高效的扁面错误 另一种方式是在每一个GuestOS中安装特定的半虚拟化软件,如VMtools,RHEVTools。典型的半虚拟化软件如Xen,KVM-PowerPc等
  3. 硬件辅助虚拟化:由CPU直接支持的虚拟化技术,这种虚拟化技术引入了新的CPU运行模式和新的指令集,使VMM和GuestOS运行在不同的模式之下(VMM运行在Ring0的根模式下;GuestOS则运行在Ring0的非根模式下)目前主流的硬件辅助虚拟化技术有以下两种: Intel VT-x AMD-V
  4. 内存虚拟化:内存虚拟化的映射(内存地址转换)涉及到三类地址:
    1,虚拟地址(VA):GuestOS提供给其他应用程序使用的线性地址空间
    2,物理地址(PA):经过VMM抽象的,虚拟机看到的伪物理地址
    3,机器地址(MA):真实的机器物理地址,即地址总线上出现的地址信号
    宿主机到虚拟机的内存地址映射关系如下:GuestOS负责VA到PA的映射,PA=f(VA) VMM负责PA到MA的映射,MA=g(PA)
  5. 总线虚拟化:总线虚拟化可以将一块网卡分给若干个GuestOS使用,每台虚拟机分得网卡性能的1/N,由于总线虚拟化是直接把物理设备分给GuestOS的 无需经过VMM,因此性能较高甚至接近于真机。内存虚拟化和总线虚拟化技术的实现,进一步提高了GuestOS和HostOS的运行性能,主流的总线虚拟化技术主要两类:Intel的VT-d技术 AMD的IOMMU技术
    6.容器虚拟化:容器虚拟化不是一种硬件虚拟化方法,而是一种操作系统级的虚拟化方法,因而不属于全虚拟化和半虚拟化中任意一类。以容易为虚拟化的载体单位,容器可以为应用程序提供隔离的运行空间,且一个容器内的变动并不会影响其他容器。 容器比虚拟机更轻量,效率更高,部署快捷,但是容器将应用打包并以进程的形式运行在操作系统上,因此应用之间并非完全隔离,这是一大缺陷。

https://www.jdon.com/51223

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值