Jaką maszyną wirtualną jest BEAM (Erlang VM)?

Z tego, co rozumiem, maszyna wirtualna dzieli się na dwie kategorie: "systemowa maszyna wirtualna" lub "procesowa maszyna wirtualna". Dla mnie to trochę niewyraźne, gdzie leży BEAM. Czy istnieje inny rodzaj maszyny wirtualnej, którego nie jestem świadomy?

Author: Kara, 2013-05-27

3 answers

Maszyna wirtualna Erlang działa jako jeden proces OS. Domyślnie uruchamia jeden wątek OS na rdzeń, aby osiągnąć maksymalne wykorzystanie maszyny. Podczas uruchamiania maszyny Wirtualnej można ustawić liczbę wątków i na jakich rdzeniach są uruchamiane.

Procesy Erlang są implementowane w całości przez maszynę wirtualną Erlang i nie mają połączenia ani z procesami systemu operacyjnego, ani z wątkami systemu operacyjnego. Więc nawet jeśli używasz systemu Erlang obejmującego ponad milion procesów, nadal jest to tylko jeden proces OS i jeden wątek na rdzeń. Więc w w tym sensie maszyna wirtualna Erlang jest "maszyną wirtualną procesu", podczas gdy sam system Erlang zachowuje się bardzo podobnie do systemu operacyjnego, a procesy Erlang mają bardzo podobne właściwości do procesów OS, na przykład izolacja. W rzeczywistości istnieje Erlang VM, oparty na belce, który działa na gołym metalu i jest w rzeczywistości OS sam w sobie, zobacz Erlang na Xen .

Nawiasem mówiąc, jest to całkowicie możliwe, aby mieć systemy obsługujące miliony procesów Erlanga i jest to rzeczywiście zrobione w niektórych produktach, dla przykład WhatsApp .

Zdecydowanie myśleliśmy bardzo dużo o osach, kiedy projektowaliśmy podstawowe środowisko Erlang.

 151
Author: rvirding,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-20 01:29:02

Maszyna wirtualna jest systemem obliczeniowym. Ostatecznym celem systemu komputerowego jest wykonanie zaprogramowanej logiki. Z tej perspektywy maszyny wirtualne można podzielić na 4 rodzaje w zależności od poziomu abstrakcji i zakresu emulacji:

Typ 1: Full Instruction Set Architecture (Isa) virtual machine zapewnia pełną emulację lub wirtualizację systemu komputerowego. Systemy operacyjne i aplikacje gościa mogą działać na Góra maszyny wirtualnej jako rzeczywisty komputer(np. VirtualBox, QEMU, XEN).

Type 2: Application Binary Interface (ABI) virtual machine zapewnia emulację ABI procesu gościa. Aplikacje z tym ABI mogą działać w procesie obok innych procesów natywnych aplikacji ABI (np. warstwa wykonawcza IA-32 Intela na Itanium, morfing kodu Transmeta dla emulacji X86, warstwa translacyjna Rosetta Apple dla PowerPC emulacja ).

Type 3: Virtual ISA virtual machine zapewnia silnik runtime, dzięki czemu aplikacje zakodowane w wirtualnej ISA mogą na nim wykonywać. Virtual ISA zazwyczaj definiuje wysoki poziom i ograniczony zakres semantyki ISA, więc nie wymaga od maszyny wirtualnej emulowania pełnego systemu komputerowego (np. JVM Sun Microsystem, Common Language Runtime Microsoftu, Parrot Foundation).

Type 4: Język Wirtualny Maszyna zapewnia silnik runtime, który wykonuje programy wyrażone w języku gościa. Programy są zwykle przedstawiane maszynie wirtualnej w postaci źródłowej języka gościa, bez uprzedniego pełnego skompilowania do kodu maszynowego. Silnik runtime musi interpretować lub tłumaczyć program, a także spełniać pewne funkcje, które są abstrakcyjne przez język, takie jak zarządzanie pamięcią (np. silniki runtime dla Basic, Lisp, Tcl, Ruby ).

Granice między typami maszyn wirtualnych nie są jasne. na przykład maszyna wirtualna języka może również wykorzystać technikę wirtualnej maszyny wirtualnej ISA, kompilując program do rodzaju wirtualnej ISA, a następnie wykonując kod na maszynie wirtualnej tej wirtualnej ISA.

Wiele projektów maszyn wirtualnych, takich jak belka, przekraczanie granic. Mogą pasować zarówno do kategorii 3, jak i 4.

Źródło:

  1. Wikipedia
  2. [[53]}zaawansowane projektowanie i implementacja maszyn wirtualnych; Xlao-Feng LI
 17
Author: Kylar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-03 02:37:04

Zakładam, że czytałeś http://en.wikipedia.org/wiki/Virtual_machine - zgodnie z tą terminologią, BEAM jest "procesową maszyną wirtualną", podobnie jak JVM.

 6
Author: RichardC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-27 19:57:56