Dari apa yang saya pahami, mesin virtual terbagi dalam dua kategori baik "mesin virtual sistem" atau "mesin virtual proses". Agak kabur bagi saya di mana BEAM berada. Apakah ada jenis mesin virtual lain yang tidak saya ketahui?
sumber
Dari apa yang saya pahami, mesin virtual terbagi dalam dua kategori baik "mesin virtual sistem" atau "mesin virtual proses". Agak kabur bagi saya di mana BEAM berada. Apakah ada jenis mesin virtual lain yang tidak saya ketahui?
VM Erlang berjalan sebagai satu proses OS. Secara default, ini menjalankan satu utas OS per inti untuk mencapai pemanfaatan mesin secara maksimal. Jumlah utas dan inti mana yang dijalankan dapat diatur saat VM dimulai.
Proses Erlang diimplementasikan sepenuhnya oleh VM Erlang dan tidak memiliki koneksi ke proses OS atau thread OS. Jadi, meskipun Anda menjalankan sistem Erlang dengan lebih dari satu juta proses, itu masih hanya satu proses OS dan satu utas per inti. Jadi dalam pengertian ini VM Erlang adalah "mesin virtual proses" sedangkan sistem Erlang sendiri berperilaku seperti OS dan proses Erlang memiliki properti yang sangat mirip dengan proses OS, misalnya isolasi. Sebenarnya ada VM Erlang, berdasarkan BEAM, yang berjalan di atas bare metal dan pada kenyataannya merupakan OS dengan sendirinya, lihat Erlang di Xen .
Ngomong-ngomong, sangat mungkin memiliki sistem yang menjalankan jutaan proses Erlang dan ini sebenarnya dilakukan di beberapa produk, misalnya WhatsApp .
Kami benar-benar memikirkan banyak tentang OS saat kami merancang lingkungan dasar Erlang.
Mesin virtual adalah sistem komputasi. Tujuan akhir dari sistem komputasi adalah untuk menjalankan logika terprogram. Dari perspektif ini, mesin virtual dapat dikategorikan menjadi 4 jenis menurut tingkat abstraksi dan ruang lingkup emulasi:
Tipe 1: Mesin virtual Full Instruction Set Architecture (ISA) menyediakan emulasi atau virtualisasi ISA sistem komputer lengkap. Sistem operasi dan aplikasi tamu dapat berjalan di atas mesin virtual sebagai komputer sebenarnya (misalnya, VirtualBox, QEMU, XEN ).
Tipe 2: Mesin virtual Application Binary Interface (ABI) menyediakan proses tamu emulasi ABI. Aplikasi terhadap ABI tersebut dapat berjalan dalam proses berdampingan dengan proses lain dari aplikasi ABI asli (misalnya, Lapisan Eksekusi IA-32 Intel pada Itanium, Morphing Kode Transmeta untuk emulasi X86, lapisan terjemahan Rosetta Apple untuk emulasi PowerPC ).
Tipe 3: Mesin virtual ISA virtual menyediakan mesin runtime sehingga aplikasi yang dikodekan dalam ISA virtual dapat dijalankan di atasnya. ISA virtual biasanya mendefinisikan semantik ISA tingkat tinggi dan cakupan terbatas, sehingga tidak memerlukan mesin virtual untuk meniru sistem komputer lengkap (misalnya, JVM Sun Microsystem, Microsoft's Common Language Runtime, mesin virtual Parrot Foundation's Parrot).
Tipe 4: Mesin Virtual Bahasa menyediakan mesin runtime yang mengeksekusi program yang diekspresikan dalam bahasa tamu. Program-program biasanya disajikan ke mesin virtual dalam bentuk sumber bahasa tamu, tanpa dikompilasi sepenuhnya ke dalam kode mesin sebelumnya. Mesin runtime perlu menafsirkan atau menerjemahkan program dan juga memenuhi fungsi tertentu yang diabstraksi oleh bahasa seperti manajemen memori (misalnya, mesin runtime untuk Basic, Lisp, Tcl, Ruby ).
Batasan antara jenis mesin virtual tidak jelas. Misalnya, mesin virtual bahasa juga dapat menggunakan teknik mesin virtual ISA virtual dengan menyusun program menjadi semacam ISA virtual dan kemudian mengeksekusi kode pada mesin virtual ISA virtual tersebut.
Banyak desain VM, seperti BEAM , melintasi batas. Mereka dapat dimasukkan ke dalam kategori ke-3 dan ke-4.
sumber:
sumber
Saya berasumsi bahwa Anda telah membaca http://en.wikipedia.org/wiki/Virtual_machine - di bawah terminologi itu, BEAM adalah "proses mesin virtual", seperti JVM.
sumber