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

From Vigyanwiki
No edit summary
No edit summary
Line 2: Line 2:


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


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


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


== परिभाषाएँ ==
== परिभाषाएँ ==


=== सिस्टम वर्चुअल मशीन ===
=== सिस्टम वर्चुअल मशीन ===
{{main|System virtual machine}}
{{main|सिस्टम वर्चुअल मशीन}}
{{See also|Hardware virtualization|comparison of platform virtualization software}}
{{See also|हार्डवेयर वर्चुअलाइजेशन और प्लेटफॉर्म वर्चुअलाइजेशन सॉफ्टवेयर की तुलना}}
एक वर्चुअल मशीन को मूल रूप से पोपेक और गोल्डबर्ग वर्चुअलाइजेशन आवश्यकताओं द्वारा वास्तविक कंप्यूटर मशीन के एक कुशल, पृथक डुप्लिकेट के रूप में परिभाषित किया गया था।<ref name="Popek"/>वर्तमान उपयोग में वर्चुअल मशीनें शामिल हैं जिनका किसी भी वास्तविक हार्डवेयर से कोई सीधा संबंध नहीं है।<ref name="Smith_Nair_05"/>VM को चलाने वाले भौतिक, वास्तविक दुनिया के हार्डवेयर को आम तौर पर 'होस्ट' कहा जाता है, और उस मशीन पर नकली वर्चुअल मशीन को आम तौर पर 'अतिथि' कहा जाता है। एक मेजबान कई मेहमानों का अनुकरण कर सकता है, जिनमें से प्रत्येक विभिन्न ऑपरेटिंग सिस्टम और हार्डवेयर प्लेटफॉर्म का अनुकरण कर सकता है।


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


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


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


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




=== प्रक्रिया आभासी मशीन ===
=== प्रक्रिया आभासी मशीन ===
<!-- This section is linked from [[.NET Framework]] -->
 
{{Redirect-distinguish|Application virtual machine|application virtualization}}
{{Redirect-distinguish|Application virtual machine|application virtualization}}
एक प्रक्रिया VM, जिसे कभी-कभी एप्लिकेशन वर्चुअल मशीन या प्रबंधित रनटाइम एनवायरनमेंट (MRE) कहा जाता है, होस्ट OS के अंदर एक सामान्य एप्लिकेशन के रूप में चलता है और एकल प्रक्रिया का समर्थन करता है। यह तब बनता है जब वह प्रक्रिया शुरू होती है और जब वह बाहर निकलती है तो नष्ट हो जाती है। इसका उद्देश्य एक सिस्टम प्लेटफ़ॉर्म-स्वतंत्र प्रोग्रामिंग वातावरण प्रदान करना है जो अंतर्निहित हार्डवेयर या ऑपरेटिंग सिस्टम के विवरणों को दूर करता है और किसी प्रोग्राम को किसी भी प्लेटफ़ॉर्म पर उसी तरह से निष्पादित करने की अनुमति देता है।
एक प्रक्रिया वर्चुअल मशीन, जिसे कभी-कभी एप्लिकेशन वर्चुअल मशीन या प्रबंधित रनटाइम एनवायरनमेंट (MRE) कहा जाता है, होस्ट OS के अंदर एक सामान्य एप्लिकेशन के रूप में चलता है और एकल प्रक्रिया का समर्थन करता है। यह तब बनता है जब वह प्रक्रिया शुरू होती है और जब वह बाहर निकलती है तो नष्ट हो जाती है। इसका उद्देश्य एक प्रणाली प्लेटफ़ॉर्म-स्वतंत्र प्रोग्रामिंग वातावरण प्रदान करना है जो अंतर्निहित हार्डवेयर या ऑपरेटिंग सिस्टम के विवरणों को दूर करता है और किसी प्रोग्राम को किसी भी प्लेटफ़ॉर्म पर उसी तरह से निष्पादित करने की स्वीकृति देता है।
 
एक प्रक्रिया वर्चुअल मशीन एक उच्च-स्तरीय अमूर्तता प्रदान करती है{{snd}} एक उच्च-स्तरीय प्रोग्रामिंग भाषा (सिस्टम वर्चुअल मशीन के निम्न-स्तरीय ISA अमूर्तता की तुलना में)। प्रक्रिया वर्चुअल मशीन एक दुभाषिया (कंप्यूटिंग) का उपयोग करके कार्यान्वित की जाती हैं; संकलित प्रोग्रामिंग भाषाओं के तुलनीय प्रदर्शन को समय-समय पर संकलन के उपयोग से प्राप्त किया जा सकता है।{{Citation needed|date=November 2015}}
इस प्रकार का वर्चुअल मशीन जावा (प्रोग्रामिंग लैंग्वेज) के साथ लोकप्रिय हो गया है, जिसे जावा वर्चुअल मशीन का उपयोग करके कार्यान्वित किया जाता है। अन्य उदाहरणों में पैरट वर्चुअल मशीन और .NET फ्रेमवर्क सम्मिलित हैं, जो कॉमन लैंग्वेज रनटाइम नामक वर्चुअल मशीन पर चलता है। ये सभी किसी भी कंप्यूटर भाषा के लिए अमूर्त परत के रूप में काम कर सकते हैं।


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


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


== इतिहास ==
== इतिहास ==
{{See also|History of CP/CMS|timeline of virtualization development}}
{{See also|History of CP/CMS|timeline of virtualization development}}
{{More citations needed section|date=July 2015}}
सिस्टम वर्चुअल मशीन और प्रोसेस वर्चुअल मशीन दोनों ही 1960 के दशक की हैं और सक्रिय विकास के क्षेत्र बने हुए हैं।
सिस्टम वर्चुअल मशीन और प्रोसेस वर्चुअल मशीन दोनों ही 1960 के दशक की हैं और सक्रिय विकास के क्षेत्र बने हुए हैं।


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


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


