वर्चुअल मशीन: Difference between revisions
No edit summary |
|||
Line 5: | Line 5: | ||
* ''सिस्टम वर्चुअल मशीन'' (जिसे पूर्ण वर्चुअलाइजेशन (आभासीकरण) वीएम भी कहा जाता है) वास्तविक मशीन का विकल्प प्रदान करता है। वे संपूर्ण ऑपरेटिंग सिस्टम को निष्पादित करने के लिए आवश्यक कार्यक्षमता प्रदान करते हैं। एक हाइपरवाइजर हार्डवेयर को साझा करने और प्रबंधित करने के लिए मूल कोड का उपयोग करता है, जो कई वातावरणों की स्वीकृति देता है जो एक दूसरे से अलग होते हैं, फिर भी एक ही भौतिक मशीन पर सम्मिलित होते हैं। आधुनिक हाइपरविजर मुख्य रूप से होस्ट सेंट्रल प्रोसेसिंग यूनिट से हार्डवेयर-समर्थित आभासीकरण, आभासीकरण-विशिष्ट हार्डवेयर का उपयोग करते हैं। | * ''सिस्टम वर्चुअल मशीन'' (जिसे पूर्ण वर्चुअलाइजेशन (आभासीकरण) वीएम भी कहा जाता है) वास्तविक मशीन का विकल्प प्रदान करता है। वे संपूर्ण ऑपरेटिंग सिस्टम को निष्पादित करने के लिए आवश्यक कार्यक्षमता प्रदान करते हैं। एक हाइपरवाइजर हार्डवेयर को साझा करने और प्रबंधित करने के लिए मूल कोड का उपयोग करता है, जो कई वातावरणों की स्वीकृति देता है जो एक दूसरे से अलग होते हैं, फिर भी एक ही भौतिक मशीन पर सम्मिलित होते हैं। आधुनिक हाइपरविजर मुख्य रूप से होस्ट सेंट्रल प्रोसेसिंग यूनिट से हार्डवेयर-समर्थित आभासीकरण, आभासीकरण-विशिष्ट हार्डवेयर का उपयोग करते हैं। | ||
* प्रोसेस वर्चुअल मशीन को प्लेटफॉर्म से स्वतंत्र | * प्रोसेस वर्चुअल मशीन को प्लेटफॉर्म से स्वतंत्र परिवेश में कंप्यूटर प्रोग्राम को निष्पादित करने के लिए डिज़ाइन किया गया है। | ||
कुछ वर्चुअल मशीन एमुलेटर, जैसे कि त्वरित एमुलेटर और वीडियो गेम कंसोल एमुलेटर, को विभिन्न प्रणाली संरचना का एमुलेट (या वस्तुतः नकल) करने के लिए डिज़ाइन किया गया है, इस प्रकार सॉफ़्टवेयर एप्लिकेशन और ऑपरेटिंग सिस्टम को दूसरे सेंट्रल प्रोसेसिंग यूनिट या संरचना के लिए लिखे जाने की स्वीकृति देता है। ऑपरेटिंग-सिस्टम-स्तरीय वर्चुअलाइजेशन कंप्यूटर के संसाधनों को कर्नेल (ऑपरेटिंग सिस्टम) के माध्यम से विभाजित करने की स्वीकृति देता है। शर्तें सार्वभौमिक रूप से विनिमेय नहीं हैं। | कुछ वर्चुअल मशीन एमुलेटर, जैसे कि त्वरित एमुलेटर और वीडियो गेम कंसोल एमुलेटर, को विभिन्न प्रणाली संरचना का एमुलेट (या वस्तुतः नकल) करने के लिए डिज़ाइन किया गया है, इस प्रकार सॉफ़्टवेयर एप्लिकेशन और ऑपरेटिंग सिस्टम को दूसरे सेंट्रल प्रोसेसिंग यूनिट या संरचना के लिए लिखे जाने की स्वीकृति देता है। ऑपरेटिंग-सिस्टम-स्तरीय वर्चुअलाइजेशन कंप्यूटर के संसाधनों को कर्नेल (ऑपरेटिंग सिस्टम) के माध्यम से विभाजित करने की स्वीकृति देता है। शर्तें सार्वभौमिक रूप से विनिमेय नहीं हैं। | ||
Line 23: | Line 23: | ||
एम्बेडेड (अंतः स्थापित) प्रणाली के संबंध में अलग गेस्ट ऑपरेटिंग सिस्टम का समर्थन करने के लिए वर्चुअल मशीन का उपयोग लोकप्रिय है। विशिष्ट उपयोग एक वास्तविक समय ऑपरेटिंग सिस्टम को एक साथ मुख्य जटिल ऑपरेटिंग सिस्टम, जैसे कि लिनक्स या विंडोज के साथ सक्रिय रखना होगा। एक अन्य उपयोग नवीन और अप्रमाणित सॉफ़्टवेयर के लिए अभी भी विकास के चरण में हैं, इसलिए यह एक सैंडबॉक्स (सॉफ़्टवेयर विकास) के अंदर सक्रिय है। ऑपरेटिंग सिस्टम के विकास के लिए वर्चुअल मशीनों के अन्य लाभ हैं और इसमें अधिकतम डिबगिंग अभिगम्य और तीव्र रीबूट सम्मिलित हो सकते हैं।<ref name="vmwarez_2006"/> | एम्बेडेड (अंतः स्थापित) प्रणाली के संबंध में अलग गेस्ट ऑपरेटिंग सिस्टम का समर्थन करने के लिए वर्चुअल मशीन का उपयोग लोकप्रिय है। विशिष्ट उपयोग एक वास्तविक समय ऑपरेटिंग सिस्टम को एक साथ मुख्य जटिल ऑपरेटिंग सिस्टम, जैसे कि लिनक्स या विंडोज के साथ सक्रिय रखना होगा। एक अन्य उपयोग नवीन और अप्रमाणित सॉफ़्टवेयर के लिए अभी भी विकास के चरण में हैं, इसलिए यह एक सैंडबॉक्स (सॉफ़्टवेयर विकास) के अंदर सक्रिय है। ऑपरेटिंग सिस्टम के विकास के लिए वर्चुअल मशीनों के अन्य लाभ हैं और इसमें अधिकतम डिबगिंग अभिगम्य और तीव्र रीबूट सम्मिलित हो सकते हैं।<ref name="vmwarez_2006"/> | ||
अपने स्वयं के गेस्ट ऑपरेटिंग सिस्टम संचालन वाले एकाधिक वर्चुअल मशीन प्रायः सर्वर समेकन के लिए लगे | अपने स्वयं के गेस्ट ऑपरेटिंग सिस्टम संचालन वाले एकाधिक वर्चुअल मशीन प्रायः सर्वर समेकन के लिए लगे हुए हैं।<ref name="vmware_2007"/> | ||
=== प्रक्रिया आभासी मशीन === | === प्रक्रिया आभासी मशीन === | ||
<nowiki>''एप्लिकेशन वर्चुअल मशीन''</nowiki> यहां पुनर्निर्देश करता है। एप्लिकेशन वर्चुअलाइजेशन के साथ भ्रमित न हों। | |||
एक प्रक्रिया वर्चुअल मशीन, जिसे कभी-कभी एप्लिकेशन वर्चुअल मशीन या प्रबंधित रनटाइम परिवेश (एमआरई) कहा जाता है, होस्ट ऑपरेटिंग सिस्टम के अंदर एक सामान्य एप्लिकेशन के रूप में सक्रिय है और एकल प्रक्रिया का समर्थन करता है। यह तब बनता है जब वह प्रक्रिया प्रारंभ होती है और जब वह बाहर निकलती है तो नष्ट हो जाती है। इसका उद्देश्य एक प्रणाली प्लेटफ़ॉर्म-स्वतंत्र प्रोग्रामिंग परिवेश प्रदान करना है जो अंतर्निहित हार्डवेयर या ऑपरेटिंग सिस्टम के विवरणों को दूर करता है और किसी प्रोग्राम को किसी भी प्लेटफ़ॉर्म पर उसी तरह से निष्पादित करने की स्वीकृति देता है। | |||
एक प्रक्रिया वर्चुअल मशीन, जिसे कभी-कभी एप्लिकेशन वर्चुअल मशीन या प्रबंधित रनटाइम | |||
एक प्रक्रिया वर्चुअल मशीन एक उच्च-स्तरीय अमूर्तता प्रदान करती है | एक प्रक्रिया वर्चुअल मशीन एक उच्च-स्तरीय अमूर्तता प्रदान करती है एक उच्च-स्तरीय प्रोग्रामिंग भाषा (सिस्टम वर्चुअल मशीन के निम्न-स्तरीय उद्योग मानक संरचना अमूर्तता की तुलना में) है। प्रक्रिया वर्चुअल मशीन एक दुभाषिया (कंप्यूटिंग) का उपयोग करके कार्यान्वित की जाती हैं; संकलित प्रोग्रामिंग भाषाओं के तुलनीय प्रदर्शन को समय-समय पर संकलन के उपयोग से प्राप्त किया जा सकता है।{{Citation needed|date=November 2015}} | ||
इस प्रकार का वर्चुअल मशीन जावा (प्रोग्रामिंग भाषा) के साथ लोकप्रिय हो गया है, जिसे जावा वर्चुअल मशीन का उपयोग करके कार्यान्वित किया जाता है। अन्य उदाहरणों में पैरट वर्चुअल मशीन और नेटवर्क समर्थित तकनीक फ्रेमवर्क सम्मिलित हैं, जो सामान्य भाषा रनटाइम नामक वर्चुअल मशीन पर सक्रिय है। ये सभी किसी भी कंप्यूटर भाषा के लिए अमूर्त परत के रूप में काम कर सकते हैं। | |||
अन्य प्रक्रिया वर्चुअल मशीन के विपरीत, ये प्रणाली एक विशिष्ट प्रोग्रामिंग भाषा प्रदान नहीं करते हैं, लेकिन एक | प्रक्रिया वर्चुअल मशीन का एक विशेष स्थिति प्रणाली है जो एक (संभावित रूप से विषम) कंप्यूटर संघ के संचार तंत्र पर अमूर्त है। इस तरह के वर्चुअल मशीन में एक प्रक्रिया नहीं होती है, लेकिन संघ में प्रत्येक भौतिक मशीन के लिए एक प्रक्रिया होती है। वे अन्तःसंबद्ध और ऑपरेटिंग सिस्टम द्वारा प्रदान किए गए संचार तंत्र के अतिरिक्त प्रोग्रामर को एल्गोरिदम पर ध्यान केंद्रित करके प्रोग्रामिंग समवर्ती एप्लीकेशन के कार्य को आसान बनाने के लिए डिज़ाइन किए गए हैं। वे इस तथ्य को नहीं छिपाते हैं कि संचार होता है, और इस तरह संघ को एक मशीन के रूप में प्रस्तुत करने का प्रयास नहीं करते हैं।{{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 के शुरुआती उदाहरण ओ-कोड मशीन थे, एक वर्चुअल मशीन जो बीसीपीएल कंपाइलर के कंपाइलर # फ्रंट एंड द्वारा उत्सर्जित ओ-कोड (ऑब्जेक्ट कोड) को निष्पादित करती है। इस अमूर्तता ने कंपाइलर को एक नए कंपाइलर # बैक एंड को प्रयुक्त करके आसानी से एक नए संरचना में पोर्ट करने की स्वीकृति दी, जिसने | प्रक्रिया आभासी मशीनें मूल रूप से एक मध्यवर्ती भाषा के लिए अमूर्त प्लेटफार्मों के रूप में उत्पन्न हुईं, जो एक संकलक द्वारा एक कार्यक्रम के मध्यवर्ती प्रतिनिधित्व के रूप में उपयोग की जाती हैं; शुरुआती उदाहरण 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"/>एक संबंधित भाषा जिसने बहुत सारे वर्चुअल मशीन इनोवेशन का निर्माण किया, वह सेल्फ (प्रोग्रामिंग | स्मॉलटॉक-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|पूर्ण वर्चुअलाइजेशन का तार्किक आरेख]]पूर्ण वर्चुअलाइजेशन में, वर्चुअल मशीन एक असंशोधित गेस्ट | [[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}} | ||
हार्डवेयर-असिस्टेड वर्चुअलाइजेशन में, हार्डवेयर आर्किटेक्चरल सपोर्ट प्रदान करता है जो वर्चुअल मशीन मॉनिटर बनाने की सुविधा देता है और गेस्ट | हार्डवेयर-असिस्टेड वर्चुअलाइजेशन में, हार्डवेयर आर्किटेक्चरल सपोर्ट प्रदान करता है जो वर्चुअल मशीन मॉनिटर बनाने की सुविधा देता है और गेस्ट ऑपरेटिंग सिस्टम को आइसोलेशन में चलाने की स्वीकृति देता है।<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
कार्यक्रम निष्पादन |
---|
सामान्य अवधारणाएँ |
कोड के प्रकार |
संकलन रणनीतियाँ |
उल्लेखनीय रनटाइम्स |
|
उल्लेखनीय संकलक और टूलचेन |
|
कंप्यूटिंग में, एक वर्चुअल (आभासी) मशीन एक कंप्यूटर प्रणाली का वर्चुअलाइजेशन (आभासीकरण)/इम्यूलेशन है। वर्चुअल मशीन कंप्यूटर संरचना पर आधारित हैं और एक भौतिक कंप्यूटर की कार्यक्षमता प्रदान करती हैं। उनके कार्यान्वयन में विशेष हार्डवेयर, सॉफ्टवेयर या संयोजन सम्मिलित हो सकते हैं। वर्चुअल मशीनें अलग-अलग होती हैं और उनके फंक्शन द्वारा व्यवस्थित होती हैं, यहां दिखाया गया है:
- सिस्टम वर्चुअल मशीन (जिसे पूर्ण वर्चुअलाइजेशन (आभासीकरण) वीएम भी कहा जाता है) वास्तविक मशीन का विकल्प प्रदान करता है। वे संपूर्ण ऑपरेटिंग सिस्टम को निष्पादित करने के लिए आवश्यक कार्यक्षमता प्रदान करते हैं। एक हाइपरवाइजर हार्डवेयर को साझा करने और प्रबंधित करने के लिए मूल कोड का उपयोग करता है, जो कई वातावरणों की स्वीकृति देता है जो एक दूसरे से अलग होते हैं, फिर भी एक ही भौतिक मशीन पर सम्मिलित होते हैं। आधुनिक हाइपरविजर मुख्य रूप से होस्ट सेंट्रल प्रोसेसिंग यूनिट से हार्डवेयर-समर्थित आभासीकरण, आभासीकरण-विशिष्ट हार्डवेयर का उपयोग करते हैं।
- प्रोसेस वर्चुअल मशीन को प्लेटफॉर्म से स्वतंत्र परिवेश में कंप्यूटर प्रोग्राम को निष्पादित करने के लिए डिज़ाइन किया गया है।
कुछ वर्चुअल मशीन एमुलेटर, जैसे कि त्वरित एमुलेटर और वीडियो गेम कंसोल एमुलेटर, को विभिन्न प्रणाली संरचना का एमुलेट (या वस्तुतः नकल) करने के लिए डिज़ाइन किया गया है, इस प्रकार सॉफ़्टवेयर एप्लिकेशन और ऑपरेटिंग सिस्टम को दूसरे सेंट्रल प्रोसेसिंग यूनिट या संरचना के लिए लिखे जाने की स्वीकृति देता है। ऑपरेटिंग-सिस्टम-स्तरीय वर्चुअलाइजेशन कंप्यूटर के संसाधनों को कर्नेल (ऑपरेटिंग सिस्टम) के माध्यम से विभाजित करने की स्वीकृति देता है। शर्तें सार्वभौमिक रूप से विनिमेय नहीं हैं।
परिभाषाएँ
सिस्टम वर्चुअल मशीन
एक वर्चुअल मशीन को मूल रूप से पोपेक और गोल्डबर्ग वर्चुअलाइजेशन आवश्यकताओं द्वारा वास्तविक कंप्यूटर मशीन के एक कुशल, अलग -अलग प्रतिलिपि के रूप में परिभाषित किया गया था।[1] वर्तमान उपयोग में वर्चुअल मशीनें सम्मिलित हैं जिनका किसी भी वास्तविक हार्डवेयर से कोई प्रत्यक्ष रूप से संबंध नहीं है।[2] वर्चुअल मशीन को संचालन करने वाले भौतिक, वास्तविक विश्व के हार्डवेयर को सामान्य रूप से 'होस्ट' कहा जाता है, और उस मशीन पर एम्यूलेट वर्चुअल मशीन को सामान्य रूप से 'गेस्ट' कहा जाता है। होस्ट कई गेस्ट का अनुकरण कर सकता है, जिनमें से प्रत्येक विभिन्न ऑपरेटिंग सिस्टम और हार्डवेयर प्लेटफॉर्म का अनुकरण कर सकता है।
कई ऑपरेटिंग सिस्टम संचालन की अपेक्षा वर्चुअल मशीनों का प्रारंभिक उद्देश्य था, ताकि कई सिंगल-टास्किंग ऑपरेटिंग सिस्टमों के बीच समय-साझाकरण की स्वीकृति दी जा सके। कुछ स्थितियों में, सिस्टम वर्चुअल मशीन को वर्चुअल मेमोरी की अवधारणा का एक सामान्यीकरण माना जा सकता है जो ऐतिहासिक रूप से इससे पहले था। अंतरराष्ट्रीय व्यवसाय मशीन निगम का सीपी/सीएमएस, पूर्ण वर्चुअलाइजेशन की स्वीकृति देने वाली पहली प्रणाली, प्रत्येक उपयोगकर्ता को एकल-उपयोगकर्ता ऑपरेटिंग सिस्टम, संवादात्मक मॉनिटर प्रणाली (सीएमएस) प्रदान करके समय साझाकरण को प्रयुक्त किया। वर्चुअल मेमोरी के विपरीत, सिस्टम वर्चुअल मशीन उपयोगकर्ता को उनके कोड में विशेषाधिकार प्राप्त निर्देश लिखने का अधिकार देती है। इस दृष्टिकोण के कुछ लाभ थे, जैसे इनपुट/आउटपुट उपकरणों को जोड़ना जो मानक प्रणाली द्वारा स्वीकृत नहीं है।[2]
जैसे-जैसे तकनीक वर्चुअलाइजेशन के उद्देश्यों के लिए वर्चुअल मेमोरी विकसित करती है, कंप्यूटर ऑपरेटिंग सिस्टम पर कई वर्चुअल मशीनों के बीच मेमोरी साझाकरण को प्रबंधित करने के लिए मेमोरी ओवरकमिटमेंट (अधिवचनबद्धता) की नई प्रणाली प्रयुक्त की जा सकती है। एक ही भौतिक मशीन पर चलने वाली कई वर्चुअल मशीनों के बीच समान सामग्री वाले मेमोरी पेजों को साझा करना संभव हो सकता है, जिसके परिणामस्वरूप उन्हें एक ही भौतिक पेज पर कर्नेल समान-पेज संयोजन (केएसएम) नामक तकनीक द्वारा मैप किया जा सकता है। यह विशेष रूप से केवल पढ़ने योग्य पेजों के लिए उपयोगी है, जैसे कोड सेगमेंट रखने वाले, जो समान सॉफ़्टवेयर संचालन वाली कई वर्चुअल मशीनों, सॉफ़्टवेयर लाइब्रेरी, वेब सर्वर, मिडलवेयर घटकों आदि के स्थिति में है। गेस्ट ऑपरेटिंग सिस्टम की आवश्यकता नहीं है होस्ट हार्डवेयर के अनुरूप होने के लिए इस प्रकार भविष्य के सॉफ़्टवेयर का समर्थन करने के लिए एक ही कंप्यूटर (जैसे, विंडोज, लिनक्स, या ऑपरेटिंग सिस्टम के पूर्व संस्करण) पर विभिन्न ऑपरेटिंग सिस्टम संचालन संभव बनाता है।[3]
एम्बेडेड (अंतः स्थापित) प्रणाली के संबंध में अलग गेस्ट ऑपरेटिंग सिस्टम का समर्थन करने के लिए वर्चुअल मशीन का उपयोग लोकप्रिय है। विशिष्ट उपयोग एक वास्तविक समय ऑपरेटिंग सिस्टम को एक साथ मुख्य जटिल ऑपरेटिंग सिस्टम, जैसे कि लिनक्स या विंडोज के साथ सक्रिय रखना होगा। एक अन्य उपयोग नवीन और अप्रमाणित सॉफ़्टवेयर के लिए अभी भी विकास के चरण में हैं, इसलिए यह एक सैंडबॉक्स (सॉफ़्टवेयर विकास) के अंदर सक्रिय है। ऑपरेटिंग सिस्टम के विकास के लिए वर्चुअल मशीनों के अन्य लाभ हैं और इसमें अधिकतम डिबगिंग अभिगम्य और तीव्र रीबूट सम्मिलित हो सकते हैं।[4]
अपने स्वयं के गेस्ट ऑपरेटिंग सिस्टम संचालन वाले एकाधिक वर्चुअल मशीन प्रायः सर्वर समेकन के लिए लगे हुए हैं।[5]
प्रक्रिया आभासी मशीन
''एप्लिकेशन वर्चुअल मशीन'' यहां पुनर्निर्देश करता है। एप्लिकेशन वर्चुअलाइजेशन के साथ भ्रमित न हों।
एक प्रक्रिया वर्चुअल मशीन, जिसे कभी-कभी एप्लिकेशन वर्चुअल मशीन या प्रबंधित रनटाइम परिवेश (एमआरई) कहा जाता है, होस्ट ऑपरेटिंग सिस्टम के अंदर एक सामान्य एप्लिकेशन के रूप में सक्रिय है और एकल प्रक्रिया का समर्थन करता है। यह तब बनता है जब वह प्रक्रिया प्रारंभ होती है और जब वह बाहर निकलती है तो नष्ट हो जाती है। इसका उद्देश्य एक प्रणाली प्लेटफ़ॉर्म-स्वतंत्र प्रोग्रामिंग परिवेश प्रदान करना है जो अंतर्निहित हार्डवेयर या ऑपरेटिंग सिस्टम के विवरणों को दूर करता है और किसी प्रोग्राम को किसी भी प्लेटफ़ॉर्म पर उसी तरह से निष्पादित करने की स्वीकृति देता है।
एक प्रक्रिया वर्चुअल मशीन एक उच्च-स्तरीय अमूर्तता प्रदान करती है एक उच्च-स्तरीय प्रोग्रामिंग भाषा (सिस्टम वर्चुअल मशीन के निम्न-स्तरीय उद्योग मानक संरचना अमूर्तता की तुलना में) है। प्रक्रिया वर्चुअल मशीन एक दुभाषिया (कंप्यूटिंग) का उपयोग करके कार्यान्वित की जाती हैं; संकलित प्रोग्रामिंग भाषाओं के तुलनीय प्रदर्शन को समय-समय पर संकलन के उपयोग से प्राप्त किया जा सकता है।[citation needed]
इस प्रकार का वर्चुअल मशीन जावा (प्रोग्रामिंग भाषा) के साथ लोकप्रिय हो गया है, जिसे जावा वर्चुअल मशीन का उपयोग करके कार्यान्वित किया जाता है। अन्य उदाहरणों में पैरट वर्चुअल मशीन और नेटवर्क समर्थित तकनीक फ्रेमवर्क सम्मिलित हैं, जो सामान्य भाषा रनटाइम नामक वर्चुअल मशीन पर सक्रिय है। ये सभी किसी भी कंप्यूटर भाषा के लिए अमूर्त परत के रूप में काम कर सकते हैं।
प्रक्रिया वर्चुअल मशीन का एक विशेष स्थिति प्रणाली है जो एक (संभावित रूप से विषम) कंप्यूटर संघ के संचार तंत्र पर अमूर्त है। इस तरह के वर्चुअल मशीन में एक प्रक्रिया नहीं होती है, लेकिन संघ में प्रत्येक भौतिक मशीन के लिए एक प्रक्रिया होती है। वे अन्तःसंबद्ध और ऑपरेटिंग सिस्टम द्वारा प्रदान किए गए संचार तंत्र के अतिरिक्त प्रोग्रामर को एल्गोरिदम पर ध्यान केंद्रित करके प्रोग्रामिंग समवर्ती एप्लीकेशन के कार्य को आसान बनाने के लिए डिज़ाइन किए गए हैं। वे इस तथ्य को नहीं छिपाते हैं कि संचार होता है, और इस तरह संघ को एक मशीन के रूप में प्रस्तुत करने का प्रयास नहीं करते हैं।[citation needed]
अन्य प्रक्रिया वर्चुअल मशीन के विपरीत, ये प्रणाली एक विशिष्ट प्रोग्रामिंग भाषा प्रदान नहीं करते हैं, लेकिन एक सम्मिलित भाषा में सन्निहित हैं; सामान्य रूप से ऐसी प्रणाली कई भाषाओं (जैसे, C (प्रोग्रामिंग भाषा) और फोरट्रान) के लिए बाइंडिंग प्रदान करती है।[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 का एक विकल्प है और हॉटस्पॉट की तुलना में अधिकतमस्टार्टअप और कम संसाधन खपत का दावा करने वाला एक ओपन सोर्स एक्लिप्स प्रोजेक्ट है।
पूर्ण वर्चुअलाइजेशन
पूर्ण वर्चुअलाइजेशन में, वर्चुअल मशीन एक असंशोधित गेस्ट ऑपरेटिंग सिस्टम (एक ही निर्देश सेट के लिए डिज़ाइन किया गया) को अलगाव में चलाने के लिए पर्याप्त हार्डवेयर का अनुकरण करती है। यह दृष्टिकोण 1966 में अंतरराष्ट्रीय व्यवसाय मशीन निगम नियंत्रण प्रोग्राम-40 और नियंत्रण प्रोग्राम-67, वर्चुअल मशीन (ऑपरेटिंग सिस्टम) परिवार के पूर्ववर्तियों के साथ अग्रणी था।
मेनफ्रेम फील्ड के बाहर के उदाहरणों में पैरेलल्स वर्कस्टेशन, मैक के लिए पैरेलल्स डेस्कटॉप, वर्चुअलबॉक्स, वर्चुअल आयरन, ओरेकल वर्चुअल मशीन, माइक्रोसॉफ्ट वर्चुअल पीसी, माइक्रोसॉफ्ट वर्चुअल सर्वर, हाइपर-वी, वीएमवेयर फ्यूजन, वीएमवेयर वर्कस्टेशन, वीएमवेयर सर्वर (बंद, जिसे पहले जीएसएक्स सर्वर कहा जाता था) सम्मिलित हैं। , VMware ESXi, त्वरित एमुलेटर, ऑपरेटिंग सिस्टम के लिए अनुकूली डोमेन पर्यावरण, Mac-on-Linux, Win4BSD, Win4Lin, और Egenera vBlade तकनीक।
हार्डवेयर-असिस्टेड वर्चुअलाइजेशन
हार्डवेयर-असिस्टेड वर्चुअलाइजेशन में, हार्डवेयर आर्किटेक्चरल सपोर्ट प्रदान करता है जो वर्चुअल मशीन मॉनिटर बनाने की सुविधा देता है और गेस्ट ऑपरेटिंग सिस्टम को आइसोलेशन में चलाने की स्वीकृति देता है।[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]
ऑपरेटिंग-प्रणाली-स्तरीय वर्चुअलाइजेशन
ऑपरेटिंग-प्रणाली-लेवल वर्चुअलाइजेशन में, एक फिजिकल सर्वर को ऑपरेटिंग सिस्टम लेवल पर वर्चुअलाइज किया जाता है, जिससे कई आइसोलेटेड और सिक्योर वर्चुअलाइज्ड सर्वर को सिंगल फिजिकल सर्वर पर चलाने में सहायता मिलती है। गेस्ट ऑपरेटिंग सिस्टम परिवेश ऑपरेटिंग सिस्टम के उसी रनिंग इंस्टेंस को होस्ट प्रणाली के रूप में साझा करते हैं। इस प्रकार, गेस्ट परिवेश को प्रयुक्त करने के लिए एक ही ऑपरेटिंग सिस्टम कर्नेल का भी उपयोग किया जाता है, और किसी दिए गए गेस्ट परिवेश में चल रहे एप्लिकेशन इसे स्टैंड-अलोन प्रणाली के रूप में देखते हैं। अग्रणी कार्यान्वयन फ्रीबीएसडी जेल थे; अन्य उदाहरणों में डॉकर (सॉफ्टवेयर), सोलारिस कंटेनर, ओपनवीजेड, लिनक्स-वीएसर, एलएक्ससी, एआईएक्स वर्कलोड पार्टिशन, पैरेलल्स वर्चुअजो कंटेनर और आईकोर वर्चुअल अकाउंट सम्मिलित हैं।
यह भी देखें
- अमेज़न मशीन छवि
- डेस्कटॉप वर्चुअलाइजेशन
- लिनक्स कंटेनर
- मूल विकास किट
- पैरावर्चुअलाइजेशन
- भंडारण हाइपरविजर
- सार्वभौमिक ट्यूरिंग मशीन
- आभासी उपकरण
- वर्चुअल बैकअप उपकरण
- वर्चुअल डिस्क छवि
- वर्चुअल डॉस मशीन (वीडीएम)
- वर्चुअल मशीन एस्केप
संदर्भ
- ↑ 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.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.
- ↑ 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.
- ↑ "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.
- ↑ "Server Consolidation and Containment With Virtual Infrastructure" (PDF). VMware. 2007. Archived (PDF) from the original on 2013-12-28. Retrieved 2015-09-29.
- ↑ Pugh, Emerson W. (1995). Building IBM: Shaping an Industry and Its Technology. MIT. p. 274. ISBN 978-0-262-16147-3.
- ↑ Pugh, Emerson W.; et al. (1991). IBM's 360 and Early 370 Systems. MIT. pp. 160–161. ISBN 978-0-262-16123-7.
- ↑ 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.
- ↑ Griswold, Ralph E. The Macro Implementation of SNOBOL4. San Francisco, CA: W. H. Freeman and Company, 1972 (ISBN 0-7167-0447-1), Chapter 1.
- ↑ Nelson, Graham A. "About Interpreters". Inform website. Archived from the original on 2009-12-03. Retrieved 2009-11-07.
- ↑ 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.
- ↑ 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.
- ↑ Aycock, John (2003). "A brief history of just-in-time". ACM Comput. Surv. 35 (2): 97–113. doi:10.1145/857076.857077. S2CID 15345671.
- ↑ 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.
- ↑ 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.
- ↑ 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.
- ↑ 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.
- ↑ 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.
- ↑ 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.
- ↑ Randal, A. (2019). The Ideal Versus the Real: Revisiting the History of Virtual Machines and Containers.
- ↑ 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)
इस पेज में लापता आंतरिक लिंक की सूची
बाहरी कड़ियाँ
- Mendel Rosenblum (August 31, 2004). "The Reincarnation of Virtual Machines". ACM Queue. Vol. 2, no. 5.
- Sandia National Laboratories Runs 1 Million Linux Kernels as Virtual Machines
- The design of the Inferno virtual machine by Phil Winterbottom and Rob Pike
श्रेणी: ऑपरेटिंग सिस्टम प्रौद्योगिकी श्रेणी: प्रोग्रामिंग भाषा कार्यान्वयन