Soru Nasıl bir sanal makine BEAM (Erlang VM)?


Anladığım kadarıyla bir sanal makine, "sistem sanal makinesi" veya "işlem sanal makinesi" olmak üzere iki kategoriye ayrılır. BEAM'ın yalan söylediğine göre biraz bulanık. Farkında olmadığım başka bir sanal makine var mı?


96
2018-05-27 19:08


Menşei




Cevaplar:


Erlang VM bir OS 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 çekirdeklerin çalıştıkları ayarlanabilir.

Erlang süreçleri uygulanmaktadır Baştan sona Erlang VM tarafından ve OS süreçleri veya işletim sistemi iş parçacığı ile hiçbir bağlantısı yoktur. Yani, bir milyondan fazla işlemden oluşan bir Erlang sistemi çalıştırıyor olsanız bile, hala yalnızca bir işletim sistemi ve çekirdek başına bir iş parçacığıdır. Yani bu anlamda Erlang VM bir "süreç sanal makinesi" iken Erlang sistemi bir işletim sistemi gibi davranıyor ve Erlang süreçleri, örneğin, izolasyon gibi OS süreçlerine çok benzer özelliklere sahip. Aslında çıplak metal üzerinde çalışan ve aslında kendi başına bir işletim sistemi olan BEAM'e dayanan bir Erlang VM'si var. Xen üzerinde Erlang.

Bu arada, milyonlarca Erlang sürecini çalıştıran sistemlere sahip olmak gerçekten mümkündür ve örneğin bazı ürünlerde yapılır. Naber.

Temel Erlang ortamını tasarladığımızda OS'ler hakkında kesinlikle çok düşündük.


150
2018-05-27 22:44



Xen’de Erlang’ı bilmiyordum! Kulağa inanılmaz geliyor! - Eric des Courtis
@rvirding Bu, altta yatan işletim sisteminin Erlang VM'nin üzerinde çalışan uygulamalar / işlemler hakkında hiçbir şey bilmediği anlamına mı geliyor? - coffeMug
@coffeMug Hayır, OS açısından bakıldığında, Erlang VM, diğer tüm işletim sistemi işlemleri gibi normal bir işletim sistemi sürecidir. Diğer OS işlemlerinde olduğu gibi, OS tarafından sağlanan bellek, i / o aygıtları, vb. Gibi kaynakları kullanır. Bu nedenle özellikle Erlang süreçleri / hata toleransı / uygulamaları / etc gibi her şey Erlang VM sürecinin içinde ele alınır. - rvirding
Xen'de Erlang ile büyük bir kazanç nedir - sadece daha hızlı mı? - jononomo
@RikHemsley Evet, ancak çok sınırlı uygulamalar için mümkün olabilirdi. Erlang sistemlerinde 10k, 100k ve hatta 1M işlemlerinin yapılmasının, OS süreçleriyle modellemenin çok da gerçekçi olmayacağını hatırlamanız gerçekçi olmayacaktır. - rvirding


Sanal makine bir bilgisayar sistemidir. Bir bilgisayar sisteminin nihai hedefi programlanmış mantığı yürütmektir. Bu açıdan, sanal makineler kategorize edilebilir. 4 çeşit soyutlama seviyesine ve emülasyonun kapsamına göre:

Tip 1:  Tam Eğitim Seti Mimarisi (ISA) sanal makinesi Tam bir bilgisayar sistemi ISA öykünmesi veya sanallaştırma sağlar. Konuk işletim sistemleri ve uygulamaları, sanal makinenin üstünde gerçek bir bilgisayar olarak çalışabilir (ör.VirtualBox QEMU, XEN).

Tip 2: Uygulama İkili Arabirim (ABI) sanal makinesi Konuk süreci ABI öykünmesi sağlar. ABI'ya karşı yapılan uygulamalar, süreçte diğer ABI uygulamalarının diğer işlemleriyle birlikte çalışabilir (ör.Intel'in IA-32 Yürütme Katmanı Itanium, Transmeta'nın Kodu X86 öykünmesi için Morphing, PowerPC öykünmesi için Apple'ın Rosetta çeviri katmanı).

Tip 3: Sanal ISA sanal makinesi sanal ISA'da kodlanmış uygulamaların üzerinde çalışabilmesi için bir çalışma zamanı motoru sağlar. Sanal ISA genellikle yüksek düzeyde ve sınırlı bir ISA semantiği kapsamını tanımlar, bu nedenle sanal makinenin tam bir bilgisayar sistemini taklit etmesini gerektirmez (ör.Sun Microsystem'in JVM'si, Microsoft'un Ortak Dil Çalışma Zamanı, Parrot Vakfı'nı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 derlenmeden, konuk dilinin kaynak biçimindeki sanal makineye sunulur. Çalışma zamanı altyapısı programı yorumlamalı veya çevirmeli ve ayrıca bellek yönetimi gibi bir dil tarafından soyutlanan belirli işlevleri yerine getirmelidir (ör. Basic, Lisp, Tcl, Ruby için çalışma zamanı motorları).

Sanal makine türleri arasındaki sınırlar net değil. Örneğin, bir dil sanal makinesi, programı sanal ISA sanal makinesinin tekniğini bir tür sanal ISA'ya derleyerek ve daha sonra bu sanal ISA'nın sanal makinesinde kod çalıştırarak çalıştırabilir.

Gibi birçok VM tasarımları LEVENTsınırları aşarak. 3. ve 4. kategorilere uygun olabilirler.

kaynak:

  1. Vikipedi
  2. İleri Tasarım ve Sanal Makinelerin Uygulanması; Xlao-Feng LI

17
2017-08-03 02:18



Aslında bu cevap çok iyi. Daha fazla vardiya olmalı. - Manoel Vilela
Nispeten yeni, bu yüzden birçok vardiya yok. Onu destekledim. - Eric des Courtis


Okuduğumu sanıyorum http://en.wikipedia.org/wiki/Virtual_machine - bu terminolojide, BEAM, JVM gibi bir "süreç sanal makinesi" dir.


6
2018-05-27 19:57



Sistem seviyesi süreçleri ve Erlang süreçleri aynı değildir. Erlang terminolojisindeki süreçler aslında kullanıcı arazi süreçleridir ve VM'nin kendisi tek bir işletim sistemi seviyesi işlemidir. - kjw0188
@ kjw0188 Anladım, ancak OS süreci ile dil seviyesi süreci arasında herhangi bir ayrım görmüyorum. - Eric des Courtis
@EricdesCourtis Erlang süreçleri hakkında daha fazla bilgi: stackoverflow.com/questions/2708033/... - Ward Bekker
@WardBekker Yardım için teşekkürler Erlang süreçlerini anlıyorum. Sadece ne tür bir VM kategorisinin Erlang'ın içine düştüğünden emin değildim. - Eric des Courtis
Sanal makineleri çok fazla kategorize etmek konusunda ihtiyatlı olurdum. Yaptıkları şeyde benzersiz olma eğilimindedirler. Ve belirli bir kategoriye koymak için genellikle çok farklıdırlar. - I GIVE CRAP ANSWERS