Anladığım kadarıyla bir sanal makine "sistem sanal makinesi" veya "işlem sanal makinesi" olarak iki kategoriye ayrılır. BEAM'in nerede yattığı benim için biraz bulanık. Farkında olmadığım başka tür bir sanal makine var mı?
Anladığım kadarıyla bir sanal makine "sistem sanal makinesi" veya "işlem sanal makinesi" olarak iki kategoriye ayrılır. BEAM'in nerede yattığı benim için biraz bulanık. Farkında olmadığım başka tür bir sanal makine var mı?
Yanıtlar:
Erlang VM, tek bir işletim sistemi süreci olarak çalışır. Varsayılan olarak, makinenin maksimum kullanımını sağlamak için çekirdek başına bir işletim sistemi iş parçacığı çalıştırır. VM başlatıldığında iş parçacığı sayısı ve hangi çekirdekler üzerinde çalışacakları ayarlanabilir.
Erlang süreçleri tamamen Erlang VM tarafından gerçekleştirilir ve işletim sistemi süreçleri veya işletim sistemi iş parçacıklarıyla bağlantısı yoktur. Dolayısıyla, bir milyondan fazla işlem içeren bir Erlang sistemi çalıştırıyor olsanız bile, bu hala yalnızca bir işletim sistemi süreci ve çekirdek başına bir iş parçacığıdır. Bu anlamda Erlang VM bir "işlem sanal makinesi" iken, Erlang sisteminin kendisi bir işletim sistemi gibi davranır ve Erlang süreçleri işletim sistemi işlemlerine çok benzer özelliklere sahiptir, örneğin izolasyon. Aslında BEAM tabanlı, çıplak metal üzerinde çalışan ve aslında kendi başına bir işletim sistemi olan bir Erlang VM var, bkz. Erlang on Xen .
Bu arada, milyonlarca Erlang işlemi çalıştıran sistemlere sahip olmak mükemmel bir şekilde mümkündür ve aslında WhatsApp gibi bazı ürünlerde yapılır .
Temel Erlang ortamını tasarlarken işletim sistemleri hakkında kesinlikle çok düşünüyorduk.
Sanal makine bir bilgi işlem sistemidir. Bir bilgi işlem sisteminin nihai amacı, programlanmış mantığı yürütmektir. Bu açıdan bakıldığında, sanal makineler, soyutlama düzeyine ve emülasyon kapsamına göre 4 tipte kategorize edilebilir :
Tip 1: Tam Komut Seti Mimarisi (ISA) sanal makine , tam bir bilgisayar sisteminin ISA öykünmesini veya sanallaştırmasını sağlar. Konuk işletim sistemleri ve uygulamaları, sanal makinenin üstünde gerçek bir bilgisayar olarak çalışabilir (örn. VirtualBox, QEMU, XEN ).
Tip 2: Uygulama İkili Arabirimi (ABI) sanal makinesi , konuk işlem ABI öykünmesi sağlar. Bu ABI'ya karşı uygulamalar, yerel ABI uygulamalarının diğer süreçleriyle yan yana çalışabilir (örneğin, Itanium'da Intel'in IA-32 Yürütme Katmanı, X86 öykünmesi için Transmeta'nın Kod Dönüşümü, Apple'ın PowerPC emülasyonu için Rosetta çeviri katmanı ).
Tip 3: Sanal ISA sanal makinesi , sanal ISA'da kodlanmış uygulamaların üzerinde çalıştırılabilmesi için bir çalışma zamanı motoru sağlar. Sanal ISA genellikle yüksek seviyeli ve sınırlı bir ISA semantiğini tanımlar, bu nedenle sanal makinenin tam bir bilgisayar sistemini taklit etmesini gerektirmez (örneğin, Sun Microsystem'in JVM'si, Microsoft'un Ortak Dil Çalışma Zamanı, Parrot Foundation'ın Parrot sanal makinesi).
Tip 4: Dil Sanal Makinesi , konuk dilde ifade edilen programları yürüten bir çalışma zamanı motoru sağlar. Programlar genellikle önceden makine koduna tam olarak derlenmeden sanal makineye konuk dilin kaynak biçiminde sunulur. Çalışma zamanı motorunun programı yorumlaması veya çevirmesi ve ayrıca bellek yönetimi gibi dil tarafından soyutlanmış belirli işlevleri yerine getirmesi gerekir (örneğin, Basic, Lisp, Tcl, Ruby için çalışma zamanı motorları ).
Sanal makine türleri arasındaki sınırlar net değildir. Örneğin, bir dil sanal makinesi, programı bir tür sanal ISA'ya derleyerek ve ardından kodu bu sanal ISA'nın sanal makinesinde çalıştırarak sanal ISA sanal makine tekniğini de kullanabilir.
BEAM gibi birçok sanal makine tasarımı sınırları aşıyor. Hem 3. hem de 4. kategoriye uygun olabilirler.
kaynak:
Http://en.wikipedia.org/wiki/Virtual_machine okuduğunuzu varsayıyorum - bu terminoloji altında BEAM, JVM gibi bir "işlem sanal makinesi" dir.