首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BEAM ( Erlang VM)是什么类型的虚拟机?

BEAM ( Erlang VM)是什么类型的虚拟机?
EN

Stack Overflow用户
提问于 2013-05-28 03:08:28
回答 3查看 43.1K关注 0票数 125

据我所知,虚拟机分为两类:“系统虚拟机”和“进程虚拟机”。波束所在的位置对我来说有点模糊。有没有其他类型的虚拟机我不知道?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-28 06:44:19

Erlang VM作为一个操作系统进程运行。默认情况下,它在每个内核上运行一个操作系统线程,以实现机器的最大利用率。在启动VM时,可以设置线程的数量以及它们运行的核心。

Erlang进程完全由Erlang VM 实现,并且与OS进程或OS线程都没有连接。因此,即使您运行的Erlang系统有超过一百万个进程,它仍然只有一个OS进程,每个内核只有一个线程。因此,从这个意义上讲,Erlang VM是一个“进程虚拟机”,而Erlang系统本身的行为非常类似于操作系统,并且Erlang进程具有与操作系统进程非常相似的属性,例如隔离。实际上有一个基于BEAM的Erlang VM,它在裸机上运行,实际上是一个独立的操作系统,请参阅Erlang on Xen

顺便说一句,让系统运行数百万个Erlang进程是完全可能的,实际上在某些产品中也是这样做的,例如WhatsApp

当我们设计基本的Erlang环境时,我们确实考虑了很多OSes。

票数 187
EN

Stack Overflow用户

发布于 2017-08-03 10:18:26

虚拟机是一种计算系统。计算系统的最终目标是执行编程逻辑。从这个角度来看,虚拟机可以根据抽象级别和仿真范围分为4类型

类型1: 全指令集体系结构( ISA )虚拟机提供完整的计算机系统的ISA仿真或虚拟化。客户操作系统和应用程序可以作为实际计算机在虚拟机顶部运行(例如,VirtualBox、QEMU、XEN)。

类型2: 应用程序二进制接口( ABI )虚拟机提供来宾进程ABI仿真。基于该ABI的应用程序可以在进程中与本机ABI应用程序的其他进程并排运行(例如,安腾上的英特尔IA-32执行层,用于X86仿真的Transmeta代码变形,用于PowerPC仿真的苹果的Rosetta翻译层)。

类型3: Virtual ISA虚拟机提供了一个运行时引擎,以便在虚拟ISA中编写的应用程序可以在其上执行。虚拟指令集通常定义了高级的和有限范围的指令集语义,因此它不需要虚拟机模拟一个完整的计算机系统(例如,Sun微系统的JVM,微软的公共语言运行时,Parrot的Parrot虚拟机)。

类型4: Language虚拟机提供了一个运行时引擎,可以执行以客户语言表示的程序。这些程序通常以客户语言的源代码形式呈现给虚拟机,而不需要事先完全编译成机器代码。运行时引擎需要解释或翻译程序,还需要完成由语言抽象的某些功能,如内存管理(例如,运行时引擎Basic、Lisp、Tcl、Ruby)。

例如,语言虚拟机也可以采用虚拟指令集虚拟机的技术,将程序编译成一种虚拟指令集,然后在该虚拟指令集的虚拟机上执行代码。

许多VM设计,如BEAM,跨越了边界。它们可以同时属于第三类和第四类。

来源:

  1. Wikipedia
  2. Advanced虚拟机的设计与实现;Xlao-冯笠
票数 50
EN

Stack Overflow用户

发布于 2013-05-28 03:57:56

我假设您已经阅读过http://en.wikipedia.org/wiki/Virtual_machine --在这个术语下,BEAM是一个“进程虚拟机”,就像JVM一样。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16779162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档