Из того, что я понимаю, виртуальная машина попадает в две категории: "системная виртуальная машина" или "виртуальная машина процесса". Это как-то нечетко для меня, где лежит ЛУЧ. Есть ли другой вид виртуальной машины, о которой я не знаю?
Какая виртуальная машина - BEAM (Erlang VM)?
Ответ 1
Erlang VM работает как один процесс ОС. По умолчанию для достижения максимального использования машины по умолчанию используется один поток ОС на ядро. Количество потоков и на которых они запускаются, могут быть установлены при запуске виртуальной машины.
Процессы Erlang реализованы полностью с помощью Erlang VM и не имеют никакого подключения ни к процессам ОС, ни к потокам ОС. Таким образом, даже если вы используете систему Erlang, состоящую из более миллиона процессов, все еще остается только один процесс ОС и один поток на ядро. Таким образом, в этом смысле Erlang VM является "виртуальной машиной процесса", в то время как сама система Erlang очень ведет себя как ОС, а процессы Erlang имеют очень похожие свойства для процессов ОС, например изоляцию. На самом деле есть виртуальная машина Erlang, основанная на BEAM, которая работает на голом металле и фактически является ОС в своем собственном праве. Erlang on Xen.
Кстати, вполне возможно иметь системы с миллионами процессов Erlang, и это действительно делается в некоторых продуктах, например WhatsApp.
Мы определенно очень много думали о ОС, когда мы разработали базовую среду Erlang.
Ответ 2
Виртуальная машина - это вычислительная система. Конечной целью вычислительной системы является выполнение запрограммированной логики. С этой точки зрения, виртуальные машины можно разделить на 4 типа в соответствии с уровнем абстракции и объемом эмуляции:
Тип 1: Виртуальная машина с полным набором команд (ISA) обеспечивает полную эмуляцию или виртуализацию ISA в компьютерной системе. Гостевые операционные системы и приложения могут работать в верхней части виртуальной машины как фактический компьютер (например, VirtualBox, QEMU, XEN).
Тип 2: виртуальная машина двоичного интерфейса приложения (ABI) обеспечивает эмуляцию ABI гостевого процесса. Приложения против этого ABI могут работать в процессе бок о бок с другими процессами нативных приложений ABI (например, Уровень выполнения Intel IA-32 на Itanium, Transmeta Code Morphing для эмуляции X86, уровень трансляции Apple Rosetta для эмуляции PowerPC).
Тип 3: виртуальная виртуальная машина ISA предоставляет механизм выполнения, чтобы на нем могли выполняться приложения, закодированные в виртуальном ISA. Виртуальная ISA обычно определяет высокий уровень и ограниченность семантики ISA, поэтому виртуальная машина не требует эмуляции полной компьютерной системы (например, Sun Microsystem JVM, Microsoft Common Language Runtime, Parrot Foundation Parrot).
Тип 4: виртуальная машина языка предоставляет механизм выполнения, который выполняет программы, выраженные на гостевом языке. Обычно программы представляются на виртуальной машине в исходной форме гостевого языка, не предварительно компилируются в машинный код заранее. Механизм выполнения должен интерпретировать или транслировать программу, а также выполнять определенные функции, которые абстрагируются на языке, таком как управление памятью (например, для рабочих сред для Basic, Lisp, Tcl, Ruby).
Границы между типами виртуальных машин не ясны. Например, виртуальная машина языка также может использовать технику виртуальной виртуальной машины ISA, компилируя программу в своего рода виртуальную ISA а затем выполнение кода на виртуальной машине этого виртуального ISA.
Многие проекты VM, такие как BEAM, пересекают границы. Они могут вписаться в 3-ю и 4-ю категории.
источник:
- Wikipedia
- Расширенный дизайн и внедрение виртуальных машин; Xlao-Feng LI
Ответ 3
Я предполагаю, что вы читали http://en.wikipedia.org/wiki/Virtual_machine - по этой терминологии BEAM - это "виртуальная машина процесса", как и JVM.