वर्चुअल मशीन: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(6 intermediate revisions by 3 users not shown)
Line 2: Line 2:


{{Program execution}}
{{Program execution}}
कंप्यूटिंग में, एक वर्चुअल (आभासी) मशीन एक कंप्यूटर प्रणाली का वर्चुअलाइजेशन (आभासीकरण)/इम्यूलेशन है। वर्चुअल मशीन कंप्यूटर संरचना पर आधारित हैं और एक भौतिक कंप्यूटर की कार्यक्षमता प्रदान करती हैं। उनके कार्यान्वयन में विशेष हार्डवेयर, सॉफ्टवेयर या संयोजन सम्मिलित हो सकते हैं। वर्चुअल मशीनें अलग-अलग होती हैं और उनके फंक्शन द्वारा व्यवस्थित होती हैं, यहां दिखाया गया है:
कंप्यूटिंग में, '''वर्चुअल (आभासी) मशीन''' एक कंप्यूटर प्रणाली का '''वर्चुअलाइजेशन (आभासीकरण)/इम्यूलेशन''' है। वर्चुअल मशीन कंप्यूटर संरचना पर आधारित हैं और एक भौतिक कंप्यूटर की कार्यक्षमता प्रदान करती हैं। उनके कार्यान्वयन में विशेष हार्डवेयर, सॉफ्टवेयर या संयोजन सम्मिलित हो सकते हैं। वर्चुअल मशीनें अलग-अलग होती हैं और उनके फंक्शन द्वारा व्यवस्थित होती हैं, यहां दिखाया गया है:


* ''सिस्टम वर्चुअल मशीन'' (जिसे पूर्ण वर्चुअलाइजेशन (आभासीकरण) वीएम भी कहा जाता है) वास्तविक मशीन का विकल्प प्रदान करता है। वे संपूर्ण ऑपरेटिंग सिस्टम को निष्पादित करने के लिए आवश्यक कार्यक्षमता प्रदान करते हैं। एक हाइपरवाइजर हार्डवेयर को साझा करने और प्रबंधित करने के लिए मूल कोड का उपयोग करता है, जो कई वातावरणों की स्वीकृति देता है जो एक दूसरे से अलग होते हैं, फिर भी एक ही भौतिक मशीन पर सम्मिलित होते हैं। आधुनिक हाइपरविजर मुख्य रूप से होस्ट सेंट्रल प्रोसेसिंग यूनिट से हार्डवेयर-समर्थित आभासीकरण, आभासीकरण-विशिष्ट हार्डवेयर का उपयोग करते हैं।
* ''सिस्टम वर्चुअल मशीन'' (जिसे पूर्ण वर्चुअलाइजेशन (आभासीकरण) वीएम भी कहा जाता है) वास्तविक मशीन का विकल्प प्रदान करता है। वे संपूर्ण ऑपरेटिंग सिस्टम को निष्पादित करने के लिए आवश्यक कार्यक्षमता प्रदान करते हैं। एक हाइपरवाइजर हार्डवेयर को साझा करने और प्रबंधित करने के लिए मूल कोड का उपयोग करता है, जो कई वातावरणों की स्वीकृति देता है जो एक दूसरे से अलग होते हैं, फिर भी एक ही भौतिक मशीन पर सम्मिलित होते हैं। आधुनिक हाइपरविजर मुख्य रूप से होस्ट सेंट्रल प्रोसेसिंग यूनिट से हार्डवेयर-समर्थित आभासीकरण, आभासीकरण-विशिष्ट हार्डवेयर का उपयोग करते हैं।
* प्रोसेस वर्चुअल मशीन को प्लेटफॉर्म से स्वतंत्र वातावरण में कंप्यूटर प्रोग्राम को निष्पादित करने के लिए डिज़ाइन किया गया है।
* प्रोसेस वर्चुअल मशीन को प्लेटफॉर्म से स्वतंत्र परिवेश में कंप्यूटर प्रोग्राम को निष्पादित करने के लिए डिज़ाइन किया गया है।


कुछ वर्चुअल मशीन एमुलेटर, जैसे कि त्वरित एमुलेटर और वीडियो गेम कंसोल एमुलेटर, को विभिन्न प्रणाली संरचना का एमुलेट (या वस्तुतः नकल) करने के लिए डिज़ाइन किया गया है, इस प्रकार सॉफ़्टवेयर एप्लिकेशन और ऑपरेटिंग सिस्टम को दूसरे सेंट्रल प्रोसेसिंग यूनिट या संरचना के लिए लिखे जाने की स्वीकृति देता है। ऑपरेटिंग-सिस्टम-स्तरीय वर्चुअलाइजेशन कंप्यूटर के संसाधनों को कर्नेल (ऑपरेटिंग सिस्टम) के माध्यम से विभाजित करने की स्वीकृति देता है। शर्तें सार्वभौमिक रूप से विनिमेय नहीं हैं।
कुछ वर्चुअल मशीन एमुलेटर, जैसे कि त्वरित एमुलेटर और वीडियो गेम कंसोल एमुलेटर, को विभिन्न प्रणाली संरचना का एमुलेट (या वस्तुतः नकल) करने के लिए डिज़ाइन किया गया है, इस प्रकार सॉफ़्टवेयर एप्लिकेशन और ऑपरेटिंग सिस्टम को दूसरे सेंट्रल प्रोसेसिंग यूनिट या संरचना के लिए लिखे जाने की स्वीकृति देता है। ऑपरेटिंग-सिस्टम-स्तरीय वर्चुअलाइजेशन कंप्यूटर के संसाधनों को कर्नेल (ऑपरेटिंग सिस्टम) के माध्यम से विभाजित करने की स्वीकृति देता है। शर्तें सार्वभौमिक रूप से विनिमेय नहीं हैं।
Line 17: Line 17:
एक वर्चुअल मशीन को मूल रूप से पोपेक और गोल्डबर्ग वर्चुअलाइजेशन आवश्यकताओं द्वारा वास्तविक कंप्यूटर मशीन के एक कुशल, अलग -अलग प्रतिलिपि के रूप में परिभाषित किया गया था।<ref name="Popek"/> वर्तमान उपयोग में वर्चुअल मशीनें सम्मिलित हैं जिनका किसी भी वास्तविक हार्डवेयर से कोई प्रत्यक्ष रूप से संबंध नहीं है।<ref name="Smith_Nair_05"/> वर्चुअल मशीन को संचालन करने वाले भौतिक, वास्तविक विश्व के हार्डवेयर को सामान्य रूप से 'होस्ट' कहा जाता है, और उस मशीन पर एम्यूलेट वर्चुअल मशीन को सामान्य रूप से 'गेस्ट' कहा जाता है। होस्ट कई गेस्ट का अनुकरण कर सकता है, जिनमें से प्रत्येक विभिन्न ऑपरेटिंग सिस्टम और हार्डवेयर प्लेटफॉर्म का अनुकरण कर सकता है।
एक वर्चुअल मशीन को मूल रूप से पोपेक और गोल्डबर्ग वर्चुअलाइजेशन आवश्यकताओं द्वारा वास्तविक कंप्यूटर मशीन के एक कुशल, अलग -अलग प्रतिलिपि के रूप में परिभाषित किया गया था।<ref name="Popek"/> वर्तमान उपयोग में वर्चुअल मशीनें सम्मिलित हैं जिनका किसी भी वास्तविक हार्डवेयर से कोई प्रत्यक्ष रूप से संबंध नहीं है।<ref name="Smith_Nair_05"/> वर्चुअल मशीन को संचालन करने वाले भौतिक, वास्तविक विश्व के हार्डवेयर को सामान्य रूप से 'होस्ट' कहा जाता है, और उस मशीन पर एम्यूलेट वर्चुअल मशीन को सामान्य रूप से 'गेस्ट' कहा जाता है। होस्ट कई गेस्ट का अनुकरण कर सकता है, जिनमें से प्रत्येक विभिन्न ऑपरेटिंग सिस्टम और हार्डवेयर प्लेटफॉर्म का अनुकरण कर सकता है।


कई ऑपरेटिंग सिस्टम संचालन की अपेक्षा वर्चुअल मशीनों का प्रारंभिक उद्देश्य था, ताकि कई सिंगल-टास्किंग ऑपरेटिंग सिस्टमों के बीच समय-साझाकरण की स्वीकृति दी जा सके। कुछ स्थितियों में, सिस्टम वर्चुअल मशीन को वर्चुअल मेमोरी की अवधारणा का एक सामान्यीकरण माना जा सकता है जो ऐतिहासिक रूप से इससे पहले था। अंतरराष्ट्रीय व्यवसाय मशीन निगम का सीपी/सीएमएस, पूर्ण वर्चुअलाइजेशन की स्वीकृति देने वाली पहली प्रणाली, प्रत्येक उपयोगकर्ता को एकल-उपयोगकर्ता ऑपरेटिंग सिस्टम, संवादात्मक मॉनिटर प्रणाली (सीएमएस) प्रदान करके समय साझाकरण को प्रयुक्त किया। वर्चुअल मेमोरी के विपरीत, सिस्टम वर्चुअल मशीन उपयोगकर्ता को उनके कोड में विशेषाधिकार प्राप्त निर्देश लिखने का अधिकार देती है। इस दृष्टिकोण के कुछ लाभ थे, जैसे इनपुट/आउटपुट उपकरणों को जोड़ना जो मानक प्रणाली द्वारा स्वीकृत नहीं है।<ref name="Smith_Nair_05"/>
कई ऑपरेटिंग सिस्टम संचालन की अपेक्षा वर्चुअल मशीनों का प्रारंभिक उद्देश्य था, ताकि कई एकल-टास्किंग ऑपरेटिंग सिस्टमों के बीच टाइम शेयरिंग की स्वीकृति दी जा सके। कुछ स्थितियों में, सिस्टम वर्चुअल मशीन को वर्चुअल मेमोरी की अवधारणा का एक सामान्यीकरण माना जा सकता है जो ऐतिहासिक रूप से इससे पहले था। अंतरराष्ट्रीय व्यवसाय मशीन निगम का कंट्रोल प्रोग्राम/कैम्ब्रिज मॉनिटर सिस्टम, पूर्ण वर्चुअलाइजेशन की स्वीकृति देने वाली पहली प्रणाली, प्रत्येक उपयोगकर्ता को एकल-उपयोगकर्ता ऑपरेटिंग सिस्टम, संवादात्मक मॉनिटर प्रणाली (सीएमएस) प्रदान करके टाइम शेयरिंग को प्रयुक्त किया। वर्चुअल मेमोरी के विपरीत, सिस्टम वर्चुअल मशीन उपयोगकर्ता को उनके कोड में विशेषाधिकार प्राप्त निर्देश लिखने का अधिकार देती है। इस दृष्टिकोण के कुछ लाभ थे, जैसे इनपुट/आउटपुट उपकरणों को जोड़ना जो मानक प्रणाली द्वारा स्वीकृत नहीं है।<ref name="Smith_Nair_05"/>


