Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么erlang需要虚拟机?_Erlang_Vm Implementation - Fatal编程技术网

为什么erlang需要虚拟机?

为什么erlang需要虚拟机?,erlang,vm-implementation,Erlang,Vm Implementation,消息传递是Erlang的核心——“通过进程的消息传递” 但说到erlang,虚拟机的概念仍然很模糊 有什么帮助吗?使用虚拟机有两个原因: 演员 Erlang试图比它运行的操作系统更智能。创建操作系统进程既慢又昂贵。Erlang有自己的轻进程、管理它们的调度程序和在核心之间移动它们的方法。是抢占式的,它提供了软实时属性(没有虚拟机是很难做到的) 内存管理 操作系统中的内存分配可能很慢,这就是为什么Erlang可以预先分配内存并在内部管理它。它与数据结构相连,数据结构是不可变的 指令集 当您有预

消息传递是Erlang的核心——“通过进程的消息传递”

但说到erlang,虚拟机的概念仍然很模糊


有什么帮助吗?

使用虚拟机有两个原因:

  • 演员

    Erlang试图比它运行的操作系统更智能。创建操作系统进程既慢又昂贵。Erlang有自己的轻进程、管理它们的调度程序和在核心之间移动它们的方法。是抢占式的,它提供了软实时属性(没有虚拟机是很难做到的)

  • 内存管理

    操作系统中的内存分配可能很慢,这就是为什么Erlang可以预先分配内存并在内部管理它。它与数据结构相连,数据结构是不可变的

  • 指令集

    当您有预定义的指令集时,进行优化就更容易了。您还可以在VM上创建其他语言,如或


  • 可能还有很多很多其他的原因,但这些都是我很快写下的。Erlang的主要目的是构建容错系统(可伸缩性只是容错的副产品)。最好将用户“限制”到虚拟机,这样可以轻松控制执行,并给予用户容错能力。

    在虚拟机中创建进程也可以实现更便宜的消息传递。由于这是由Erlang管理的,所以您可以使用Erlang跟踪它们。你可以管理他们的一生,并在他们死后(更容易)注意到他们。它甚至允许在需要时使用
    ets
    register
    进行一些“共享内存”数据。您可以将编译后的
    梁的表单系统移动到另一个系统。和热代码重新加载。还有更多。。。最终,您是在实际的参与者模型概念中编程,而不是在计算机构建方式所强加的概念中编程。看到进程是erlang进程,erlang VM在创建这些进程方面可以而且比操作系统聪明得多。操作系统中的内存分配很慢,特别是在必须是线程安全的情况下,因此erlang VM处理内存的速度要快得多。有许多内部内存管理器和收集器专门针对不同类型的内存。基本上可以归结为,erlang虚拟机的目标是运行erlang,而操作系统则更为通用。@rvirding:如果有任何需要添加的地方,请随意添加。