BEAM (Erlang VM) किस तरह की वर्चुअल मशीन है?


115

जिस चीज से मैं समझता हूं कि एक वर्चुअल मशीन "सिस्टम वर्चुअल मशीन" या "प्रोसेस वर्चुअल मशीन" दोनों श्रेणियों में आती है। यह मेरे लिए अजीब है जहां BEAM झूठ है। क्या दूसरी तरह की वर्चुअल मशीन है जिसकी मुझे जानकारी नहीं है?

जवाबों:


177

Erlang VM एक OS प्रक्रिया के रूप में चलता है। डिफ़ॉल्ट रूप से यह मशीन के अधिकतम उपयोग को प्राप्त करने के लिए प्रति कोर एक ओएस थ्रेड चलाता है। वीएम शुरू होने पर थ्रेड्स की संख्या और उनके द्वारा चलाए जाने वाले कोर पर सेट किया जा सकता है।

Erlang प्रक्रिया पूरी तरह से Erlang VM द्वारा कार्यान्वित की जाती है और इसका OS प्रक्रियाओं या OS थ्रेड्स से कोई संबंध नहीं होता है। तो भले ही आप एक मिलियन से अधिक प्रक्रियाओं की एरलांग प्रणाली चला रहे हों लेकिन यह अभी भी केवल एक ओएस प्रक्रिया है और प्रति कोर एक धागा है। तो इस अर्थ में Erlang VM एक "प्रोसेस वर्चुअल मशीन" है, जबकि Erlang सिस्टम खुद एक OS की तरह व्यवहार करता है और Erlang प्रक्रियाओं में OS प्रक्रियाओं के समान गुण होते हैं, उदाहरण के लिए आइसोलेशन। वास्तव में BEAM पर आधारित एक Erlang VM है, जो नंगे धातु पर चलता है और वास्तव में अपने आप में एक OS है, एक्सएल पर Erlang देखें ।

वैसे, लाखों एर्लैंग प्रक्रियाओं को चलाने वाले सिस्टम के लिए पूरी तरह से संभव है और यह वास्तव में कुछ उत्पादों में किया जाता है, उदाहरण के लिए व्हाट्सएप

हम निश्चित रूप से OSes के बारे में बहुत सोच रहे थे जब हमने मूल Erlang वातावरण को डिज़ाइन किया था।


1
@rvirding का अर्थ यह है कि अंतर्निहित OS को Erlang VM के शीर्ष पर चल रहे अनुप्रयोगों / प्रक्रियाओं के बारे में कुछ भी नहीं पता है?
coffeMug

7
@coffeMug नहीं, OS के दृष्टिकोण से Erlang VM किसी अन्य OS प्रक्रिया की तरह ही एक सामान्य OS प्रक्रिया है। अन्य ओएस प्रक्रियाओं की तरह यह ओएस द्वारा प्रदान किए गए संसाधनों का उपयोग करता है जैसे मेमोरी, आई / ओ डिवाइसेस, इत्यादि। विशेष रूप से एरलांग जैसी सभी प्रक्रियाएं / गलती-सहिष्णुता / एप्लिकेशन / आदि को एरलंग वीएम प्रक्रिया के अंदर संभाला जाता है।
rvirding

1
एक्सएल पर एर्लैंग के साथ बड़ी जीत क्या है - क्या यह सिर्फ तेज है?
जोंनोमो

1
क्या मानक प्रक्रियाओं और ओएस सुविधाओं जैसे प्रक्रिया प्रबंधन (स्पॉन / किल / सेट सीमाएं) और आईपीसी (पाइप / सॉकेट) का उपयोग करके बीईएएम + ओटीपी 'वर्कलैक' वातावरण बनाना संभव होगा?
रिक हेमस्ले

3
@RikHemsley हाँ, यह संभव होगा लेकिन केवल बहुत सीमित अनुप्रयोगों के लिए। याद रखें कि erkang सिस्टम में 10k, 100k या यहां तक ​​कि 1M प्रक्रिया असामान्य नहीं है, इसलिए OS प्रक्रियाओं के साथ उन्हें मॉडलिंग करना यथार्थवादी नहीं होगा।
rvirding

43

वर्चुअल मशीन एक कंप्यूटिंग सिस्टम है। एक कंप्यूटिंग सिस्टम का अंतिम लक्ष्य क्रमादेशित तर्क को निष्पादित करना है। इस दृष्टिकोण से, आभासी मशीनों को अमूर्तता के स्तर और उत्सर्जन के दायरे के अनुसार 4 प्रकारों में वर्गीकृत किया जा सकता है :

टाइप 1: फुल इंस्ट्रक्शन सेट आर्किटेक्चर (आईएसए) वर्चुअल मशीन एक पूर्ण कंप्यूटर सिस्टम का आईएसए इम्यूलेशन या वर्चुअलाइजेशन प्रदान करता है। अतिथि ऑपरेटिंग सिस्टम और एप्लिकेशन एक वास्तविक कंप्यूटर (जैसे, VirtualBox, QEMU, XEN ) के रूप में वर्चुअल मशीन के शीर्ष पर चल सकते हैं ।