जैसे-जैसे तकनीक वर्चुअलाइजेशन के उद्देश्यों के लिए वर्चुअल मेमोरी विकसित करती है, कंप्यूटर ऑपरेटिंग सिस्टम पर कई वर्चुअल मशीनों के बीच मेमोरी साझाकरण को प्रबंधित करने के लिए मेमोरी ओवरकमिटमेंट (अधिवचनबद्‍धता) की नई प्रणाली प्रयुक्त की जा सकती है। एक ही भौतिक मशीन पर चलने वाली कई वर्चुअल मशीनों के बीच समान सामग्री वाले मेमोरी पेजों को साझा करना संभव हो सकता है, जिसके परिणामस्वरूप उन्हें एक ही भौतिक पेज पर कर्नेल समान-पेज संयोजन (केएसएम) नामक तकनीक द्वारा मैप किया जा सकता है। यह विशेष रूप से केवल पढ़ने योग्य पेजों के लिए उपयोगी है, जैसे कोड सेगमेंट रखने वाले, जो समान सॉफ़्टवेयर संचालन वाली कई वर्चुअल मशीनों, सॉफ़्टवेयर लाइब्रेरी, वेब सर्वर, मिडलवेयर घटकों आदि के स्थिति में है। गेस्ट ऑपरेटिंग सिस्टम की आवश्यकता नहीं है होस्ट हार्डवेयर के अनुरूप होने के लिए इस प्रकार भविष्य के सॉफ़्टवेयर का समर्थन करने के लिए एक ही कंप्यूटर (जैसे, विंडोज, लिनक्स, या ऑपरेटिंग सिस्टम के पूर्व संस्करण) पर विभिन्न ऑपरेटिंग सिस्टम संचालन संभव बनाता है।<ref name="Oliphant"/>
जैसे-जैसे तकनीक वर्चुअलाइजेशन के उद्देश्यों के लिए वर्चुअल मेमोरी विकसित करती है, कंप्यूटर ऑपरेटिंग सिस्टम पर कई वर्चुअल मशीनों के बीच मेमोरी साझाकरण को प्रबंधित करने के लिए मेमोरी ओवरकमिटमेंट (अधिवचनबद्‍धता) की नई प्रणाली प्रयुक्त की जा सकती है। एक ही भौतिक मशीन पर चलने वाली कई वर्चुअल मशीनों के बीच समान सामग्री वाले मेमोरी पेजों को साझा करना संभव हो सकता है, जिसके परिणामस्वरूप उन्हें एक ही भौतिक पेज पर कर्नेल समान-पेज संयोजन (केएसएम) नामक तकनीक द्वारा मैप किया जा सकता है। यह विशेष रूप से केवल पढ़ने योग्य पेजों के लिए उपयोगी है, जैसे कोड सेगमेंट रखने वाले, जो समान सॉफ़्टवेयर संचालन वाली कई वर्चुअल मशीनों, सॉफ़्टवेयर लाइब्रेरी, वेब सर्वर, मिडलवेयर घटकों आदि के स्थिति में है। गेस्ट ऑपरेटिंग सिस्टम की आवश्यकता नहीं है होस्ट हार्डवेयर के अनुरूप होने के लिए इस प्रकार भविष्य के सॉफ़्टवेयर का समर्थन करने के लिए एक ही कंप्यूटर (जैसे, विंडोज, लिनक्स, या ऑपरेटिंग सिस्टम के पूर्व संस्करण) पर विभिन्न ऑपरेटिंग सिस्टम संचालन संभव बनाता है।<ref name="Oliphant"/>
Line 23: Line 23:
एम्बेडेड (अंतः स्थापित) प्रणाली के संबंध में अलग गेस्ट ऑपरेटिंग सिस्टम का समर्थन करने के लिए वर्चुअल मशीन का उपयोग लोकप्रिय है। विशिष्ट उपयोग एक वास्तविक समय ऑपरेटिंग सिस्टम को एक साथ मुख्य जटिल ऑपरेटिंग सिस्टम, जैसे कि लिनक्स या विंडोज के साथ सक्रिय रखना होगा। एक अन्य उपयोग नवीन और अप्रमाणित सॉफ़्टवेयर के लिए अभी भी विकास के चरण में हैं, इसलिए यह एक सैंडबॉक्स (सॉफ़्टवेयर विकास) के अंदर सक्रिय है। ऑपरेटिंग सिस्टम के विकास के लिए वर्चुअल मशीनों के अन्य लाभ हैं और इसमें अधिकतम डिबगिंग अभिगम्य और तीव्र रीबूट सम्मिलित हो सकते हैं।<ref name="vmwarez_2006"/>
एम्बेडेड (अंतः स्थापित) प्रणाली के संबंध में अलग गेस्ट ऑपरेटिंग सिस्टम का समर्थन करने के लिए वर्चुअल मशीन का उपयोग लोकप्रिय है। विशिष्ट उपयोग एक वास्तविक समय ऑपरेटिंग सिस्टम को एक साथ मुख्य जटिल ऑपरेटिंग सिस्टम, जैसे कि लिनक्स या विंडोज के साथ सक्रिय रखना होगा। एक अन्य उपयोग नवीन और अप्रमाणित सॉफ़्टवेयर के लिए अभी भी विकास के चरण में हैं, इसलिए यह एक सैंडबॉक्स (सॉफ़्टवेयर विकास) के अंदर सक्रिय है। ऑपरेटिंग सिस्टम के विकास के लिए वर्चुअल मशीनों के अन्य लाभ हैं और इसमें अधिकतम डिबगिंग अभिगम्य और तीव्र रीबूट सम्मिलित हो सकते हैं।<ref name="vmwarez_2006"/>


अपने स्वयं के गेस्ट ऑपरेटिंग सिस्टम संचालन वाले एकाधिक वर्चुअल मशीन प्रायः सर्वर समेकन के लिए लगे रहते हैं।<ref name="vmware_2007"/>
अपने स्वयं के गेस्ट ऑपरेटिंग सिस्टम संचालन वाले एकाधिक वर्चुअल मशीन प्रायः सर्वर समेकन के लिए लगे हुए हैं।<ref name="vmware_2007"/>




=== प्रक्रिया आभासी मशीन ===
=== प्रक्रिया आभासी मशीन ===
''<nowiki>''एप्लिकेशन वर्चुअल मशीन''</nowiki> यहां पुनर्निर्देश करता है। एप्लिकेशन वर्चुअलाइजेशन के साथ भ्रमित न हों।''


{{Redirect-distinguish|Application virtual machine|application virtualization}}
एक प्रक्रिया वर्चुअल मशीन, जिसे कभी-कभी एप्लिकेशन वर्चुअल मशीन या प्रबंधित रनटाइम परिवेश (एमआरई) कहा जाता है, होस्ट ऑपरेटिंग सिस्टम के अंदर एक सामान्य एप्लिकेशन के रूप में सक्रिय है और एकल प्रक्रिया का समर्थन करता है। यह तब बनता है जब वह प्रक्रिया प्रारंभ होती है और जब वह बाहर निकलती है तो नष्ट हो जाती है। इसका उद्देश्य एक प्रणाली प्लेटफ़ॉर्म-स्वतंत्र प्रोग्रामिंग परिवेश प्रदान करना है जो अंतर्निहित हार्डवेयर या ऑपरेटिंग सिस्टम के विवरणों को दूर करता है और किसी प्रोग्राम को किसी भी प्लेटफ़ॉर्म पर उसी तरह से निष्पादित करने की स्वीकृति देता है।
एक प्रक्रिया वर्चुअल मशीन, जिसे कभी-कभी एप्लिकेशन वर्चुअल मशीन या प्रबंधित रनटाइम एनवायरनमेंट (MRE) कहा जाता है, होस्ट OS के अंदर एक सामान्य एप्लिकेशन के रूप में चलता है और एकल प्रक्रिया का समर्थन करता है। यह तब बनता है जब वह प्रक्रिया शुरू होती है और जब वह बाहर निकलती है तो नष्ट हो जाती है। इसका उद्देश्य एक प्रणाली प्लेटफ़ॉर्म-स्वतंत्र प्रोग्रामिंग वातावरण प्रदान करना है जो अंतर्निहित हार्डवेयर या ऑपरेटिंग सिस्टम के विवरणों को दूर करता है और किसी प्रोग्राम को किसी भी प्लेटफ़ॉर्म पर उसी तरह से निष्पादित करने की स्वीकृति देता है।


एक प्रक्रिया वर्चुअल मशीन एक उच्च-स्तरीय अमूर्तता प्रदान करती है{{snd}} एक उच्च-स्तरीय प्रोग्रामिंग भाषा (सिस्टम वर्चुअल मशीन के निम्न-स्तरीय ISA अमूर्तता की तुलना में)प्रक्रिया वर्चुअल मशीन एक दुभाषिया (कंप्यूटिंग) का उपयोग करके कार्यान्वित की जाती हैं; संकलित प्रोग्रामिंग भाषाओं के तुलनीय प्रदर्शन को समय-समय पर संकलन के उपयोग से प्राप्त किया जा सकता है।{{Citation needed|date=November 2015}}
एक प्रक्रिया वर्चुअल मशीन एक उच्च-स्तरीय अमूर्तता प्रदान करती है एक उच्च-स्तरीय प्रोग्रामिंग भाषा (सिस्टम वर्चुअल मशीन के निम्न-स्तरीय उद्योग मानक संरचना अमूर्तता की तुलना में) है। प्रक्रिया वर्चुअल मशीन एक दुभाषिया (कंप्यूटिंग) का उपयोग करके कार्यान्वित की जाती हैं; संकलित प्रोग्रामिंग भाषाओं के तुलनीय प्रदर्शन को समय-समय पर संकलन के उपयोग से प्राप्त किया जा सकता है।{{Citation needed|date=November 2015}}
इस प्रकार का वर्चुअल मशीन जावा (प्रोग्रामिंग लैंग्वेज) के साथ लोकप्रिय हो गया है, जिसे जावा वर्चुअल मशीन का उपयोग करके कार्यान्वित किया जाता है। अन्य उदाहरणों में पैरट वर्चुअल मशीन और .NET फ्रेमवर्क सम्मिलित हैं, जो कॉमन लैंग्वेज रनटाइम नामक वर्चुअल मशीन पर चलता है। ये सभी किसी भी कंप्यूटर भाषा के लिए अमूर्त परत के रूप में काम कर सकते हैं।


प्रक्रिया वर्चुअल मशीन का एक विशेष स्थिति प्रणाली है जो एक (संभावित रूप से विषम) कंप्यूटर क्लस्टर के संचार तंत्र पर अमूर्त है। इस तरह के वर्चुअल मशीन में एक प्रक्रिया नहीं होती है, लेकिन क्लस्टर में प्रत्येक भौतिक मशीन के लिए एक प्रक्रिया होती है। वे इंटरकनेक्ट और OS द्वारा प्रदान किए गए संचार तंत्र के बजाय प्रोग्रामर को एल्गोरिदम पर ध्यान केंद्रित करके प्रोग्रामिंग समवर्ती अनुप्रयोगों के कार्य को आसान बनाने के लिए डिज़ाइन किए गए हैं। वे इस तथ्य को नहीं छिपाते हैं कि संचार होता है, और इस तरह क्लस्टर को एक मशीन के रूप में प्रस्तुत करने का प्रयास नहीं करते हैं।{{Citation needed|date=March 2013}}
इस प्रकार का वर्चुअल मशीन जावा (प्रोग्रामिंग भाषा) के साथ लोकप्रिय हो गया है, जिसे जावा वर्चुअल मशीन का उपयोग करके कार्यान्वित किया जाता है। अन्य उदाहरणों में पैरट वर्चुअल मशीन और नेटवर्क समर्थित तकनीक फ्रेमवर्क सम्मिलित हैं, जो सामान्य भाषा रनटाइम नामक वर्चुअल मशीन पर सक्रिय है। ये सभी किसी भी कंप्यूटर भाषा के लिए अमूर्त परत के रूप में काम कर सकते हैं।


