1. ホーム
  2. erlang

[解決済み] BEAM (the Erlang VM)とはどのような仮想マシンですか?

2022-07-25 10:20:29

質問

私の理解では、仮想マシンは、システム仮想マシンとプロセス仮想マシンの 2 つのカテゴリに分類されます。BEAM がどこに位置するのか、私にはちょっと曖昧です。私が知らない別の種類の仮想マシンがあるのでしょうか?

どのように解決するのですか?

Erlang VMは1つのOSプロセスとして動作します。デフォルトではマシンを最大限活用するために、1コアにつき1つのOSスレッドが実行されます。スレッドの数とどのコアで実行するかはVMの起動時に設定することができます。

Erlangプロセスは以下のように実装されています 完全に はErlang VMによって行われ、OSプロセスやOSスレッドとは何の関係もありません。ですからたとえ100万以上のプロセスからなるErlangシステムを動かしていても、1コアにつき1つのOSプロセスと1つのスレッドにしかならないのです。この意味で、Erlang VMはプロセスバーチャルマシンです。しかしErlangシステム自体はOSのように振る舞い、ErlangプロセスはOSプロセスととてもよく似た性質を持っています。実際にBEAMをベースにしたErlang VMがあり、これはベアメタル上で動作し、それ自体がOSになっています。 Xen上のErlang .

ところで、何百万ものErlangプロセスを実行するシステムを持つことは完全に可能で、実際にいくつかの製品で実行されています。 WhatsApp .

私たちがErlangの基本的な環境を設計したとき、間違いなくOSのことをとても考えていました。