虚拟机有三个级别,分别从硬件层到应用层

  1. 硬件虚拟机:一般也被称为抽象机,是在硬件层面抽象出一个主机,可以安装各类型的操作系统,等于虚拟出一套硬件系统。典型代表:VMware,virtualbox

  2. 操作系统虚拟机:在操作系统层面重新构写其他操作系统的api,实现操作系统之间的兼容。典型代表:wine

  3. 代码运行环境虚拟机:提供一个程序运行时的环境,如java,python,lua等语言的运行环境

如果需要不同的操作系统平台,一般用硬件虚拟机,如部署hadoop。如果需要不同的编译解释环境,一般用运行环境虚拟机,如安装spark和zepplin等。操作系统级别用的较少。

以下是我看到得另一种分类方法,分为四层

  1. 模拟硬件的虚拟机

    此类虚拟机的用户是操作系统,也就是硬件层虚拟机抽象出了一个计算机硬件体系,此类虚拟机模拟的是cpu指令集。

    典型有kvm,vmware等。

  2. 模拟操作系统的虚拟机

    此类虚拟机模拟的是操作系统,准确来说是操作系统的系统调用接口。此类虚拟机(多是基于宿主操作系统提供的功能)能创建多个虚拟运行容器。对于运行在每个容器之中的程序而言,此类虚拟机均提供了一个完整的操作系统,为其中的软件提供了完善的系统调用接口,也就是说模拟的是系统调用。比如docker,docker基于linux的cgroup,否则docker也无法实现虚拟操作系统环境。

  3. API层的虚拟机

    此类虚拟机模拟的是该操作系统的各类用户态API,通常是运行库的函数接口(也就是说模拟的是用户态中各种库的接口函数),总之不是对处理器指令的仿真(绝不是一个层面 )。

  4. 编程语言的虚拟机

    此类虚拟机也称为语言的运行时,运行时环境,即runtime。通过解释或即时编译技术(Just-In-Time,JIT)来运行语言虚拟机指令,从而实现软件的跨平台特性。如java,lua,python等

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