रनटाइम सिस्टम और वर्चुअल मशीनें
रनटाइम सिस्टम और वर्चुअल मशीनें कार्यक्रमों के लिए निष्पादन वातावरण प्रदान करती हैं, मध्यवर्ती कोड की व्याख्या या संकलन करती हैं और एक चल रहे कार्यक्रम को आवश्यक सेवाओं का प्रबंधन करती हैं।
Definition
एक रनटाइम सिस्टम वह सॉफ्टवेयर वातावरण है जो किसी कार्यक्रम के अपने कोड से परे निष्पादन का समर्थन करता है, और एक वर्चुअल मशीन एक अमूर्त निष्पादन इंजन है जो एक पोर्टेबल निर्देश सेट की व्याख्या या संकलन करता है, जो पोर्टेबिलिटी और रनटाइम सेवाएं प्रदान करता है।
Scope
यह विषय संकलित कोड और हार्डवेयर के बीच की परत को कवर करता है: बाइटकोड इंटरप्रेटर और एब्स्ट्रैक्ट मशीनें, जस्ट-इन-टाइम (JIT) संकलन, डायनामिक डिस्पैच और मेथड लुकअप, कॉलिंग कन्वेंशन और स्टैक प्रबंधन, और रनटाइम सेवाएं जैसे अपवाद हैंडलिंग और रिफ्लेक्शन। यह पोर्टेबल वर्चुअल मशीनों के डिजाइन और प्रबंधित भाषाओं को कुशल बनाने वाली तकनीकों को संबोधित करता है।
Core questions
- वर्चुअल मशीनें हार्डवेयर में पोर्टेबिलिटी कैसे प्रदान करती हैं?
- जस्ट-इन-टाइम संकलन व्याख्या और मूल कोड को कैसे जोड़ता है?
- डायनामिक डिस्पैच और मेथड लुकअप को कुशल कैसे बनाया जाता है?
- एक प्रबंधित भाषा को कौन सी रनटाइम सेवाएं समर्थन करनी चाहिए?
Key theories
- पोर्टेबल वर्चुअल मशीन आर्किटेक्चर
- जावा वर्चुअल मशीन विनिर्देश एक पोर्टेबल, सत्यापन योग्य बाइटकोड और निष्पादन मॉडल को परिभाषित करता है, यह दर्शाता है कि एक वर्चुअल मशीन किसी भाषा को विशेष हार्डवेयर से कैसे अलग करती है।
- जस्ट-इन-टाइम संकलन
- आयॉक (Aycock) उन तकनीकों का सर्वेक्षण करते हैं जिनके द्वारा रनटाइम निष्पादन के दौरान कोड को मूल रूप में संकलित करते हैं, रनटाइम जानकारी का उपयोग करके संकलित कोड के थ्रूपुट के मुकाबले व्याख्या स्टार्टअप को संतुलित करते हैं।
- डायनामिक डिस्पैच के लिए इनलाइन कैशिंग
- ड्यूश (Deutsch) और शिफमैन (Schiffman) के स्मॉलटॉक कार्यान्वयन ने इनलाइन कैशिंग और डायनामिक अनुवाद की शुरुआत की, जो गतिशील रूप से डिस्पैच की गई भाषाओं में मेथड लुकअप को तेज़ बनाने के लिए प्रमुख तकनीकें हैं।
Clinical relevance
वर्चुअल मशीनें और प्रबंधित रनटाइम जावा, .NET, जावास्क्रिप्ट और पायथन के लिए व्यापक रूप से उपयोग किए जाने वाले प्लेटफॉर्म को शक्ति प्रदान करते हैं, जो पोर्टेबिलिटी, सुरक्षा और अनुकूली अनुकूलन प्रदान करते हैं। JIT संकलन और इनलाइन कैशिंग ही कारण हैं कि उच्च-स्तरीय, गतिशील भाषाएं प्रतिस्पर्धी प्रदर्शन प्राप्त कर सकती हैं।
History
अमूर्त मशीनें शुरुआती पोर्टेबल सिस्टम और स्मॉलटॉक (Smalltalk) से संबंधित हैं, जिसके 1984 के कार्यान्वयन ने गतिशील अनुवाद और इनलाइन कैश का बीड़ा उठाया। जावा वर्चुअल मशीन ने 1990 के दशक के मध्य में पोर्टेबल बाइटकोड को लोकप्रिय बनाया, और हॉटस्पॉट (HotSpot) जैसे अनुकूली JIT कंपाइलर और बाद में जावास्क्रिप्ट इंजन मुख्यधारा की प्रबंधित भाषाओं में आक्रामक रनटाइम अनुकूलन लाए।
Debates
- व्याख्या बनाम जस्ट-इन-टाइम संकलन
- रनटाइम डिजाइनर तेज़ स्टार्टअप और कम मेमोरी उपयोग वाले सरल इंटरप्रेटर को JIT कंपाइलर के मुकाबले तौलते हैं जो वार्मअप समय और कार्यान्वयन जटिलता की लागत पर उच्च शिखर प्रदर्शन प्राप्त करते हैं, अक्सर दोनों को स्तरीय प्रणालियों में जोड़ते हैं।
Key figures
- Peter Deutsch
- John Aycock
- James Gosling
- Gilad Bracha
Related topics
Seminal works
- lindholm2014
- aycock2003
- deutsch1984
Frequently asked questions
- इस संदर्भ में वर्चुअल मशीन क्या है?
- यहां एक वर्चुअल मशीन एक सॉफ्टवेयर निष्पादन इंजन है जो एक पोर्टेबल निर्देश सेट (जैसे बाइटकोड) चलाता है, अंतर्निहित हार्डवेयर पर अमूर्तता प्रदान करता है और पूरे कंप्यूटर का अनुकरण करने के बजाय रनटाइम सेवाएं प्रदान करता है।
- जस्ट-इन-टाइम संकलन प्रदर्शन में कैसे मदद करता है?
- एक JIT कंपाइलर कार्यक्रम के बार-बार निष्पादित होने वाले हिस्सों को रनटाइम पर मूल कोड में अनुवादित करता है, प्रोफाइलिंग जानकारी का उपयोग करता है जो एक अग्रिम-समय कंपाइलर के पास नहीं होती है, इसलिए हॉट कोड लगभग मूल गति से चलता है।