टाइप 2: एप्लीकेशन बाइनरी इंटरफेस (एबीआई) वर्चुअल मशीन एक अतिथि प्रक्रिया एबीआई एमुलेशन प्रदान करता है। उस ABI के खिलाफ आवेदन, मूल ABI अनुप्रयोगों की अन्य प्रक्रियाओं (जैसे, इंटेल की IA-32 निष्पादन परत, इटेनियम पर, Transmeta के कोड मॉर्फिंग के लिए X86 एमुलेशन, PowerPC इम्यूलेशन के लिए Apple के रोसेट्टा लेयर ) के साथ-साथ चल सकते हैं।

टाइप 3: वर्चुअल ISA वर्चुअल मशीन एक रनटाइम इंजन प्रदान करती है ताकि वर्चुअल ISA में कोड किए गए एप्लिकेशन उस पर निष्पादित हो सकें। वर्चुअल आईएसए आमतौर पर आईएसए अर्थ विज्ञान के उच्च स्तर और सीमित दायरे को परिभाषित करता है, इसलिए इसे पूर्ण कंप्यूटर प्रणाली (जैसे, सन माइक्रोसिस्टम्स की जेवीएम, माइक्रोसॉफ्ट की कॉमन लैंग्वेज रनटाइम, पैरट फाउंडेशन की तोता आभासी मशीन) का अनुकरण करने के लिए वर्चुअल मशीन की आवश्यकता नहीं होती है

टाइप 4: भाषा वर्चुअल मशीन एक रनटाइम इंजन प्रदान करती है जो एक अतिथि भाषा में व्यक्त किए गए कार्यक्रमों को निष्पादित करती है। प्रोग्राम को आमतौर पर वर्चुअल मशीन में अतिथि भाषा के स्रोत रूप में प्रस्तुत किया जाता है, बिना मशीन कोड में पूरी तरह से संकलित किए बिना। रनटाइम इंजन को प्रोग्राम की व्याख्या या अनुवाद करने की आवश्यकता होती है और कुछ कार्यक्षमताओं को भी पूरा करता है जो कि भाषा द्वारा स्मृति प्रबंधन (जैसे, बेसिक, लिस्प, टीसीएल, रूबी के लिए रनटाइम इंजन ) द्वारा अमूर्त हैं ।

वर्चुअल मशीन प्रकारों के बीच की सीमाएँ स्पष्ट नहीं हैं। उदाहरण के लिए, एक भाषा वर्चुअल मशीन भी प्रोग्राम को एक प्रकार की वर्चुअल ISA में संकलित करके और फिर उस वर्चुअल ISA की एक वर्चुअल मशीन पर कोड को निष्पादित करके एक वर्चुअल ISA वर्चुअल मशीन की तकनीक को नियोजित कर सकती है।

कई VM डिज़ाइन, जैसे BEAM , सीमाओं को पार करते हुए। वे 3rd और 4th दोनों श्रेणियों में फिट हो सकते हैं।

स्रोत:

  1. विकिपीडिया
  2. उन्नत डिजाइन और आभासी मशीनों का कार्यान्वयन; Xlao-Feng LI

यह अपेक्षाकृत नया है, यही वजह है कि इसमें कई उतार-चढ़ाव नहीं हैं। मैंने इसे उकेरा।
एरिक डेस कोर्टिस

स्पष्टीकरण के लिए धन्यवाद। ठीक वही जो मेरे द्वारा खोजा जा रहा था।
नम् तनवीर

10

मुझे लगता है कि आप http://en.wikipedia.org/wiki/Virtual_machine - उस शब्दावली के तहत पढ़ रहे हैं , BEAM JVM की तरह ही एक "प्रोसेस वर्चुअल मशीन" है।


2
सिस्टम स्तर की प्रक्रिया और एर्लैंग प्रक्रिया समान नहीं हैं। Erlang शब्दावली में प्रक्रिया वास्तव में उपयोगकर्ता भूमि प्रक्रियाएं हैं, और VM स्वयं एक एकल ऑपरेटिंग सिस्टम स्तर प्रक्रिया है।
kjw0188

2
@ kjw0188 मैं समझता हूं लेकिन मुझे OS प्रक्रिया और भाषा स्तर प्रक्रिया के बीच कोई अंतर नहीं दिखता है।
एरिक डेस कोर्टिस

1
@EricdesCourtis Erlang प्रक्रियाओं के बारे में अधिक पृष्ठभूमि: stackoverflow.com/questions/2708033/…
वार्ड बेकर

1
@WardBekker मदद के लिए धन्यवाद मैं Erlang प्रक्रियाओं को समझता हूं। मुझे अभी तक यकीन नहीं था कि किस प्रकार का वीएम कैटेगर एरलांग गिर गया।
एरिक डेस कोर्टिस

2
मैं आभासी मशीनों को बहुत ज्यादा वर्गीकृत करने से सावधान रहूंगा। वे जो करते हैं उसमें अद्वितीय होते हैं। और वे अक्सर एक विशिष्ट श्रेणी में रखने के लिए बहुत अलग होते हैं।
मैं 29:13
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.