अन्य प्रक्रिया वर्चुअल मशीन के विपरीत, ये प्रणाली एक विशिष्ट प्रोग्रामिंग भाषा प्रदान नहीं करते हैं, लेकिन एक मौजूदा भाषा में सन्निहित हैं; आमतौर पर ऐसी प्रणाली कई भाषाओं (जैसे, सी (प्रोग्रामिंग भाषा) और फोरट्रान) के लिए बाइंडिंग प्रदान करती है।{{Citation needed|date=March 2013}} समानांतर वर्चुअल मशीन (पीवीएम) और संदेश पासिंग इंटरफेस (एमपीआई) इसके उदाहरण हैं। वे सख्ती से वर्चुअल मशीन नहीं हैं क्योंकि शीर्ष पर चल रहे एप्लिकेशन अभी भी सभी ओएस सेवाओं तक पहुंच रखते हैं और इसलिए प्रणाली मॉडल तक ही सीमित नहीं हैं।
प्रक्रिया वर्चुअल मशीन का एक विशेष स्थिति प्रणाली है जो एक (संभावित रूप से विषम) कंप्यूटर संघ के संचार तंत्र पर अमूर्त है। इस तरह के वर्चुअल मशीन में एक प्रक्रिया नहीं होती है, लेकिन संघ में प्रत्येक भौतिक मशीन के लिए एक प्रक्रिया होती है। वे अन्तर्संबद्ध और ऑपरेटिंग सिस्टम द्वारा प्रदान किए गए संचार तंत्र के अतिरिक्त प्रोग्रामर को एल्गोरिदम पर ध्यान केंद्रित करके प्रोग्रामिंग समवर्ती एप्लीकेशन के कार्य को आसान बनाने के लिए डिज़ाइन किए गए हैं। वे इस तथ्य को नहीं छिपाते हैं कि संचार होता है, और इस तरह संघ को एक मशीन के रूप में प्रस्तुत करने का प्रयास नहीं करते हैं।{{Citation needed|date=March 2013}}
 
अन्य प्रक्रिया वर्चुअल मशीन के विपरीत, ये प्रणाली एक विशिष्ट प्रोग्रामिंग भाषा प्रदान नहीं करते हैं, लेकिन एक सम्मिलित भाषा में सन्निहित हैं; सामान्य रूप से ऐसी प्रणाली कई भाषाओं (जैसे, C (प्रोग्रामिंग भाषा) और फोरट्रान) के लिए बाइंडिंग प्रदान करती है।{{Citation needed|date=March 2013}} सदृश वर्चुअल मशीन (पीवीएम) और संदेश पासिंग इंटरफेस (एमपीआई) इसके उदाहरण हैं। वे पूरी तरह से वर्चुअल मशीन नहीं हैं क्योंकि शीर्ष पर चल रहे एप्लिकेशन अभी भी सभी ऑपरेटिंग सिस्टम सेवाओं तक अभिगम्य रखते हैं और इसलिए प्रणाली मॉडल तक ही सीमित नहीं हैं।


== इतिहास ==
== इतिहास ==
{{See also|History of CP/CMS|timeline of virtualization development}}
''यह भी देखें: कंट्रोल प्रोग्राम/कैम्ब्रिज मॉनिटर सिस्टम का इतिहास और वर्चुअलाइजेशन विकास की समयरेखा''
 
सिस्टम वर्चुअल मशीन और प्रोसेस वर्चुअल मशीन दोनों ही 1960 के दशक की हैं और सक्रिय विकास के क्षेत्र बने हुए हैं।
सिस्टम वर्चुअल मशीन और प्रोसेस वर्चुअल मशीन दोनों ही 1960 के दशक की हैं और सक्रिय विकास के क्षेत्र बने हुए हैं।


प्रणाली वर्चुअल मशीनें टाइम-साझाकरण से बाहर हो गईं, जैसा कि विशेष रूप से संगत समय-साझाकरण प्रणाली (सीटीएसएस) में प्रयुक्त किया गया है। टाइम-साझाकरण ने कई उपयोगकर्ताओं को एक कंप्यूटर का उपयोग करने की स्वीकृति दी समवर्ती कंप्यूटिंग: प्रत्येक प्रोग्राम को मशीन तक पूर्ण पहुंच दिखाई दी, लेकिन उस समय केवल एक प्रोग्राम को निष्पादित किया गया था, जिसमें प्रणाली टाइम स्लाइस में प्रोग्राम के बीच स्विच कर रहा था, प्रत्येक बार स्थिति को सहेज रहा था और पुनर्स्थापित कर रहा था। . यह आभासी मशीनों में विकसित हुआ, विशेष रूप से अंतरराष्ट्रीय व्यवसाय मशीन निगम की अनुसंधान प्रणालियों के माध्यम से: अंतरराष्ट्रीय व्यवसाय मशीन निगम M44/44X|M44/44X, जो आंशिक वर्चुअलाइजेशन का उपयोग करता है, और अंतरराष्ट्रीय व्यवसाय मशीन निगम नियंत्रण प्रोग्राम-40|नियंत्रण प्रोग्राम-40 और SIMMON, जो पूर्ण वर्चुअलाइजेशन का उपयोग करते हैं, और इसके शुरुआती उदाहरण थे hypervisors. पहली व्यापक रूप से उपलब्ध वर्चुअल मशीन संरचना नियंत्रण प्रोग्राम-67/कैम्ब्रिज मॉनिटर प्रणाली थी (विवरण के लिए नियंत्रण प्रोग्राम/कैम्ब्रिज मॉनिटर प्रणाली का इतिहास देखें)। टाइम-साझाकरण के लिए एक होस्ट प्रणाली पर कई वर्चुअल मशीनों का उपयोग करने के बीच एक महत्वपूर्ण अंतर था, जैसा कि M44/44X और नियंत्रण प्रोग्राम-40 में, और प्रोटोटाइप के लिए होस्ट प्रणाली पर एक वर्चुअल मशीन का उपयोग करना, जैसा कि SIMMON में है। एम्यूलेटर्स, अनुकूलता के लिए पहले के प्रणाली के हार्डवेयर एमुलेशन के साथ, 1963 में अंतरराष्ट्रीय व्यवसाय मशीन निगम प्रणाली/360 के समय के हैं,<ref name="Pugh_1995"/><ref name="Pugh_1991"/>जबकि सॉफ्टवेयर एमुलेशन (तत्कालीन सिमुलेशन कहा जाता है) इससे पहले का है।
प्रणाली वर्चुअल मशीनें टाइम शेयरिंग से बाहर हो गईं, जैसा कि विशेष रूप से संगत टाइम शेयरिंग प्रणाली (सीटीएसएस) में प्रयुक्त किया गया है। टाइम शेयरिंग ने कई उपयोगकर्ताओं को एक कंप्यूटर का उपयोग करने की स्वीकृति दी समवर्ती कंप्यूटिंग: प्रत्येक प्रोग्राम को मशीन तक पूर्ण अभिगम दिखाई दी, लेकिन उस समय केवल एक प्रोग्राम को निष्पादित किया गया था, जिसमें प्रणाली टाइम स्लाइस में प्रोग्राम के बीच स्विच कर रहा था, प्रत्येक स्थिति को सहेज और पुनर्स्थापित कर रहा था। यह आभासी मशीनों में विकसित हुआ, विशेष रूप से अंतरराष्ट्रीय व्यवसाय मशीन निगम की अनुसंधान प्रणालियों के माध्यम से अंतरराष्ट्रीय व्यवसाय मशीन निगम एम44/44एक्स, जो आंशिक वर्चुअलाइजेशन का उपयोग करता है, और अंतरराष्ट्रीय व्यवसाय मशीन निगम नियंत्रण प्रोग्राम-40 और सिमुलेशन मॉनिटर, जो पूर्ण वर्चुअलाइजेशन का उपयोग करते हैं, और इसके प्रारम्भिक उदाहरण हाइपरविजर थे पहली व्यापक रूप से उपलब्ध वर्चुअल मशीन संरचना नियंत्रण प्रोग्राम-67/कैम्ब्रिज मॉनिटर प्रणाली थी (विवरण के लिए नियंत्रण प्रोग्राम/कैम्ब्रिज मॉनिटर प्रणाली का इतिहास देखें)। टाइम शेयरिंग के लिए एक होस्ट प्रणाली पर कई वर्चुअल मशीनों का उपयोग करने के बीच एक महत्वपूर्ण अंतर था, जैसा कि एम44/44एक्स और नियंत्रण प्रोग्राम-40 में, और प्रोटोटाइप के लिए होस्ट प्रणाली पर एक वर्चुअल मशीन का उपयोग करना, जैसा कि सिमुलेशन मॉनिटर में है। एम्यूलेटर्स, अनुकूलता के लिए पहले के प्रणाली के हार्डवेयर एमुलेशन के साथ, 1963 में अंतरराष्ट्रीय व्यवसाय मशीन निगम प्रणाली/360 के समय के हैं,<ref name="Pugh_1995"/><ref name="Pugh_1991"/> जबकि सॉफ्टवेयर एमुलेशन (तत्कालीन सिमुलेशन कहा जाता है) इससे पूर्व का है।


