¿Qué tipo de máquina virtual es BEAM (la máquina virtual Erlang)?


Por lo que entiendo, una máquina virtual se divide en dos categorías: "máquina virtual de sistema" o "máquina virtual de proceso". Es un poco borroso para mí donde se encuentra BEAM. ¿Hay otro tipo de máquina virtual que desconozco?

Author: Kara, 2013-05-27

3 answers

La máquina virtual Erlang se ejecuta como un proceso del sistema operativo. De forma predeterminada, ejecuta un subproceso del sistema operativo por núcleo para lograr la máxima utilización de la máquina. El número de subprocesos y en qué núcleos se ejecutan se pueden establecer cuando se inicia la máquina virtual.

Los procesos Erlang se implementan completamente por la máquina virtual Erlang y no tienen conexión con procesos o subprocesos del sistema operativo. Por lo tanto, incluso si está ejecutando un sistema Erlang de más de un millón de procesos, sigue siendo solo un proceso del sistema operativo y un subproceso por núcleo. Así que en este sentido de la VM Erlang es una "máquina virtual de procesos", mientras que el propio sistema Erlang se comporta como un sistema operativo y los procesos Erlang tienen propiedades muy similares a los procesos del sistema operativo, por ejemplo, el aislamiento. En realidad hay un Erlang VM, basado en el BEAM, que se ejecuta en metal desnudo y es de hecho un sistema operativo por derecho propio, ver Erlang on Xen .

Por cierto, es perfectamente posible tener sistemas que ejecutan millones de procesos Erlang y en realidad se hace en algunos productos, para ejemplo WhatsApp .

Definitivamente estábamos pensando mucho en los sistemas operativos cuando diseñamos el entorno básico de 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-20 01:29:02

La máquina virtual es un sistema informático. El objetivo final de un sistema informático es ejecutar la lógica programada. Desde esta perspectiva, las máquinas virtuales se pueden clasificar en 4 tipos según el nivel de abstracción y el alcance de la emulación:

Tipo 1: Máquina virtual Completa de Arquitectura de Conjunto de Instrucciones (ISA) proporciona la emulación o virtualización ISA de un sistema informático completo. Los sistemas operativos invitados y las aplicaciones pueden ejecutarse en la parte superior de la máquina virtual como un equipo real (por ejemplo, VirtualBox,QEMU, XEN).

Tipo 2: Máquina virtual de Interfaz Binaria de aplicación (ABI) proporciona una emulación ABI de proceso invitado. Las aplicaciones contra las que ABI pueden ejecutarse en el proceso junto con otros procesos de aplicaciones ABI nativas (por ejemplo, La capa de ejecución IA-32 de Intel en Itanium, la transformación de código de Transmeta para la emulación de X86, la capa de traducción de Rosetta de Apple para PowerPC emulación).

Tipo 3: Máquina virtual ISA virtual proporciona un motor de tiempo de ejecución para que las aplicaciones codificadas en la ISA virtual puedan ejecutarse en él. Virtual ISA generalmente define un alto nivel y un alcance limitado de la semántica ISA, por lo que no requiere que la máquina virtual emule un sistema informático completo (por ejemplo,JVM de Sun Microsystem, Tiempo de ejecución de Lenguaje Común de Microsoft, máquina virtual Parrot de Parrot Foundation).

Tipo 4: Idioma Virtual Máquina proporciona un motor de tiempo de ejecución que ejecuta programas expresados en un lenguaje invitado. Los programas generalmente se presentan a la máquina virtual en forma de código fuente del lenguaje invitado, sin ser compilados completamente en código máquina de antemano. El motor de tiempo de ejecución necesita interpretar o traducir el programa y también cumplir con ciertas funcionalidades que son abstraídas por el lenguaje, como la administración de memoria (por ejemplo, los motores de tiempo de ejecución para Basic, Lisp, Tcl, Ruby ).

Los límites entre los tipos de máquinas virtuales no están claros. Por ejemplo, una máquina virtual de lenguaje también puede emplear la técnica de una máquina virtual ISA compilando el programa en una especie de ISA virtual y luego ejecutando el código en una máquina virtual de esa ISA virtual.

Muchos diseños de VM, tales como HAZ, cruzando los límites. Podrían caber en 3rd y 4th categorías.

Fuente:

  1. Wikipedia
  2. Diseño Avanzado e Implementación de Máquinas Virtuales; 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-03 02:37:04

Asumo que has estado leyendo http://en.wikipedia.org/wiki/Virtual_machine - bajo esa terminología, BEAM es una "máquina virtual de procesos", al igual que la 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-27 19:57:56