什么是虚拟化?

Posted 内核笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是虚拟化?相关的知识,希望对你有一定的参考价值。

一、什么是虚拟化?

  • 虚拟化是一种资源管理技术,在非虚拟化系统中,单个操作系统管理和使用所有的硬件资源,而在虚拟化系统中,硬件资源可以被抽象和分割成多个虚拟的实体用于支持多个操作系统,多个操作系统可以共享所有的实体硬件资源,从而达到物理资源的最大化利用;
  • Virtual Machine Motior(VMM),虚拟机监控器,也叫Hypervisor,向下管理实际的物理资源,向上给不同的虚拟机提供逻辑资源;
  • Virtual Machine(VM),虚拟机可以根据自己的选择运行不同的OS(Guest OS),它会认为自己独享硬件;
  • 虚拟化的好处就是能提高资源的利用率,比如当前计算机的配置资源都很高,实际的利用率比较低,如果进行统一管理并进行虚拟化,那就可以支持更多的用户来合理利用了;

二、软件虚拟化和硬件虚拟化

软件虚拟化

通过软件模拟来实现VMM层,比如QEMU,还是以图片来举例说明下:

我们都知道不同的处理器架构,指令集都不一样,ARM上运行的程序放置到X86运行是无法执行的,Qemu的出现就可以解决这个问题,硬生生转换翻译过去;


硬件虚拟化

纯软件行为来翻译指令,显然是一件很低效的事情,硬件虚拟化的支持可以提高整体的性能,硬件虚拟化指处理器本身提供能力来让客户机指令独立运行。

KVM (Kernel-Based Virtual Machine),基于内核的虚拟机,实现对CPU和内存的虚拟化,以及硬件I/O虚拟化的拦截,GuestI/OKVM拦截后交给Qemu去处理;
KVM是内核的一个Module,可以让Linux变成一个Hypervisor
KVM需要Host处理器本身支持虚拟化扩展,比如intel VTAMD-V等;

以上是关于什么是虚拟化?的主要内容,如果未能解决你的问题,请参考以下文章

如何向 ViewPager 提供许多片段并避免错误代码?

显示 ActionBar 选项卡的两个片段

C# 最有用的(自定义)代码片段是啥? [关闭]

此 Canon SDK C++ 代码片段的等效 C# 代码是啥?

有人知道下面的代码片段是啥意思吗?

iphone / Objective c的最佳代码片段网站是啥[重复]