प्रक्रिया आभासी मशीनें मूल रूप से एक मध्यवर्ती भाषा के लिए अमूर्त प्लेटफार्मों के रूप में उत्पन्न हुईं, जो एक संकलक द्वारा एक कार्यक्रम के मध्यवर्ती प्रतिनिधित्व के रूप में उपयोग की जाती हैं; शुरुआती उदाहरण 1966 के आसपास के हैं। 1966 के शुरुआती उदाहरण -कोड मशीन थे, एक वर्चुअल मशीन जो बीसीपीएल कंपाइलर के कंपाइलर # फ्रंट एंड द्वारा उत्सर्जित ओ-कोड (ऑब्जेक्ट कोड) को निष्पादित करती है। इस अमूर्तता ने कंपाइलर को एक नए कंपाइलर # बैक एंड को प्रयुक्त करके आसानी से एक नए संरचना में पोर्ट करने की स्वीकृति दी, जिसने मौजूदा ओ-कोड लिया और इसे अंतर्निहित भौतिक मशीन के लिए मशीन कोड में संकलित किया। यूलर (प्रोग्रामिंग लैंग्वेज) भाषा ने एक समान डिज़ाइन का उपयोग किया, जिसमें पी (पोर्टेबल) नाम की मध्यवर्ती भाषा थी।<ref name="Wirth_1966"/>यह 1970 के आसपास पास्कल (प्रोग्रामिंग लैंग्वेज) द्वारा लोकप्रिय हुआ, विशेष रूप से पास्कल-पी प्रणाली (1973) और पास्कल-एस कंपाइलर (1975) में, जिसमें इसे पी-कोड मशीन कहा गया। पी-कोड मशीन। यह प्रभावशाली रहा है, और इस अर्थ में आभासी मशीनों को प्रायः पी-कोड मशीन कहा जाता है। एक मध्यवर्ती भाषा होने के अलावा, पास्कल पी-कोड को वर्चुअल मशीन को प्रयुक्त करने वाले दुभाषिया द्वारा सीधे निष्पादित किया गया था, विशेष रूप से यूसीएसडी पास्कल (1978) में; इसने बाद के दुभाषियों को प्रभावित किया, विशेष रूप से जावा वर्चुअल मशीन (जेवीएम)एक और प्रारंभिक उदाहरण SNOBOL4 (1967) था, जिसे SNOBOL इम्प्लीमेंटेशन लैंग्वेज (SIL) में लिखा गया था, जो एक वर्चुअल मशीन के लिए एक असेंबली भाषा थी, जिसे तब मैक्रो असेंबलर के माध्यम से अपने मूल असेंबलर में ट्रांसप्लिंग करके भौतिक मशीनों पर लक्षित किया गया था।<ref name="Griswold_1972"/>मैक्रों तब से समर्थन से बाहर हो गए हैं, इसलिए यह दृष्टिकोण कम प्रभावशाली रहा है। प्रोसेस वर्चुअल मशीनें शुरुआती माइक्रो कंप्यूटर सॉफ़्टवेयर को प्रयुक्त करने के लिए एक लोकप्रिय दृष्टिकोण थीं, जिसमें टाइनी बेसिक # वर्चुअल मशीन और एडवेंचर गेम्स में कार्यान्वयन, पिरामिड 2000 जैसे एक सामान्य-उद्देश्य इंजन जैसे इन्फोकॉम की जेड-मशीन, जिसे ग्राहम नेल्सन तर्क संभवतः अब तक बनाई गई सबसे पोर्टेबल वर्चुअल मशीन है।<ref name="inform-interpreters"/>
प्रक्रिया आभासी मशीनें मूल रूप से एक मध्यवर्ती भाषा के लिए अमूर्त प्लेटफार्मों के रूप में उत्पन्न हुईं, जो एक संकलक द्वारा एक कार्यक्रम के मध्यवर्ती प्रतिनिधित्व के रूप में उपयोग की जाती हैं; प्रारम्भिक उदाहरण 1966 के आसपास के हैं। 1966 के प्रारम्भिक उदाहरण ऑब्जेक्ट-कोड मशीन थे, एक वर्चुअल मशीन जो सामान्य संयुक्त प्रोग्रामिंग भाषा कंपाइलर के फ्रंट एंड द्वारा उत्सर्जित ओ-कोड (ऑब्जेक्ट कोड) को निष्पादित करती है। इस अमूर्तता ने कंपाइलर को एक नए कंपाइलर बैक एंड को प्रयुक्त करके आसानी से एक नए संरचना में पोर्ट करने की स्वीकृति दी, जिसने सम्मिलित ऑब्जेक्ट-कोड लिया और इसे अंतर्निहित भौतिक मशीन के लिए मशीन कोड में संकलित किया। यूलर (प्रोग्रामिंग भाषा) भाषा ने एक समान डिज़ाइन का उपयोग किया, जिसमें पी (पोर्टेबल) नाम की मध्यवर्ती भाषा थी।<ref name="Wirth_1966"/> यह 1970 के आसपास पास्कल (प्रोग्रामिंग भाषा) द्वारा लोकप्रिय हुआ, विशेष रूप से पास्कल-पी प्रणाली (1973) और पास्कल-एस कंपाइलर (1975) में,जिसमें इसे पी-कोड और परिणामी मशीन को पी-कोड मशीन कहा गया। यह प्रभावशाली रहा है, और इस अर्थ में आभासी मशीनों को प्रायः पी-कोड मशीन कहा जाता है। एक द्वितीयक भाषा होने के अतिरिक्त, पास्कल पी-कोड को वर्चुअल मशीन को प्रयुक्त करने वाले दुभाषिया द्वारा प्रत्यक्ष रूप से निष्पादित किया गया था, विशेष रूप से यूसीएसडी पास्कल (1978) में; इसने बाद के दुभाषियों को प्रभावित किया, विशेष रूप से यूसीएसडी पास्कल (1978) में; इसने बाद के दुभाषियों को प्रभावित किया, विशेष रूप से जावा वर्चुअल मशीन (जेवीएम) को प्रभावित किया। एक अन्य प्रारंभिक उदाहरण स्ट्रिंग ओरिएंटेड (शृंखला उन्मुख) और प्रतीकात्मक भाषा4 (1967) था, जिसे स्ट्रिंग ओरिएंटेड और प्रतीकात्मक भाषा कार्यान्वयन भाषा (एसआईएल) में लिखा गया था, जो एक वर्चुअल मशीन के लिए एक असेंबली भाषा थी, जिसे तब मैक्रो असेंबलर के माध्यम से अपने मूल असेंबलर में ट्रांसप्लिंग करके भौतिक मशीनों पर प्रकाशित किया गया था।<ref name="Griswold_1972"/> मैक्रों तब से समर्थन से बाहर हो गए हैं, इसलिए यह दृष्टिकोण कम प्रभावशाली रहा है। प्रोसेस वर्चुअल मशीनें प्रारम्भिक माइक्रो कंप्यूटर सॉफ़्टवेयर को प्रयुक्त करने के लिए एक लोकप्रिय दृष्टिकोण थीं, जिसमें टाइनी प्रारंभ का सर्व-उद्देश्यीय प्रतीकात्मक निर्देश कोड वर्चुअल मशीन और एडवेंचर गेम्स में कार्यान्वयन, पिरामिड 2000 जैसे एक सामान्य-उद्देश्य इंजन जैसे इन्फोकॉम की जेड-मशीन, जिसे ग्राहम नेल्सन तर्क संभवतः अब तक बनाई गई सबसे पोर्टेबल वर्चुअल मशीन है।<ref name="inform-interpreters"/>


