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