BEAM(Erlang VM)是什么样的虚拟机?

dy1byipe  于 2022-12-16  发布在  Erlang
关注(0)|答案(3)|浏览(272)

根据我的理解,虚拟机福尔斯两类:系统虚拟机和进程虚拟机,我对BEAM的定位有点模糊,是否还有其他类型的虚拟机我不知道?

m2xkgtsf

m2xkgtsf1#

Erlang VM作为一个操作系统进程运行。默认情况下,它在每个内核上运行一个操作系统线程,以实现计算机的最大利用率。线程的数量以及线程在哪个内核上运行可以在VM启动时设置。
Erlang进程完全由Erlang VM实现,并且与OS进程或OS线程都没有连接。因此,即使您运行的Erlang系统拥有超过一百万个进程,每个内核仍然只有一个OS进程和一个线程。因此,从这个意义上讲,Erlang VM是一个“进程虚拟机”。而Erlang系统本身的行为非常类似于OS,并且Erlang进程具有与OS进程非常相似的属性(例如隔离)。实际上存在基于BEAM的Erlang VM,它在裸机上运行,实际上是一个独立的操作系统,请参见Erlang on Xen
顺便说一下,让系统运行数百万个Erlang进程是完全可能的,而且实际上在某些产品中已经实现了,例如WhatsApp
当我们设计基本的Erlang环境时,我们确实考虑了很多操作系统。

yqhsw0fo

yqhsw0fo2#

虚拟机是一个计算系统,计算系统的最终目的是执行编程逻辑,从这个Angular 来看,虚拟机按照抽象程度和仿真范围可以分为***4种类型***:

类型1:完整指令集体系结构(伊萨)虚拟机提供完整计算机系统的ISA仿真或虚拟化。访客操作系统和应用程序可以在虚拟机上作为实际计算机运行(例如,VirtualBox、QEMU、XEN)。
类型2: 应用程序二进制接口(ABI)虚拟机
提供访客进程ABI仿真。针对该ABI的应用程序可以在该进程中与本机ABI应用程序的其他进程并行运行(例如,Intel的基于安腾的IA-32执行层、Transmeta的用于X86仿真的代码变形、Apple的用于PowerPC仿真的Rosetta转换层)。
类型3: 虚拟伊萨虚拟机
提供运行时引擎,以便在虚拟ISA中编码的应用程序可以在其上执行。虚拟ISA通常定义ISA语义的高级和有限范围,因此它不需要虚拟机模拟完整的计算机系统(例如,Sun Microsystems的JVM、Microsoft的公共语言运行时、Parrot Foundation的Parrot虚拟机)。
类型4: 语言虚拟机**提供运行时引擎,用于执行以客户语言表示的程序。程序通常以客户语言的源代码形式提供给虚拟机,在没有完全编译成机器代码之前,运行引擎需要解释或翻译程序,并且还需要完成某些由语言抽象的功能,如内存管理(例如,Basic、Lisp、Tcl、Ruby的运行时引擎)。
**虚拟机类型之间的界限并不明确。**例如,语言虚拟机也可以采用虚拟伊萨虚拟机的技术,方法是将程序编译成一种虚拟ISA,然后在该虚拟ISA的虚拟机上执行代码。

许多VM设计,如***BEAM***,跨越了边界。它们可以同时归入第3类和第4类。
资料来源:
1.维基百科
1.虚拟机的先进设计与实现李晓峰

8dtrkrch

8dtrkrch3#

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

相关问题