स्मॉलटॉक-80 के कार्यान्वयन में महत्वपूर्ण प्रगति हुई,<ref name="Goldberg_1983"/>विशेष रूप से Deutsch/Schiffmann कार्यान्वयन<ref name="Deutsch_1984"/>जिसने प्रक्रिया वर्चुअल मशीन का उपयोग करने वाले कार्यान्वयन दृष्टिकोण के रूप में जस्ट-इन-टाइम संकलन | जस्ट-इन-टाइम (JIT) संकलन को आगे बढ़ाया।<ref name="Aycock_2003"/>बाद में उल्लेखनीय स्मॉलटाक वर्चुअल मशीन विजुअलवर्क्स, स्क्वीक वर्चुअल मशीन,<ref name="Ingalls_1997"/>और स्ट्रॉन्गटॉक।<ref name="Griswold_1993"/>एक संबंधित भाषा जिसने बहुत सारे वर्चुअल मशीन इनोवेशन का निर्माण किया, वह सेल्फ (प्रोग्रामिंग लैंग्वेज) प्रोग्रामिंग लैंग्वेज थी,<ref name="Ungar_1987"/>जिसने अनुकूली अनुकूलन का बीड़ा उठाया<ref name="Hoelzle"/>और ट्रेसिंग कचरा संग्रह#जेनरेशनल जीसी (अल्पकालिक जीसी)। ये तकनीक 1999 में हॉटस्पॉट (वर्चुअल मशीन) जावा वर्चुअल मशीन में व्यावसायिक रूप से सफल साबित हुई।<ref name="Paleczny_2001"/>अन्य नवाचारों में एक रजिस्टर-आधारित वर्चुअल मशीन सम्मिलित है, जो स्टैक-आधारित वर्चुअल मशीन के बजाय अंतर्निहित हार्डवेयर से अधिकतममेल खाती है, जो प्रोग्रामिंग भाषा के लिए एक करीबी मैच है; 1995 में, लिम्बो (प्रोग्रामिंग भाषा) भाषा के लिए डिस वर्चुअल मशीन द्वारा इसका बीड़ा उठाया गया था। OpenJ9, OpenJDK में HotSpot JVM का एक विकल्प है और हॉटस्पॉट की तुलना में अधिकतमस्टार्टअप और कम संसाधन खपत का दावा करने वाला एक ओपन सोर्स एक्लिप्स प्रोजेक्ट है।
स्मॉलटॉक-80 के कार्यान्वयन में महत्वपूर्ण प्रगति हुई,<ref name="Goldberg_1983"/>विशेष रूप से ड्यूश/शिफमैन कार्यान्वयन<ref name="Deutsch_1984"/> जिसने प्रक्रिया वर्चुअल मशीन का उपयोग करने वाले कार्यान्वयन दृष्टिकोण के रूप में सही समय पर (जेआईटी) संकलन को आगे बढ़ाया।<ref name="Aycock_2003"/> बाद में उल्लेखनीय स्मॉलटाक वर्चुअल मशीन विजुअलवर्क्स, स्क्वीक वर्चुअल मशीन,<ref name="Ingalls_1997"/>और स्ट्रॉन्गटॉक थे।<ref name="Griswold_1993"/> एक संबंधित भाषा जिसने बहुत सारे वर्चुअल मशीन नवाचार का निर्माण किया, वह सेल्फ (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा थी,<ref name="Ungar_1987"/> जिसने अनुकूली अनुकूलन <ref name="Hoelzle"/> और पारंपरिक गारवेज संग्रह का नेतृत्व किया। ये तकनीकें 1999 में हॉटस्पॉट जावा वर्चुअल मशीन में व्यावसायिक रूप से सफल प्रमाणित हुईं।<ref name="Paleczny_2001"/> अन्य नवाचारों में एक पंजीकृत-आधारित वर्चुअल मशीन सम्मिलित है, जो स्टैक-आधारित वर्चुअल मशीन के अतिरिक्त अंतर्निहित हार्डवेयर से अधिकतम अनुरूप है, जो प्रोग्रामिंग भाषा के लिए एक लगभग समान है; 1995 में, लिम्बो (प्रोग्रामिंग भाषा) भाषा के लिए डिस वर्चुअल मशीन द्वारा अग्रणी था। ओपनजे9, ओपनजेडीके में हॉटस्पॉट जावा वर्चुअल मशीन का एक विकल्प है और हॉटस्पॉट की तुलना में अधिकतम स्टार्टअप और कम संसाधन उपभोग का दावा करने वाला एक मुक्त-स्त्रोत ग्रहण परियोजना है।


== पूर्ण वर्चुअलाइजेशन ==
== पूर्ण वर्चुअलाइजेशन ==
{{Main|Full virtualization}}
{{Main|पूर्ण वर्चुअलाइजेशन}}
[[File:Hardware Virtualization (copy).svg|thumb|पूर्ण वर्चुअलाइजेशन का तार्किक आरेख]]पूर्ण वर्चुअलाइजेशन में, वर्चुअल मशीन एक असंशोधित गेस्ट OS (एक ही निर्देश सेट के लिए डिज़ाइन किया गया) को अलगाव में चलाने के लिए पर्याप्त हार्डवेयर का अनुकरण करती है। यह दृष्टिकोण 1966 में अंतरराष्ट्रीय व्यवसाय मशीन निगम नियंत्रण प्रोग्राम-40 और नियंत्रण प्रोग्राम-67, वर्चुअल मशीन (ऑपरेटिंग सिस्टम) परिवार के पूर्ववर्तियों के साथ अग्रणी था।
[[File:Hardware Virtualization (copy).svg|thumb|पूर्ण वर्चुअलाइजेशन का तार्किक आरेख]]पूर्ण वर्चुअलाइजेशन में, वर्चुअल मशीन एक असंशोधित गेस्ट ऑपरेटिंग सिस्टम (एक ही निर्देश सेट के लिए डिज़ाइन किया गया) को आइसोलेशन में सक्रिय करने के लिए पर्याप्त हार्डवेयर का अनुकरण करती है। यह दृष्टिकोण 1966 में अंतरराष्ट्रीय व्यवसाय मशीन निगम नियंत्रण प्रोग्राम-40 और नियंत्रण प्रोग्राम-67, वर्चुअल मशीन (ऑपरेटिंग सिस्टम) परिवार के पूर्ववर्तियों के साथ अग्रणी था।
 
मेनफ्रेम क्षेत्र के बाहर के उदाहरणों में पैरेलल्स वर्कस्टेशन, मीडिया अभिगम नियंत्रण एड्रेस के लिए पैरेलल्स डेस्कटॉप, वर्चुअलबॉक्स, वर्चुअल आयरन, ओरेकल वर्चुअल मशीन, माइक्रोसॉफ्ट वर्चुअल पीसी, माइक्रोसॉफ्ट वर्चुअल सर्वर, हाइपर-वी, वीएमवेयर फ्यूजन, वीएमवेयर वर्कस्टेशन, वीएमवेयर सर्वर ( स्थगित, जिसे पहले जीएसएक्स सर्वर कहा जाता था)  वीएमवेयर ईएसएक्सआई, त्वरित एमुलेटर, ऑपरेटिंग सिस्टम के लिए अनुकूली डोमेन परिवेश, मीडिया अभिगम नियंत्रण एड्रेस-ऑन-लिनक्स, विन4बीएसडी, विन4लिन, और एगेनेरा ब्लेड तकनीक सम्मिलित हैं।
 
=== हार्डवेयर-सहायता प्राप्त वर्चुअलाइजेशन ===
{{Main|हार्डवेयर-सहायता प्राप्त वर्चुअलाइजेशन}}


मेनफ्रेम फील्ड के बाहर के उदाहरणों में पैरेलल्स वर्कस्टेशन, मैक के लिए पैरेलल्स डेस्कटॉप, वर्चुअलबॉक्स, वर्चुअल आयरन, ओरेकल वर्चुअल मशीन, माइक्रोसॉफ्ट वर्चुअल पीसी, माइक्रोसॉफ्ट वर्चुअल सर्वर, हाइपर-वी, वीएमवेयर फ्यूजन, वीएमवेयर वर्कस्टेशन, वीएमवेयर सर्वर (बंद, जिसे पहले जीएसएक्स सर्वर कहा जाता था) सम्मिलित हैं। , VMware ESXi, त्वरित एमुलेटर, ऑपरेटिंग सिस्टम के लिए अनुकूली डोमेन पर्यावरण, Mac-on-Linux, Win4BSD, Win4Lin, और Egenera vBlade तकनीक।
हार्डवेयर-सहायता प्राप्त वर्चुअलाइजेशन में, हार्डवेयर संरचना सहायता प्रदान करता है जो वर्चुअल मशीन मॉनिटर बनाने की सुविधा देता है और गेस्ट ऑपरेटिंग सिस्टम को आइसोलेशन में चलाने की स्वीकृति देता है।<ref name="Uhlig_2005"/> 1972 में अंतरराष्ट्रीय व्यवसाय मशीन निगम प्रणाली/370 पर पहली बार हार्डवेयर-सहायता प्राप्त वर्चुअलाइजेशन प्रस्तुत किया गया था, वर्चुअल मशीन (ऑपरेटिंग सिस्टम)/370 के साथ प्रयोग के लिए अंतरराष्ट्रीय व्यवसाय मशीन निगम द्वारा एक आधिकारिक उत्पाद के रूप में प्रस्तुत किया गया पहला वर्चुअल मशीन ऑपरेटिंग सिस्टम है।<ref>Randal, A. (2019). The Ideal Versus the Real: Revisiting the History of Virtual Machines and Containers.</ref>


=== हार्डवेयर-असिस्टेड वर्चुअलाइजेशन ===
2005 और 2006 में, इंटेल और एएमडी ने वर्चुअलाइजेशन का समर्थन करने के लिए अतिरिक्त हार्डवेयर प्रदान किया। सन माइक्रोसिस्टम्स (अब ओरेकल निगम) ने 2005 में अपने अल्ट्रास्पार्क टी-सीरीज़ प्रोसेसर में इसी तरह की विशेषताएं जोड़ीं है। ऐसे हार्डवेयर के लिए अनुकूलित वर्चुअलाइजेशन प्लेटफॉर्म के उदाहरणों में कर्नेल-आधारित वर्चुअल मशीन, वीएमवेयर वर्कस्टेशन, वीएमवेयर फ्यूजन, हाइपरवाइजर, विंडोज वर्चुअल पर्सनल कंप्यूटर, एक्सईएन, मीडिया अभिगम नियंत्रण एड्रेस के लिए समान डेस्कटॉप, एसपीएआरसी के लिए ओरेकल वर्चुअल मशीन सर्वर, वर्चुअलबॉक्स और समान वर्कस्टेशन सम्मिलित हैं।
{{Main|Hardware-assisted virtualization}}
हार्डवेयर-असिस्टेड वर्चुअलाइजेशन में, हार्डवेयर आर्किटेक्चरल सपोर्ट प्रदान करता है जो वर्चुअल मशीन मॉनिटर बनाने की सुविधा देता है और गेस्ट OS को आइसोलेशन में चलाने की स्वीकृति देता है।<ref name="Uhlig_2005"/>वर्चुअल मशीन (ऑपरेटिंग सिस्टम) | वर्चुअल मशीन/370 के साथ प्रयोग के लिए 1972 में अंतरराष्ट्रीय व्यवसाय मशीन निगम प्रणाली/370 पर पहली बार हार्डवेयर-असिस्टेड वर्चुअलाइजेशन पेश किया गया था, जो अंतरराष्ट्रीय व्यवसाय मशीन निगम द्वारा एक आधिकारिक उत्पाद के रूप में पेश किया गया पहला वर्चुअल मशीन ऑपरेटिंग सिस्टम है।<ref>Randal, A. (2019). The Ideal Versus the Real: Revisiting the History of Virtual Machines and Containers.</ref>
2005 और 2006 में, Intel और Advanced Micro Devices ने वर्चुअलाइजेशन का समर्थन करने के लिए अतिरिक्त हार्डवेयर प्रदान किया। सन माइक्रोसिस्टम्स (अब Oracle Corporation) ने 2005 में अपने SPARC T3|UltraSPARC T-Series प्रोसेसर में इसी तरह की विशेषताएं जोड़ीं। ऐसे हार्डवेयर के लिए अनुकूलित वर्चुअलाइजेशन प्लेटफॉर्म के उदाहरणों में कर्नेल-आधारित वर्चुअल मशीन, VMware वर्कस्टेशन, VMware फ्यूजन, हाइपर- V, विंडोज वर्चुअल सम्मिलित हैं। PC, Xen, Mac के लिए Parallels Desktop, SPARC के लिए Oracle वर्चुअल मशीन Server, VirtualBox और Parallels Workstation।


2006 में, पहली पीढ़ी के 32- और 64-बिट x86 हार्डवेयर समर्थन को सॉफ्टवेयर वर्चुअलाइजेशन पर संभव्यता ही कभी प्रदर्शन लाभ प्रदान करने के लिए पाया गया था।<ref name="Adams_2006"/>
2006 में, पहली पीढ़ी के 32- और 64-बिट x86 हार्डवेयर समर्थन को सॉफ्टवेयर वर्चुअलाइजेशन पर संभव्यता ही कभी प्रदर्शन लाभ प्रदान करने के लिए पाया गया था।<ref name="Adams_2006"/>
Line 63: Line 67:


== ऑपरेटिंग-प्रणाली-स्तरीय वर्चुअलाइजेशन ==
== ऑपरेटिंग-प्रणाली-स्तरीय वर्चुअलाइजेशन ==
{{Main|Operating-system-level virtualization}}
{{Main|ऑपरेटिंग-प्रणाली-स्तरीय वर्चुअलाइजेशन}}
ऑपरेटिंग-प्रणाली-लेवल वर्चुअलाइजेशन में, एक फिजिकल सर्वर को ऑपरेटिंग सिस्टम लेवल पर वर्चुअलाइज किया जाता है, जिससे कई आइसोलेटेड और सिक्योर वर्चुअलाइज्ड सर्वर को सिंगल फिजिकल सर्वर पर चलाने में सहायता मिलती है। गेस्ट ऑपरेटिंग सिस्टम वातावरण ऑपरेटिंग सिस्टम के उसी रनिंग इंस्टेंस को होस्ट प्रणाली के रूप में साझा करते हैं। इस प्रकार, गेस्ट वातावरण को प्रयुक्त करने के लिए एक ही ऑपरेटिंग सिस्टम कर्नेल का भी उपयोग किया जाता है, और किसी दिए गए गेस्ट वातावरण में चल रहे एप्लिकेशन इसे स्टैंड-अलोन प्रणाली के रूप में देखते हैं। अग्रणी कार्यान्वयन फ्रीबीएसडी जेल थे; अन्य उदाहरणों में डॉकर (सॉफ्टवेयर), सोलारिस कंटेनर, ओपनवीजेड, लिनक्स-वीएसर, एलएक्ससी, एआईएक्स वर्कलोड पार्टिशन, पैरेलल्स वर्चुअजो कंटेनर और आईकोर वर्चुअल अकाउंट सम्मिलित हैं।
 
ऑपरेटिंग-प्रणाली-स्तर वर्चुअलाइजेशन में, एक भौतिक सर्वर को ऑपरेटिंग सिस्टम स्तर पर वर्चुअलाइज किया जाता है, जिससे कई सुरक्षित वर्चुअलाइज्ड सर्वर को एकल भौतिक सर्वर पर रनिंग में सहायता मिलती है। गेस्ट ऑपरेटिंग सिस्टम परिवेश ऑपरेटिंग सिस्टम के उसी सक्रिय इंस्टेंस को होस्ट प्रणाली के रूप में साझा करते हैं। इस प्रकार, गेस्ट परिवेश को प्रयुक्त करने के लिए एक ही ऑपरेटिंग सिस्टम कर्नेल का भी उपयोग किया जाता है, और किसी दिए गए गेस्ट परिवेश में चल रहे एप्लिकेशन इसे स्वचालित प्रणाली के रूप में देखते हैं। प्रथम अन्वेषक कार्यान्वयन मुक्त-बर्कले सॉफ्टवेयर वितरण जेल थे; अन्य उदाहरणों में डॉकर (सॉफ्टवेयर), सोलारिस कंटेनर, ओपनवीजेड, लिनक्स कंटेनर-वीसर्वर, लिनक्स कंटेनर, उन्नत इंटरएक्टिव कार्यकारी वर्कलोड विभाजन, सदृश्य वर्चुअज़ो कंटेनर और आईकोर वर्चुअल अकाउंट सम्मिलित हैं।


== यह भी देखें ==
== यह भी देखें ==
Line 129: Line 134:
[[श्रेणी: प्रोग्रामिंग भाषा कार्यान्वयन]]
[[श्रेणी: प्रोग्रामिंग भाषा कार्यान्वयन]]


 
[[Category:All articles with unsourced statements|Virtual Machine]]
[[Category: Machine Translated Page]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Virtual Machine]]
[[Category:Created On 30/12/2022]]
[[Category:Articles with unsourced statements from March 2013|Virtual Machine]]
[[Category:Articles with unsourced statements from November 2015|Virtual Machine]]
[[Category:Citation Style 1 templates|M]]
[[Category:Collapse templates|Virtual Machine]]
[[Category:Created On 30/12/2022|Virtual Machine]]
[[Category:Lua-based templates|Virtual Machine]]
[[Category:Machine Translated Page|Virtual Machine]]
[[Category:Multi-column templates|Virtual Machine]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists|Virtual Machine]]
[[Category:Pages using div col with small parameter|Virtual Machine]]
[[Category:Pages with script errors|Virtual Machine]]
[[Category:Short description with empty Wikidata description|Virtual Machine]]
[[Category:Sidebars with styles needing conversion|Virtual Machine]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready|Virtual Machine]]
[[Category:Templates based on the Citation/CS1 Lua module|Virtual Machine]]
[[Category:Templates generating COinS|Cite magazine]]
[[Category:Templates generating microformats|Virtual Machine]]
[[Category:Templates that add a tracking category|Virtual Machine]]
[[Category:Templates that are not mobile friendly|Virtual Machine]]
[[Category:Templates that generate short descriptions|Virtual Machine]]
[[Category:Templates using TemplateData|Virtual Machine]]
[[Category:Templates using under-protected Lua modules|Virtual Machine]]
[[Category:Wikipedia fully protected templates|Cite magazine]]
[[Category:Wikipedia metatemplates|Virtual Machine]]

