从我的理解虚拟机可分为两类或者“系统虚拟机”或“过程虚拟机”。 这是一种模糊的,以我在哪里,梁所在。 是否有另一种虚拟机,我不知道呢?
Answer 1:
Erlang的虚拟机运行作为一个操作系统进程。 默认情况下,它运行每个核心一个操作系统线程来实现本机的最大利用率。 螺纹和在其数的核心,他们运行的虚拟机时,可以在启动设置。
Erlang进程由二郎VM 完全实现,并且必须要么OS进程或OS线程没有连接。 所以,即使你正在运行超过一百万的过程中一个Erlang系统,它仍然是只有一个操作系统进程,每个核心一个线程。 所以在这个意义上二郎山VM是一个“过程虚拟机”,而二郎神系统本身非常如同一个操作系统和Erlang进程具有非常相似的特性操作系统进程,例如隔离。 其实有一个Erlang VM,基于光束,它运行在裸机和其实是在自己的权利的OS,请参阅在Xen上二郎 。
顺便说一句,这是完全可能有几百万运行Erlang进程的系统,它是在某些产品实际完成的,例如WhatsApp的 。
我们肯定很少考虑操作系统的情况,我们设计了基本的Erlang环境。
Answer 2:
虚拟机的计算系统。 一个计算系统的最终目标是执行编程逻辑。 从这个角度来说,虚拟机可根据抽象和仿真的范围的电平被分类为4种类型 :
类型1: 完整的指令集架构(ISA)的虚拟机提供了一个完整的计算机系统的ISA模拟或虚拟化。 访客操作系统和应用程序可在虚拟机的顶部作为实际计算机(例如,VirtualBox的,QEMU,XEN)运行。
类型2: 应用程序二进制接口(ABI)虚拟机提供一个客人过程ABI仿真。 针对ABI的应用程序可以在这个过程中并肩的本地ABI的应用程序的其他进程运行(例如, 在安腾英特尔的IA-32执行层,Transmeta的代码变形为X86仿真,为PowerPC仿真苹果的Rosetta转换层 )。
类型3: 虚拟ISA的虚拟机提供了一个运行时引擎,以便在虚拟ISA编码的应用程序可以在上面运行。 虚拟ISA通常定义了一个较高的水平和ISA语义的范围有限,所以它不需要虚拟机来模拟一个完整的计算机系统(例如,Sun Microsystem的JVM,微软的公共语言运行时,鹦鹉基金会的鹦鹉虚拟机)。
4类型: 语言虚拟机提供了执行做客语言表达的程序运行时引擎。 该程序通常呈现给虚拟机来宾语言的源代码的形式,而不完全编译成机器码事前。 运行时引擎需要解释或翻译程序,并完成了由抽象的语言,如内存管理的某些功能( 例如 , 运行时引擎为基础,Lisp语言,TCL,红宝石 )。
虚拟机类型之间的界限不明确的。 例如,一种语言的虚拟机还可以通过编译程序为一种虚拟ISA的,然后该虚拟ISA的虚拟机上执行的代码采用虚拟ISA虚拟机的技术。
许多VM设计,如梁 ,穿越界限。 他们可能是配合到两个第三和第四类。
资源:
- 维基百科
- 先进的设计和虚拟机的执行情况; Xlao锋李
Answer 3:
我假设你已经阅读http://en.wikipedia.org/wiki/Virtual_machine -这一术语下,BEAM是一个“过程虚拟机”,就像JVM。