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

From Vigyanwiki
No edit summary
Line 5: Line 5:


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


कुछ वर्चुअल मशीन एमुलेटर, जैसे कि त्वरित एमुलेटर और वीडियो गेम कंसोल एमुलेटर, को विभिन्न प्रणाली संरचना का एमुलेट (या वस्तुतः नकल) करने के लिए डिज़ाइन किया गया है, इस प्रकार सॉफ़्टवेयर एप्लिकेशन और ऑपरेटिंग सिस्टम को दूसरे सेंट्रल प्रोसेसिंग यूनिट या संरचना के लिए लिखे जाने की स्वीकृति देता है। ऑपरेटिंग-सिस्टम-स्तरीय वर्चुअलाइजेशन कंप्यूटर के संसाधनों को कर्नेल (ऑपरेटिंग सिस्टम) के माध्यम से विभाजित करने की स्वीकृति देता है। शर्तें सार्वभौमिक रूप से विनिमेय नहीं हैं।
कुछ वर्चुअल मशीन एमुलेटर, जैसे कि त्वरित एमुलेटर और वीडियो गेम कंसोल एमुलेटर, को विभिन्न प्रणाली संरचना का एमुलेट (या वस्तुतः नकल) करने के लिए डिज़ाइन किया गया है, इस प्रकार सॉफ़्टवेयर एप्लिकेशन और ऑपरेटिंग सिस्टम को दूसरे सेंट्रल प्रोसेसिंग यूनिट या संरचना के लिए लिखे जाने की स्वीकृति देता है। ऑपरेटिंग-सिस्टम-स्तरीय वर्चुअलाइजेशन कंप्यूटर के संसाधनों को कर्नेल (ऑपरेटिंग सिस्टम) के माध्यम से विभाजित करने की स्वीकृति देता है। शर्तें सार्वभौमिक रूप से विनिमेय नहीं हैं।
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}} सदृश वर्चुअल मशीन (पीवीएम) और संदेश पासिंग इंटरफेस (एमपीआई) इसके उदाहरण हैं। वे पूरी तरह से वर्चुअल मशीन नहीं हैं क्योंकि शीर्ष पर चल रहे एप्लिकेशन अभी भी सभी ऑपरेटिंग सिस्टम सेवाओं तक अभिगम्य रखते हैं और इसलिए प्रणाली मॉडल तक ही सीमित नहीं हैं।


== इतिहास ==
== इतिहास ==
Line 44: Line 45:
प्रणाली वर्चुअल मशीनें टाइम-साझाकरण से बाहर हो गईं, जैसा कि विशेष रूप से संगत समय-साझाकरण प्रणाली (सीटीएसएस) में प्रयुक्त किया गया है। टाइम-साझाकरण ने कई उपयोगकर्ताओं को एक कंप्यूटर का उपयोग करने की स्वीकृति दी समवर्ती कंप्यूटिंग: प्रत्येक प्रोग्राम को मशीन तक पूर्ण पहुंच दिखाई दी, लेकिन उस समय केवल एक प्रोग्राम को निष्पादित किया गया था, जिसमें प्रणाली टाइम स्लाइस में प्रोग्राम के बीच स्विच कर रहा था, प्रत्येक बार स्थिति को सहेज रहा था और पुनर्स्थापित कर रहा था। . यह आभासी मशीनों में विकसित हुआ, विशेष रूप से अंतरराष्ट्रीय व्यवसाय मशीन निगम की अनुसंधान प्रणालियों के माध्यम से: अंतरराष्ट्रीय व्यवसाय मशीन निगम M44/44X|M44/44X, जो आंशिक वर्चुअलाइजेशन का उपयोग करता है, और अंतरराष्ट्रीय व्यवसाय मशीन निगम नियंत्रण प्रोग्राम-40|नियंत्रण प्रोग्राम-40 और SIMMON, जो पूर्ण वर्चुअलाइजेशन का उपयोग करते हैं, और इसके शुरुआती उदाहरण थे hypervisors. पहली व्यापक रूप से उपलब्ध वर्चुअल मशीन संरचना नियंत्रण प्रोग्राम-67/कैम्ब्रिज मॉनिटर प्रणाली थी (विवरण के लिए नियंत्रण प्रोग्राम/कैम्ब्रिज मॉनिटर प्रणाली का इतिहास देखें)। टाइम-साझाकरण के लिए एक होस्ट प्रणाली पर कई वर्चुअल मशीनों का उपयोग करने के बीच एक महत्वपूर्ण अंतर था, जैसा कि M44/44X और नियंत्रण प्रोग्राम-40 में, और प्रोटोटाइप के लिए होस्ट प्रणाली पर एक वर्चुअल मशीन का उपयोग करना, जैसा कि SIMMON में है। एम्यूलेटर्स, अनुकूलता के लिए पहले के प्रणाली के हार्डवेयर एमुलेशन के साथ, 1963 में अंतरराष्ट्रीय व्यवसाय मशीन निगम प्रणाली/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 में अंतरराष्ट्रीय व्यवसाय मशीन निगम नियंत्रण प्रोग्राम-40 और नियंत्रण प्रोग्राम-67, वर्चुअल मशीन (ऑपरेटिंग सिस्टम) परिवार के पूर्ववर्तियों के साथ अग्रणी था।
[[File:Hardware Virtualization (copy).svg|thumb|पूर्ण वर्चुअलाइजेशन का तार्किक आरेख]]पूर्ण वर्चुअलाइजेशन में, वर्चुअल मशीन एक असंशोधित गेस्ट ऑपरेटिंग सिस्टम (एक ही निर्देश सेट के लिए डिज़ाइन किया गया) को अलगाव में चलाने के लिए पर्याप्त हार्डवेयर का अनुकरण करती है। यह दृष्टिकोण 1966 में अंतरराष्ट्रीय व्यवसाय मशीन निगम नियंत्रण प्रोग्राम-40 और नियंत्रण प्रोग्राम-67, वर्चुअल मशीन (ऑपरेटिंग सिस्टम) परिवार के पूर्ववर्तियों के साथ अग्रणी था।