Latest revision as of 19:08, 25 February 2023

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

  • सिस्टम वर्चुअल मशीन (जिसे पूर्ण वर्चुअलाइजेशन (आभासीकरण) वीएम भी कहा जाता है) वास्तविक मशीन का विकल्प प्रदान करता है। वे संपूर्ण ऑपरेटिंग सिस्टम को निष्पादित करने के लिए आवश्यक कार्यक्षमता प्रदान करते हैं। एक हाइपरवाइजर हार्डवेयर को साझा करने और प्रबंधित करने के लिए मूल कोड का उपयोग करता है, जो कई वातावरणों की स्वीकृति देता है जो एक दूसरे से अलग होते हैं, फिर भी एक ही भौतिक मशीन पर सम्मिलित होते हैं। आधुनिक हाइपरविजर मुख्य रूप से होस्ट सेंट्रल प्रोसेसिंग यूनिट से हार्डवेयर-समर्थित आभासीकरण, आभासीकरण-विशिष्ट हार्डवेयर का उपयोग करते हैं।
  • प्रोसेस वर्चुअल मशीन को प्लेटफॉर्म से स्वतंत्र परिवेश में कंप्यूटर प्रोग्राम को निष्पादित करने के लिए डिज़ाइन किया गया है।

कुछ वर्चुअल मशीन एमुलेटर, जैसे कि त्वरित एमुलेटर और वीडियो गेम कंसोल एमुलेटर, को विभिन्न प्रणाली संरचना का एमुलेट (या वस्तुतः नकल) करने के लिए डिज़ाइन किया गया है, इस प्रकार सॉफ़्टवेयर एप्लिकेशन और ऑपरेटिंग सिस्टम को दूसरे सेंट्रल प्रोसेसिंग यूनिट या संरचना के लिए लिखे जाने की स्वीकृति देता है। ऑपरेटिंग-सिस्टम-स्तरीय वर्चुअलाइजेशन कंप्यूटर के संसाधनों को कर्नेल (ऑपरेटिंग सिस्टम) के माध्यम से विभाजित करने की स्वीकृति देता है। शर्तें सार्वभौमिक रूप से विनिमेय नहीं हैं।

परिभाषाएँ

सिस्टम वर्चुअल मशीन

एक वर्चुअल मशीन को मूल रूप से पोपेक और गोल्डबर्ग वर्चुअलाइजेशन आवश्यकताओं द्वारा वास्तविक कंप्यूटर मशीन के एक कुशल, अलग -अलग प्रतिलिपि के रूप में परिभाषित किया गया था।[1] वर्तमान उपयोग में वर्चुअल मशीनें सम्मिलित हैं जिनका किसी भी वास्तविक हार्डवेयर से कोई प्रत्यक्ष रूप से संबंध नहीं है।[2] वर्चुअल मशीन को संचालन करने वाले भौतिक, वास्तविक विश्व के हार्डवेयर को सामान्य रूप से 'होस्ट' कहा जाता है, और उस मशीन पर एम्यूलेट वर्चुअल मशीन को सामान्य रूप से 'गेस्ट' कहा जाता है। होस्ट कई गेस्ट का अनुकरण कर सकता है, जिनमें से प्रत्येक विभिन्न ऑपरेटिंग सिस्टम और हार्डवेयर प्लेटफॉर्म का अनुकरण कर सकता है।

कई ऑपरेटिंग सिस्टम संचालन की अपेक्षा वर्चुअल मशीनों का प्रारंभिक उद्देश्य था, ताकि कई एकल-टास्किंग ऑपरेटिंग सिस्टमों के बीच टाइम शेयरिंग की स्वीकृति दी जा सके। कुछ स्थितियों में, सिस्टम वर्चुअल मशीन को वर्चुअल मेमोरी की अवधारणा का एक सामान्यीकरण माना जा सकता है जो ऐतिहासिक रूप से इससे पहले था। अंतरराष्ट्रीय व्यवसाय मशीन निगम का कंट्रोल प्रोग्राम/कैम्ब्रिज मॉनिटर सिस्टम, पूर्ण वर्चुअलाइजेशन की स्वीकृति देने वाली पहली प्रणाली, प्रत्येक उपयोगकर्ता को एकल-उपयोगकर्ता ऑपरेटिंग सिस्टम, संवादात्मक मॉनिटर प्रणाली (सीएमएस) प्रदान करके टाइम शेयरिंग को प्रयुक्त किया। वर्चुअल मेमोरी के विपरीत, सिस्टम वर्चुअल मशीन उपयोगकर्ता को उनके कोड में विशेषाधिकार प्राप्त निर्देश लिखने का अधिकार देती है। इस दृष्टिकोण के कुछ लाभ थे, जैसे इनपुट/आउटपुट उपकरणों को जोड़ना जो मानक प्रणाली द्वारा स्वीकृत नहीं है।[2]

जैसे-जैसे तकनीक वर्चुअलाइजेशन के उद्देश्यों के लिए वर्चुअल मेमोरी विकसित करती है, कंप्यूटर ऑपरेटिंग सिस्टम पर कई वर्चुअल मशीनों के बीच मेमोरी साझाकरण को प्रबंधित करने के लिए मेमोरी ओवरकमिटमेंट (अधिवचनबद्‍धता) की नई प्रणाली प्रयुक्त की जा सकती है। एक ही भौतिक मशीन पर चलने वाली कई वर्चुअल मशीनों के बीच समान सामग्री वाले मेमोरी पेजों को साझा करना संभव हो सकता है, जिसके परिणामस्वरूप उन्हें एक ही भौतिक पेज पर कर्नेल समान-पेज संयोजन (केएसएम) नामक तकनीक द्वारा मैप किया जा सकता है। यह विशेष रूप से केवल पढ़ने योग्य पेजों के लिए उपयोगी है, जैसे कोड सेगमेंट रखने वाले, जो समान सॉफ़्टवेयर संचालन वाली कई वर्चुअल मशीनों, सॉफ़्टवेयर लाइब्रेरी, वेब सर्वर, मिडलवेयर घटकों आदि के स्थिति में है। गेस्ट ऑपरेटिंग सिस्टम की आवश्यकता नहीं है होस्ट हार्डवेयर के अनुरूप होने के लिए इस प्रकार भविष्य के सॉफ़्टवेयर का समर्थन करने के लिए एक ही कंप्यूटर (जैसे, विंडोज, लिनक्स, या ऑपरेटिंग सिस्टम के पूर्व संस्करण) पर विभिन्न ऑपरेटिंग सिस्टम संचालन संभव बनाता है।[3]

एम्बेडेड (अंतः स्थापित) प्रणाली के संबंध में अलग गेस्ट ऑपरेटिंग सिस्टम का समर्थन करने के लिए वर्चुअल मशीन का उपयोग लोकप्रिय है। विशिष्ट उपयोग एक वास्तविक समय ऑपरेटिंग सिस्टम को एक साथ मुख्य जटिल ऑपरेटिंग सिस्टम, जैसे कि लिनक्स या विंडोज के साथ सक्रिय रखना होगा। एक अन्य उपयोग नवीन और अप्रमाणित सॉफ़्टवेयर के लिए अभी भी विकास के चरण में हैं, इसलिए यह एक सैंडबॉक्स (सॉफ़्टवेयर विकास) के अंदर सक्रिय है। ऑपरेटिंग सिस्टम के विकास के लिए वर्चुअल मशीनों के अन्य लाभ हैं और इसमें अधिकतम डिबगिंग अभिगम्य और तीव्र रीबूट सम्मिलित हो सकते हैं।[4]

अपने स्वयं के गेस्ट ऑपरेटिंग सिस्टम संचालन वाले एकाधिक वर्चुअल मशीन प्रायः सर्वर समेकन के लिए लगे हुए हैं।[5]


प्रक्रिया आभासी मशीन

''एप्लिकेशन वर्चुअल मशीन'' यहां पुनर्निर्देश करता है। एप्लिकेशन वर्चुअलाइजेशन के साथ भ्रमित न हों।

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

एक प्रक्रिया वर्चुअल मशीन एक उच्च-स्तरीय अमूर्तता प्रदान करती है एक उच्च-स्तरीय प्रोग्रामिंग भाषा (सिस्टम वर्चुअल मशीन के निम्न-स्तरीय उद्योग मानक संरचना अमूर्तता की तुलना में) है। प्रक्रिया वर्चुअल मशीन एक दुभाषिया (कंप्यूटिंग) का उपयोग करके कार्यान्वित की जाती हैं; संकलित प्रोग्रामिंग भाषाओं के तुलनीय प्रदर्शन को समय-समय पर संकलन के उपयोग से प्राप्त किया जा सकता है।[citation needed]

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

