З того, що я розумію, віртуальна машина підпадає на дві категорії або "система віртуальної машини", або "процес віртуальної машини". Мені це якось нечітко, де БЕЙ лежить. Чи є інший вид віртуальної машини, про який я не знаю?
З того, що я розумію, віртуальна машина підпадає на дві категорії або "система віртуальної машини", або "процес віртуальної машини". Мені це якось нечітко, де БЕЙ лежить. Чи є інший вид віртуальної машини, про який я не знаю?
Відповіді:
Erlang VM працює як один процес ОС. За замовчуванням він запускає один потік ОС на ядро, щоб досягти максимального використання машини. Кількість потоків і на яких ядрах вони запущені, можна встановити при запуску VM.
Процеси Erlang повністю реалізовані Erlang VM і не мають зв'язку ні з процесами ОС, ні з потоками ОС. Тож навіть якщо ви запускаєте систему Erlang з понад мільйон процесів, це все одно лише один процес ОС і одна нитка на ядро. Тому в цьому сенсі Erlang VM - це "віртуальна машина процесу", тоді як сама система Erlang дуже поводиться як ОС, а процеси Erlang мають дуже схожі властивості з процесами ОС, наприклад, ізоляцією. Насправді є Erlang VM, заснований на BEAM, який працює на голому металі і є насправді ОС, саме по собі, див. Erlang на Xen .
До речі, цілком можливо мати системи, що працюють на мільйонах процесів Erlang, і це фактично робиться в деяких продуктах, наприклад, WhatsApp .
Ми, безумовно, дуже багато думали про ОС, коли розробляли базове середовище Erlang.
Віртуальна машина - це обчислювальна система. Кінцевою метою обчислювальної системи є виконання запрограмованої логіки. З цього погляду віртуальні машини можна класифікувати на 4 типи відповідно до рівня абстракції та обсягу емуляції:
Тип 1: Віртуальна машина архітектури повного набору інструкцій (ISA) забезпечує повну емуляцію ISA або віртуалізацію комп'ютерної системи. Гостьові операційні системи та програми можуть працювати на вершині віртуальної машини як фактичний комп'ютер (наприклад, VirtualBox, QEMU, XEN ).
Тип 2: Віртуальна машина бінарного інтерфейсу додатків (ABI) забезпечує емуляцію гості ABI процесу. Програми проти цього ABI можуть запускатись поряд з іншими процесами вроджених додатків ABI (наприклад, Iay-32 Execution Layer на Itanium, Transmeta's Code Morphing для емуляції X86, перекладальний шар Apple Rosetta для емуляції PowerPC ).
Тип 3: Віртуальна машина ISA Virtual забезпечує двигун виконання, щоб додатки, кодовані у віртуальній ISA, могли виконувати на ній. Віртуальна ISA зазвичай визначає високий рівень та обмежений обсяг семантики ISA, тому вона не вимагає від віртуальної машини емуляції повноцінної комп'ютерної системи (наприклад, JVM Sun Microsystem, Загальна мова виконання Microsoft, віртуальна машина Parrot Foundation Parrot).
Тип 4: Мовна віртуальна машина забезпечує двигун виконання, який виконує програми, виражені мовою гостя. Програми, як правило, представлені віртуальній машині у вихідній формі гостьової мови, не попередньо повністю скомпільовані в машинний код. Двигун виконання повинен інтерпретувати або перекладати програму, а також виконувати певні функції, які абстрагуються такою мовою, як управління пам'яттю (наприклад, двигуни виконання для Basic, Lisp, Tcl, Ruby ).
Межі між типами віртуальної машини не чіткі. Наприклад, мовна віртуальна машина також може використовувати техніку віртуальної віртуальної машини ISA, компілюючи програму у своєрідну віртуальну ISA, а потім виконавши код на віртуальній машині цього віртуального ISA.
Багато конструкцій VM, таких як BEAM , перетинають межі. Вони можуть бути вписані в 3-ю та 4-ту категорії.
джерело:
Я припускаю, що ви читали http://en.wikipedia.org/wiki/Virtual_machine - згідно з цією термінологією BEAM - це "віртуальна машина процесу", подібно до JVM.