मेनफ्रेम फील्ड के बाहर के उदाहरणों में पैरेलल्स वर्कस्टेशन, मैक के लिए पैरेलल्स डेस्कटॉप, वर्चुअलबॉक्स, वर्चुअल आयरन, ओरेकल वीएम, माइक्रोसॉफ्ट वर्चुअल पीसी, माइक्रोसॉफ्ट वर्चुअल सर्वर, हाइपर-वी, वीएमवेयर फ्यूजन, वीएमवेयर वर्कस्टेशन, वीएमवेयर सर्वर (बंद, जिसे पहले जीएसएक्स सर्वर कहा जाता था) शामिल हैं। , VMware ESXi, QEMU, ऑपरेटिंग सिस्टम के लिए अनुकूली डोमेन पर्यावरण, Mac-on-Linux, Win4BSD, Win4Lin, और Egenera vBlade तकनीक।
मेनफ्रेम फील्ड के बाहर के उदाहरणों में पैरेलल्स वर्कस्टेशन, मैक के लिए पैरेलल्स डेस्कटॉप, वर्चुअलबॉक्स, वर्चुअल आयरन, ओरेकल वर्चुअल मशीन, माइक्रोसॉफ्ट वर्चुअल पीसी, माइक्रोसॉफ्ट वर्चुअल सर्वर, हाइपर-वी, वीएमवेयर फ्यूजन, वीएमवेयर वर्कस्टेशन, वीएमवेयर सर्वर (बंद, जिसे पहले जीएसएक्स सर्वर कहा जाता था) सम्मिलित हैं। , VMware ESXi, त्वरित एमुलेटर, ऑपरेटिंग सिस्टम के लिए अनुकूली डोमेन पर्यावरण, Mac-on-Linux, Win4BSD, Win4Lin, और Egenera vBlade तकनीक।


=== हार्डवेयर-असिस्टेड वर्चुअलाइजेशन ===
=== हार्डवेयर-असिस्टेड वर्चुअलाइजेशन ===
{{Main|Hardware-assisted virtualization}}
{{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>
हार्डवेयर-असिस्टेड वर्चुअलाइजेशन में, हार्डवेयर आर्किटेक्चरल सपोर्ट प्रदान करता है जो वर्चुअल मशीन मॉनिटर बनाने की सुविधा देता है और गेस्ट 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 VM Server, VirtualBox और Parallels Workstation।
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"/>




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


== यह भी देखें ==
== यह भी देखें ==
Line 70: Line 71:
* डेस्कटॉप वर्चुअलाइजेशन
* डेस्कटॉप वर्चुअलाइजेशन
* लिनक्स कंटेनर
* लिनक्स कंटेनर
* देशी विकास किट
* मूल विकास किट
* पैरावर्चुअलाइजेशन
* पैरावर्चुअलाइजेशन
* स्टोरेज हाइपरविजर
* भंडारण हाइपरविजर
* यूनिवर्सल ट्यूरिंग मशीन
* सार्वभौमिक ट्यूरिंग मशीन
* आभासी उपकरण
* आभासी उपकरण
* वर्चुअल बैकअप उपकरण
* वर्चुअल बैकअप उपकरण

Revision as of 20:32, 22 February 2023

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

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

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

परिभाषाएँ

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

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

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

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

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

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


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

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

एक प्रक्रिया वर्चुअल मशीन एक उच्च-स्तरीय अमूर्तता प्रदान करती है – एक उच्च-स्तरीय प्रोग्रामिंग भाषा (सिस्टम वर्चुअल मशीन के निम्न-स्तरीय ISA अमूर्तता की तुलना में)। प्रक्रिया वर्चुअल मशीन एक दुभाषिया (कंप्यूटिंग) का उपयोग करके कार्यान्वित की जाती हैं; संकलित प्रोग्रामिंग भाषाओं के तुलनीय प्रदर्शन को समय-समय पर संकलन के उपयोग से प्राप्त किया जा सकता है।[citation needed] इस प्रकार का वर्चुअल मशीन जावा (प्रोग्रामिंग लैंग्वेज) के साथ लोकप्रिय हो गया है, जिसे जावा वर्चुअल मशीन का उपयोग करके कार्यान्वित किया जाता है। अन्य उदाहरणों में पैरट वर्चुअल मशीन और .NET फ्रेमवर्क सम्मिलित हैं, जो कॉमन लैंग्वेज रनटाइम नामक वर्चुअल मशीन पर चलता है। ये सभी किसी भी कंप्यूटर भाषा के लिए अमूर्त परत के रूप में काम कर सकते हैं।

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

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

इतिहास

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

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

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

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

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

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

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

मेनफ्रेम फील्ड के बाहर के उदाहरणों में पैरेलल्स वर्कस्टेशन, मैक के लिए पैरेलल्स डेस्कटॉप, वर्चुअलबॉक्स, वर्चुअल आयरन, ओरेकल वर्चुअल मशीन, माइक्रोसॉफ्ट वर्चुअल पीसी, माइक्रोसॉफ्ट वर्चुअल सर्वर, हाइपर-वी, वीएमवेयर फ्यूजन, वीएमवेयर वर्कस्टेशन, वीएमवेयर सर्वर (बंद, जिसे पहले जीएसएक्स सर्वर कहा जाता था) सम्मिलित हैं। , VMware ESXi, त्वरित एमुलेटर, ऑपरेटिंग सिस्टम के लिए अनुकूली डोमेन पर्यावरण, Mac-on-Linux, Win4BSD, Win4Lin, और Egenera vBlade तकनीक।

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

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


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

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

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