प्रक्रिया वर्चुअल मशीन का एक विशेष स्थिति प्रणाली है जो एक (संभावित रूप से विषम) कंप्यूटर संघ के संचार तंत्र पर अमूर्त है। इस तरह के वर्चुअल मशीन में एक प्रक्रिया नहीं होती है, लेकिन संघ में प्रत्येक भौतिक मशीन के लिए एक प्रक्रिया होती है। वे अन्तर्संबद्ध और ऑपरेटिंग सिस्टम द्वारा प्रदान किए गए संचार तंत्र के अतिरिक्त प्रोग्रामर को एल्गोरिदम पर ध्यान केंद्रित करके प्रोग्रामिंग समवर्ती एप्लीकेशन के कार्य को आसान बनाने के लिए डिज़ाइन किए गए हैं। वे इस तथ्य को नहीं छिपाते हैं कि संचार होता है, और इस तरह संघ को एक मशीन के रूप में प्रस्तुत करने का प्रयास नहीं करते हैं।[citation needed]

अन्य प्रक्रिया वर्चुअल मशीन के विपरीत, ये प्रणाली एक विशिष्ट प्रोग्रामिंग भाषा प्रदान नहीं करते हैं, लेकिन एक सम्मिलित भाषा में सन्निहित हैं; सामान्य रूप से ऐसी प्रणाली कई भाषाओं (जैसे, C (प्रोग्रामिंग भाषा) और फोरट्रान) के लिए बाइंडिंग प्रदान करती है।[citation needed] सदृश वर्चुअल मशीन (पीवीएम) और संदेश पासिंग इंटरफेस (एमपीआई) इसके उदाहरण हैं। वे पूरी तरह से वर्चुअल मशीन नहीं हैं क्योंकि शीर्ष पर चल रहे एप्लिकेशन अभी भी सभी ऑपरेटिंग सिस्टम सेवाओं तक अभिगम्य रखते हैं और इसलिए प्रणाली मॉडल तक ही सीमित नहीं हैं।

इतिहास

यह भी देखें: कंट्रोल प्रोग्राम/कैम्ब्रिज मॉनिटर सिस्टम का इतिहास और वर्चुअलाइजेशन विकास की समयरेखा

सिस्टम वर्चुअल मशीन और प्रोसेस वर्चुअल मशीन दोनों ही 1960 के दशक की हैं और सक्रिय विकास के क्षेत्र बने हुए हैं।

प्रणाली वर्चुअल मशीनें टाइम शेयरिंग से बाहर हो गईं, जैसा कि विशेष रूप से संगत टाइम शेयरिंग प्रणाली (सीटीएसएस) में प्रयुक्त किया गया है। टाइम शेयरिंग ने कई उपयोगकर्ताओं को एक कंप्यूटर का उपयोग करने की स्वीकृति दी समवर्ती कंप्यूटिंग: प्रत्येक प्रोग्राम को मशीन तक पूर्ण अभिगम दिखाई दी, लेकिन उस समय केवल एक प्रोग्राम को निष्पादित किया गया था, जिसमें प्रणाली टाइम स्लाइस में प्रोग्राम के बीच स्विच कर रहा था, प्रत्येक स्थिति को सहेज और पुनर्स्थापित कर रहा था। यह आभासी मशीनों में विकसित हुआ, विशेष रूप से अंतरराष्ट्रीय व्यवसाय मशीन निगम की अनुसंधान प्रणालियों के माध्यम से अंतरराष्ट्रीय व्यवसाय मशीन निगम एम44/44एक्स, जो आंशिक वर्चुअलाइजेशन का उपयोग करता है, और अंतरराष्ट्रीय व्यवसाय मशीन निगम नियंत्रण प्रोग्राम-40 और सिमुलेशन मॉनिटर, जो पूर्ण वर्चुअलाइजेशन का उपयोग करते हैं, और इसके प्रारम्भिक उदाहरण हाइपरविजर थे पहली व्यापक रूप से उपलब्ध वर्चुअल मशीन संरचना नियंत्रण प्रोग्राम-67/कैम्ब्रिज मॉनिटर प्रणाली थी (विवरण के लिए नियंत्रण प्रोग्राम/कैम्ब्रिज मॉनिटर प्रणाली का इतिहास देखें)। टाइम शेयरिंग के लिए एक होस्ट प्रणाली पर कई वर्चुअल मशीनों का उपयोग करने के बीच एक महत्वपूर्ण अंतर था, जैसा कि एम44/44एक्स और नियंत्रण प्रोग्राम-40 में, और प्रोटोटाइप के लिए होस्ट प्रणाली पर एक वर्चुअल मशीन का उपयोग करना, जैसा कि सिमुलेशन मॉनिटर में है। एम्यूलेटर्स, अनुकूलता के लिए पहले के प्रणाली के हार्डवेयर एमुलेशन के साथ, 1963 में अंतरराष्ट्रीय व्यवसाय मशीन निगम प्रणाली/360 के समय के हैं,[6][7] जबकि सॉफ्टवेयर एमुलेशन (तत्कालीन सिमुलेशन कहा जाता है) इससे पूर्व का है।

प्रक्रिया आभासी मशीनें मूल रूप से एक मध्यवर्ती भाषा के लिए अमूर्त प्लेटफार्मों के रूप में उत्पन्न हुईं, जो एक संकलक द्वारा एक कार्यक्रम के मध्यवर्ती प्रतिनिधित्व के रूप में उपयोग की जाती हैं; प्रारम्भिक उदाहरण 1966 के आसपास के हैं। 1966 के प्रारम्भिक उदाहरण ऑब्जेक्ट-कोड मशीन थे, एक वर्चुअल मशीन जो सामान्य संयुक्त प्रोग्रामिंग भाषा कंपाइलर के फ्रंट एंड द्वारा उत्सर्जित ओ-कोड (ऑब्जेक्ट कोड) को निष्पादित करती है। इस अमूर्तता ने कंपाइलर को एक नए कंपाइलर बैक एंड को प्रयुक्त करके आसानी से एक नए संरचना में पोर्ट करने की स्वीकृति दी, जिसने सम्मिलित ऑब्जेक्ट-कोड लिया और इसे अंतर्निहित भौतिक मशीन के लिए मशीन कोड में संकलित किया। यूलर (प्रोग्रामिंग भाषा) भाषा ने एक समान डिज़ाइन का उपयोग किया, जिसमें पी (पोर्टेबल) नाम की मध्यवर्ती भाषा थी।[8] यह 1970 के आसपास पास्कल (प्रोग्रामिंग भाषा) द्वारा लोकप्रिय हुआ, विशेष रूप से पास्कल-पी प्रणाली (1973) और पास्कल-एस कंपाइलर (1975) में,जिसमें इसे पी-कोड और परिणामी मशीन को पी-कोड मशीन कहा गया। यह प्रभावशाली रहा है, और इस अर्थ में आभासी मशीनों को प्रायः पी-कोड मशीन कहा जाता है। एक द्वितीयक भाषा होने के अतिरिक्त, पास्कल पी-कोड को वर्चुअल मशीन को प्रयुक्त करने वाले दुभाषिया द्वारा प्रत्यक्ष रूप से निष्पादित किया गया था, विशेष रूप से यूसीएसडी पास्कल (1978) में; इसने बाद के दुभाषियों को प्रभावित किया, विशेष रूप से यूसीएसडी पास्कल (1978) में; इसने बाद के दुभाषियों को प्रभावित किया, विशेष रूप से जावा वर्चुअल मशीन (जेवीएम) को प्रभावित किया। एक अन्य प्रारंभिक उदाहरण स्ट्रिंग ओरिएंटेड (शृंखला उन्मुख) और प्रतीकात्मक भाषा4 (1967) था, जिसे स्ट्रिंग ओरिएंटेड और प्रतीकात्मक भाषा कार्यान्वयन भाषा (एसआईएल) में लिखा गया था, जो एक वर्चुअल मशीन के लिए एक असेंबली भाषा थी, जिसे तब मैक्रो असेंबलर के माध्यम से अपने मूल असेंबलर में ट्रांसप्लिंग करके भौतिक मशीनों पर प्रकाशित किया गया था।[9] मैक्रों तब से समर्थन से बाहर हो गए हैं, इसलिए यह दृष्टिकोण कम प्रभावशाली रहा है। प्रोसेस वर्चुअल मशीनें प्रारम्भिक माइक्रो कंप्यूटर सॉफ़्टवेयर को प्रयुक्त करने के लिए एक लोकप्रिय दृष्टिकोण थीं, जिसमें टाइनी प्रारंभ का सर्व-उद्देश्यीय प्रतीकात्मक निर्देश कोड वर्चुअल मशीन और एडवेंचर गेम्स में कार्यान्वयन, पिरामिड 2000 जैसे एक सामान्य-उद्देश्य इंजन जैसे इन्फोकॉम की जेड-मशीन, जिसे ग्राहम नेल्सन तर्क संभवतः अब तक बनाई गई सबसे पोर्टेबल वर्चुअल मशीन है।[10]