मेनफ्रेम फील्ड के बाहर के उदाहरणों में पैरेलल्स वर्कस्टेशन, मैक के लिए पैरेलल्स डेस्कटॉप, वर्चुअलबॉक्स, वर्चुअल आयरन, ओरेकल वर्चुअल मशीन, माइक्रोसॉफ्ट वर्चुअल पीसी, माइक्रोसॉफ्ट वर्चुअल सर्वर, हाइपर-वी, वीएमवेयर फ्यूजन, वीएमवेयर वर्कस्टेशन, वीएमवेयर सर्वर (बंद, जिसे पहले जीएसएक्स सर्वर कहा जाता था) सम्मिलित हैं। , VMware ESXi, त्वरित एमुलेटर, ऑपरेटिंग सिस्टम के लिए अनुकूली डोमेन पर्यावरण, Mac-on-Linux, Win4BSD, Win4Lin, और Egenera vBlade तकनीक।
मेनफ्रेम फील्ड के बाहर के उदाहरणों में पैरेलल्स वर्कस्टेशन, मैक के लिए पैरेलल्स डेस्कटॉप, वर्चुअलबॉक्स, वर्चुअल आयरन, ओरेकल वर्चुअल मशीन, माइक्रोसॉफ्ट वर्चुअल पीसी, माइक्रोसॉफ्ट वर्चुअल सर्वर, हाइपर-वी, वीएमवेयर फ्यूजन, वीएमवेयर वर्कस्टेशन, वीएमवेयर सर्वर (बंद, जिसे पहले जीएसएक्स सर्वर कहा जाता था) सम्मिलित हैं। , VMware ESXi, त्वरित एमुलेटर, ऑपरेटिंग सिस्टम के लिए अनुकूली डोमेन पर्यावरण, Mac-on-Linux, Win4BSD, Win4Lin, और Egenera vBlade तकनीक।
Line 56: Line 57:
=== हार्डवेयर-असिस्टेड वर्चुअलाइजेशन ===
=== हार्डवेयर-असिस्टेड वर्चुअलाइजेशन ===
{{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>
हार्डवेयर-असिस्टेड वर्चुअलाइजेशन में, हार्डवेयर आर्किटेक्चरल सपोर्ट प्रदान करता है जो वर्चुअल मशीन मॉनिटर बनाने की सुविधा देता है और गेस्ट ऑपरेटिंग सिस्टम को आइसोलेशन में चलाने की स्वीकृति देता है।<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।
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।


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


== यह भी देखें ==
== यह भी देखें ==

Revision as of 22:10, 22 February 2023

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

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