जिस चीज से मैं समझता हूं कि एक वर्चुअल मशीन "सिस्टम वर्चुअल मशीन" या "प्रोसेस वर्चुअल मशीन" दोनों श्रेणियों में आती है। यह मेरे लिए अजीब है जहां BEAM झूठ है। क्या दूसरी तरह की वर्चुअल मशीन है जिसकी मुझे जानकारी नहीं है?
जिस चीज से मैं समझता हूं कि एक वर्चुअल मशीन "सिस्टम वर्चुअल मशीन" या "प्रोसेस वर्चुअल मशीन" दोनों श्रेणियों में आती है। यह मेरे लिए अजीब है जहां BEAM झूठ है। क्या दूसरी तरह की वर्चुअल मशीन है जिसकी मुझे जानकारी नहीं है?
जवाबों:
Erlang VM एक OS प्रक्रिया के रूप में चलता है। डिफ़ॉल्ट रूप से यह मशीन के अधिकतम उपयोग को प्राप्त करने के लिए प्रति कोर एक ओएस थ्रेड चलाता है। वीएम शुरू होने पर थ्रेड्स की संख्या और उनके द्वारा चलाए जाने वाले कोर पर सेट किया जा सकता है।
Erlang प्रक्रिया पूरी तरह से Erlang VM द्वारा कार्यान्वित की जाती है और इसका OS प्रक्रियाओं या OS थ्रेड्स से कोई संबंध नहीं होता है। तो भले ही आप एक मिलियन से अधिक प्रक्रियाओं की एरलांग प्रणाली चला रहे हों लेकिन यह अभी भी केवल एक ओएस प्रक्रिया है और प्रति कोर एक धागा है। तो इस अर्थ में Erlang VM एक "प्रोसेस वर्चुअल मशीन" है, जबकि Erlang सिस्टम खुद एक OS की तरह व्यवहार करता है और Erlang प्रक्रियाओं में OS प्रक्रियाओं के समान गुण होते हैं, उदाहरण के लिए आइसोलेशन। वास्तव में BEAM पर आधारित एक Erlang VM है, जो नंगे धातु पर चलता है और वास्तव में अपने आप में एक OS है, एक्सएल पर Erlang देखें ।
वैसे, लाखों एर्लैंग प्रक्रियाओं को चलाने वाले सिस्टम के लिए पूरी तरह से संभव है और यह वास्तव में कुछ उत्पादों में किया जाता है, उदाहरण के लिए व्हाट्सएप ।
हम निश्चित रूप से OSes के बारे में बहुत सोच रहे थे जब हमने मूल Erlang वातावरण को डिज़ाइन किया था।
वर्चुअल मशीन एक कंप्यूटिंग सिस्टम है। एक कंप्यूटिंग सिस्टम का अंतिम लक्ष्य क्रमादेशित तर्क को निष्पादित करना है। इस दृष्टिकोण से, आभासी मशीनों को अमूर्तता के स्तर और उत्सर्जन के दायरे के अनुसार 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 दोनों श्रेणियों में फिट हो सकते हैं।
स्रोत:
मुझे लगता है कि आप http://en.wikipedia.org/wiki/Virtual_machine - उस शब्दावली के तहत पढ़ रहे हैं , BEAM JVM की तरह ही एक "प्रोसेस वर्चुअल मशीन" है।