स्मॉलटॉक-80 के कार्यान्वयन में महत्वपूर्ण प्रगति हुई,[11]विशेष रूप से ड्यूश/शिफमैन कार्यान्वयन[12] जिसने प्रक्रिया वर्चुअल मशीन का उपयोग करने वाले कार्यान्वयन दृष्टिकोण के रूप में सही समय पर (जेआईटी) संकलन को आगे बढ़ाया।[13] बाद में उल्लेखनीय स्मॉलटाक वर्चुअल मशीन विजुअलवर्क्स, स्क्वीक वर्चुअल मशीन,[14]और स्ट्रॉन्गटॉक थे।[15] एक संबंधित भाषा जिसने बहुत सारे वर्चुअल मशीन नवाचार का निर्माण किया, वह सेल्फ (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा थी,[16] जिसने अनुकूली अनुकूलन [17] और पारंपरिक गारवेज संग्रह का नेतृत्व किया। ये तकनीकें 1999 में हॉटस्पॉट जावा वर्चुअल मशीन में व्यावसायिक रूप से सफल प्रमाणित हुईं।[18] अन्य नवाचारों में एक पंजीकृत-आधारित वर्चुअल मशीन सम्मिलित है, जो स्टैक-आधारित वर्चुअल मशीन के अतिरिक्त अंतर्निहित हार्डवेयर से अधिकतम अनुरूप है, जो प्रोग्रामिंग भाषा के लिए एक लगभग समान है; 1995 में, लिम्बो (प्रोग्रामिंग भाषा) भाषा के लिए डिस वर्चुअल मशीन द्वारा अग्रणी था। ओपनजे9, ओपनजेडीके में हॉटस्पॉट जावा वर्चुअल मशीन का एक विकल्प है और हॉटस्पॉट की तुलना में अधिकतम स्टार्टअप और कम संसाधन उपभोग का दावा करने वाला एक मुक्त-स्त्रोत ग्रहण परियोजना है।

पूर्ण वर्चुअलाइजेशन

पूर्ण वर्चुअलाइजेशन का तार्किक आरेख

पूर्ण वर्चुअलाइजेशन में, वर्चुअल मशीन एक असंशोधित गेस्ट ऑपरेटिंग सिस्टम (एक ही निर्देश सेट के लिए डिज़ाइन किया गया) को आइसोलेशन में सक्रिय करने के लिए पर्याप्त हार्डवेयर का अनुकरण करती है। यह दृष्टिकोण 1966 में अंतरराष्ट्रीय व्यवसाय मशीन निगम नियंत्रण प्रोग्राम-40 और नियंत्रण प्रोग्राम-67, वर्चुअल मशीन (ऑपरेटिंग सिस्टम) परिवार के पूर्ववर्तियों के साथ अग्रणी था।

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

हार्डवेयर-सहायता प्राप्त वर्चुअलाइजेशन

हार्डवेयर-सहायता प्राप्त वर्चुअलाइजेशन में, हार्डवेयर संरचना सहायता प्रदान करता है जो वर्चुअल मशीन मॉनिटर बनाने की सुविधा देता है और गेस्ट ऑपरेटिंग सिस्टम को आइसोलेशन में चलाने की स्वीकृति देता है।[19] 1972 में अंतरराष्ट्रीय व्यवसाय मशीन निगम प्रणाली/370 पर पहली बार हार्डवेयर-सहायता प्राप्त वर्चुअलाइजेशन प्रस्तुत किया गया था, वर्चुअल मशीन (ऑपरेटिंग सिस्टम)/370 के साथ प्रयोग के लिए अंतरराष्ट्रीय व्यवसाय मशीन निगम द्वारा एक आधिकारिक उत्पाद के रूप में प्रस्तुत किया गया पहला वर्चुअल मशीन ऑपरेटिंग सिस्टम है।[20]

2005 और 2006 में, इंटेल और एएमडी ने वर्चुअलाइजेशन का समर्थन करने के लिए अतिरिक्त हार्डवेयर प्रदान किया। सन माइक्रोसिस्टम्स (अब ओरेकल निगम) ने 2005 में अपने अल्ट्रास्पार्क टी-सीरीज़ प्रोसेसर में इसी तरह की विशेषताएं जोड़ीं है। ऐसे हार्डवेयर के लिए अनुकूलित वर्चुअलाइजेशन प्लेटफॉर्म के उदाहरणों में कर्नेल-आधारित वर्चुअल मशीन, वीएमवेयर वर्कस्टेशन, वीएमवेयर फ्यूजन, हाइपरवाइजर, विंडोज वर्चुअल पर्सनल कंप्यूटर, एक्सईएन, मीडिया अभिगम नियंत्रण एड्रेस के लिए समान डेस्कटॉप, एसपीएआरसी के लिए ओरेकल वर्चुअल मशीन सर्वर, वर्चुअलबॉक्स और समान वर्कस्टेशन सम्मिलित हैं।

2006 में, पहली पीढ़ी के 32- और 64-बिट x86 हार्डवेयर समर्थन को सॉफ्टवेयर वर्चुअलाइजेशन पर संभव्यता ही कभी प्रदर्शन लाभ प्रदान करने के लिए पाया गया था।[21]


ऑपरेटिंग-प्रणाली-स्तरीय वर्चुअलाइजेशन

ऑपरेटिंग-प्रणाली-स्तर वर्चुअलाइजेशन में, एक भौतिक सर्वर को ऑपरेटिंग सिस्टम स्तर पर वर्चुअलाइज किया जाता है, जिससे कई सुरक्षित वर्चुअलाइज्ड सर्वर को एकल भौतिक सर्वर पर रनिंग में सहायता मिलती है। गेस्ट ऑपरेटिंग सिस्टम परिवेश ऑपरेटिंग सिस्टम के उसी सक्रिय इंस्टेंस को होस्ट प्रणाली के रूप में साझा करते हैं। इस प्रकार, गेस्ट परिवेश को प्रयुक्त करने के लिए एक ही ऑपरेटिंग सिस्टम कर्नेल का भी उपयोग किया जाता है, और किसी दिए गए गेस्ट परिवेश में चल रहे एप्लिकेशन इसे स्वचालित प्रणाली के रूप में देखते हैं। प्रथम अन्वेषक कार्यान्वयन मुक्त-बर्कले सॉफ्टवेयर वितरण जेल थे; अन्य उदाहरणों में डॉकर (सॉफ्टवेयर), सोलारिस कंटेनर, ओपनवीजेड, लिनक्स कंटेनर-वीसर्वर, लिनक्स कंटेनर, उन्नत इंटरएक्टिव कार्यकारी वर्कलोड विभाजन, सदृश्य वर्चुअज़ो कंटेनर और आईकोर वर्चुअल अकाउंट सम्मिलित हैं।

यह भी देखें

  • अमेज़न मशीन छवि
  • डेस्कटॉप वर्चुअलाइजेशन
  • लिनक्स कंटेनर
  • मूल विकास किट
  • पैरावर्चुअलाइजेशन
  • भंडारण हाइपरविजर
  • सार्वभौमिक ट्यूरिंग मशीन
  • आभासी उपकरण
  • वर्चुअल बैकअप उपकरण
  • वर्चुअल डिस्क छवि
  • वर्चुअल डॉस मशीन (वीडीएम)
  • वर्चुअल मशीन एस्केप


संदर्भ

  1. Popek, Gerald J.; Goldberg, Robert P. (1974). "Formal requirements for virtualizable third generation architectures" (PDF). Communications of the ACM. 17 (7): 412–421. doi:10.1145/361011.361073. S2CID 12680060.
  2. 2.0 2.1 Smith, James E.; Nair, Ravi (2005). "The Architecture of Virtual Machines". Computer. 38 (5): 32–38, 395–396. doi:10.1109/MC.2005.173. S2CID 6578280.
  3. Oliphant, Patrick. "Virtual Machines". VirtualComputing. Archived from the original on 2016-07-29. Retrieved 2015-09-23. Some people use that capability to set up a separate virtual machine running Windows on a Mac, giving them access to the full range of applications available for both platforms.
  4. "Super Fast Server Reboots – Another reason Virtualization rocks". vmwarez.com. 2006-05-09. Archived from the original on 2006-06-14. Retrieved 2013-06-14.
  5. "Server Consolidation and Containment With Virtual Infrastructure" (PDF). VMware. 2007. Archived (PDF) from the original on 2013-12-28. Retrieved 2015-09-29.
  6. Pugh, Emerson W. (1995). Building IBM: Shaping an Industry and Its Technology. MIT. p. 274. ISBN 978-0-262-16147-3.
  7. Pugh, Emerson W.; et al. (1991). IBM's 360 and Early 370 Systems. MIT. pp. 160–161. ISBN 978-0-262-16123-7.
  8. Wirth, Niklaus Emil; Weber, Helmut (1966). EULER: a generalization of ALGOL, and its formal definition: Part II, Communications of the Association for Computing Machinery. Vol. 9. New York: ACM. pp. 89–99.
  9. Griswold, Ralph E. The Macro Implementation of SNOBOL4. San Francisco, CA: W. H. Freeman and Company, 1972 (ISBN 0-7167-0447-1), Chapter 1.
  10. Nelson, Graham A. "About Interpreters". Inform website. Archived from the original on 2009-12-03. Retrieved 2009-11-07.
  11. Goldberg, Adele; Robson, David (1983). Smalltalk-80: The Language and its Implementation. Addison-Wesley Series in Computer Science. Addison-Wesley. ISBN 978-0-201-11371-6.
  12. Deutsch, L. Peter; Schiffman, Allan M. (1984). "Efficient implementation of the Smalltalk-80 system". POPL. Salt Lake City, Utah: ACM. doi:10.1145/800017.800542. ISBN 0-89791-125-3.
  13. Aycock, John (2003). "A brief history of just-in-time". ACM Comput. Surv. 35 (2): 97–113. doi:10.1145/857076.857077. S2CID 15345671.
  14. Ingalls Jr., Daniel "Dan" Henry Holmes; Kaehler, Ted; Maloney, John; Wallace, Scott; Kay, Alan Curtis (1997). "Back to the future: the story of Squeak, a practical Smalltalk written in itself". OOPSLA '97: Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications. New York, NY, USA: ACM Press. pp. 318–326. doi:10.1145/263698.263754. ISBN 0-89791-908-4.
  15. Bracha, Gilad; Griswold, David (1993). "Strongtalk: Typechecking Smalltalk in a Production Environment". Proceedings of the Eighth Annual Conference on Object-oriented Programming Systems, Languages, and Applications. OOPSLA '93. New York, NY, USA: ACM. pp. 215–230. doi:10.1145/165854.165893. ISBN 978-0-89791-587-8.
  16. Ungar, David Michael; Smith, Randall B. (December 1987). "Self: The power of simplicity". ACM SIGPLAN Notices. 22 (12): 227–242. doi:10.1145/38807.38828. ISSN 0362-1340.
  17. Hölzle, Urs; Ungar, David Michael (1994). "Optimizing dynamically-dispatched calls with run-time type feedback". PLDI. Orlando, Florida, United States: ACM. pp. 326–336. doi:10.1145/178243.178478. ISBN 0-89791-662-X.
  18. Paleczny, Michael; Vick, Christopher; Click, Cliff (2001). "The Java HotSpot server compiler". Proceedings of the Java Virtual Machine Research and Technology Symposium on Java Virtual Machine Research and Technology Symposium. Vol. 1. Monterey, California: USENIX Association.
  19. Uhlig, Rich; Neiger, Gil; Rodgers, Dion; Santoni, Amy L.; Martins, Fernando C. M.; Anderson, Andrew V.; Bennett, Steven M.; Kägi, Alain; Leung, Felix H.; Smith, Larry (May 2005). "Intel virtualization technology". Computer. 38 (5): 48–56. doi:10.1109/MC.2005.163. S2CID 18514555.
  20. Randal, A. (2019). The Ideal Versus the Real: Revisiting the History of Virtual Machines and Containers.
  21. Adams, Keith; Agesen, Ole (2006-10-21). A Comparison of Software and Hardware Techniques for x86 Virtualization (PDF). ASPLOS’06 21–25 October 2006. San Jose, California, USA. Archived (PDF) from the original on 2010-08-20. Surprisingly, we find that the first-generation hardware support rarely offers performance advantages over existing software techniques. We ascribe this situation to high VMM/guest transition costs and a rigid programming model that leaves little room for software flexibility in managing either the frequency or cost of these transitions.


आगे की पढाई

  • James E. Smith, Ravi Nair, Virtual Machines: Versatile Platforms For Systems And Processes, Morgan Kaufmann, May 2005, ISBN 1-55860-910-5, 656 pages (covers both process and system virtual machines)
  • Craig, Iain D. Virtual Machines. Springer, 2006, ISBN 1-85233-969-1, 269 pages (covers only process virtual machines)


इस पेज में लापता आंतरिक लिंक की सूची

बाहरी कड़ियाँ

श्रेणी: ऑपरेटिंग सिस्टम प्रौद्योगिकी श्रेणी: प्रोग्रामिंग भाषा कार्यान्वयन