ventajas telecomunicaciones que programación programacion lenguaje imagenes ejemplos desventajas erlang virtual-machine beam

que - erlang telecomunicaciones



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

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

Los procesos de Erlang son implementados completamente por la máquina virtual de Erlang y no tienen conexión con los procesos del sistema operativo o los subprocesos del sistema operativo. Entonces, 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 hilo por núcleo. Entonces, en este sentido, la máquina virtual de Erlang es una "máquina virtual de proceso", mientras que el sistema Erlang en sí mismo se comporta como un sistema operativo y los procesos de Erlang tienen propiedades muy similares a los procesos de sistema operativo, por ejemplo, el aislamiento. En realidad, hay una VM Erlang, basada en el BEAM, que se ejecuta en metal desnudo y de hecho es un sistema operativo en sí mismo, ver Erlang en Xen .

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

Definitivamente estábamos pensando mucho en sistemas operativos cuando diseñamos el entorno básico de Erlang.

Por lo que entiendo, una máquina virtual se puede clasificar en dos categorías: "máquina virtual del sistema" o "máquina virtual de proceso". Es algo borroso para mí donde se encuentra BEAM. ¿Hay otro tipo de máquina virtual de la que no tengo conocimiento?


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 de acuerdo con el nivel de abstracción y el alcance de la emulación:

Tipo 1: la máquina virtual Full Instruction Set Architecture (ISA) proporciona una virtualización o emulación ISA de un sistema informático completo. Los sistemas operativos invitados y las aplicaciones se pueden ejecutar en la parte superior de la máquina virtual como una computadora real (por ejemplo, VirtualBox, QEMU, XEN ).

Tipo 2: la máquina virtual de aplicación de interfaz binaria (ABI) proporciona una emulación ABI de proceso invitado. Las aplicaciones contra ese ABI pueden ejecutarse en el proceso junto con otros procesos de aplicaciones ABI nativas (por ejemplo, IA-32 Execution Layer de Intel en Itanium, Transmeta''s Code Morphing para emulación X86, capa de traducción Rosetta de Apple para emulación PowerPC ).

Tipo 3: la máquina virtual ISA virtual proporciona un motor de tiempo de ejecución para que las aplicaciones codificadas en el ISA virtual se puedan ejecutar en él. Virtual ISA generalmente define un nivel alto y limitado de 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, Common Language Runtime de Microsoft, máquina virtual Parrot de Parrot Foundation).

Tipo 4: Máquina virtual de idioma proporciona un motor de tiempo de ejecución que ejecuta programas expresados ​​en un idioma de invitado. Los programas generalmente se presentan a la máquina virtual en forma de fuente del idioma del invitado, sin estar completamente compilados en código de máquina de antemano. El motor de tiempo de ejecución necesita interpretar o traducir el programa y también cumplir con determinadas funcionalidades abstraídas por el lenguaje, como la gestión de la 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 son claros. Por ejemplo, una máquina virtual de lenguaje también puede emplear la técnica de una máquina virtual ISA virtual 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, como BEAM , cruzan los límites. Podrían encajar en la 3ª y la 4ª categoría.

fuente:

  1. Wikipedia
  2. Diseño avanzado e implementación de máquinas virtuales; Xlao-Feng LI