"रनटाइम" क्या है?


403

मैंने "सी रनटाइम", "विजुअल सी ++ 2008 रनटाइम", ".NET कॉमन लैंग्वेज रनटाइम", आदि जैसी चीजों के बारे में सुना है।

  • " रनटाइम " वास्तव में क्या है ?
  • यह किस चीज़ से बना है?
  • यह मेरे कोड के साथ कैसे इंटरैक्ट करता है? या शायद अधिक सटीक रूप से, मेरे कोड को इसके द्वारा कैसे नियंत्रित किया जाता है?

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

क्या "रनटाइम" और " रनटाइम लाइब्रेरी " दो अलग-अलग चीजें हैं?

एडीडी 1

इन दिनों, मैं सोच रहा हूं कि शायद Runtime में तथाकथित वर्चुअल मशीन जैसे JVM के साथ कुछ सामान्य है । यहाँ इस तरह के विचार की ओर ले जाने वाला उद्धरण है:

यह संकलन प्रक्रिया अमूर्तता की कई परतों में टूटने के लिए पर्याप्त रूप से जटिल है, और इनमें आमतौर पर तीन अनुवादक शामिल होते हैं: एक संकलक, एक वर्चुअल मशीन कार्यान्वयन और एक कोडांतरक। --- कम्प्यूटिंग सिस्टम के तत्व (परिचय, हार्डवेयर भूमि के लिए सड़क नीचे)

ADD 2

पुस्तक विशेषज्ञ सी प्रोग्रामिंग: डीप सी राज । अध्याय 6 रनटाइम डेटा संरचनाएं इस प्रश्न का एक उपयोगी संदर्भ है।


गु रनटाइम में runtime libraryप्लस कुछ नियंत्रण कोड और कुछ राज्य (ओएस द्वारा आपूर्ति) शामिल हैं।
मार्टिन यॉर्क

43
महान सवाल, हमेशा इस पर सवाल उठाया।
contactmatt

मैं INT को फंक्शन नहीं कहूंगा। अधिक जानकारी के लिए कृपया stackoverflow.com/questions/1817577/… देखें।
कोरे तुगय

2
मुझे एक बहन साइट पर एक और पोस्ट मिली जो उपयोगी हो सकती है: programmers.stackexchange.com/questions/294346/…
बादल छाए रहेंगे।

मैं हमेशा सैंडबॉक्स की तरह निचले स्तर के बुनियादी ढांचे की बात करता हूं। आपके पास टास्क मैनेजर / या यूनिक्स किट पर प्रक्रियाएं, सभी निम्न स्तर की जीयूआई लाइब्रेरी आदि हैं। वह सब रनटाइम का हिस्सा है। जिन चीजों पर नींव बनाई जाती है।
JGFMK

जवाबों:


262

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

C जैसी निम्न-स्तरीय भाषाएँ बहुत छोटी हैं (यदि कोई हो) रनटाइम। ऑब्जेक्टिव-सी जैसी अधिक जटिल भाषाएं, जो गतिशील संदेश को पारित करने की अनुमति देती हैं, उनके पास अधिक व्यापक रनटाइम है।

आप सही हैं कि रनटाइम कोड लाइब्रेरी कोड है, लेकिन लाइब्रेरी कोड एक अधिक सामान्य शब्द है, जिसके द्वारा निर्मित कोड का वर्णन है किसी भी लाइब्रेरी । रनटाइम कोड विशेष रूप से भाषा की विशेषताओं को लागू करने के लिए आवश्यक कोड है।


103

रनटाइम एक सामान्य शब्द है जो आपके कोड पर चलने वाली किसी भी लाइब्रेरी, फ्रेमवर्क या प्लेटफ़ॉर्म को संदर्भित करता है।

C और C ++ रनटाइम्स फ़ंक्शन का संग्रह हैं।

.NET रनटाइम में एक मध्यवर्ती भाषा दुभाषिया, एक कचरा कलेक्टर, और बहुत कुछ होता है।


4
C ++ मानक लाइब्रेरी में केवल फ़ंक्शन नहीं होते हैं, और मैट बॉल का संदर्भ देते हुए, C और C ++ "रनटाइम" रनटाइम लाइब्रेरी होते हैं। .NET रनटाइम एक रनटाइम लाइब्रेरी और रनटाइम सिस्टम है।
स्मरलिन

1
मेरा सवाल यह है कि स्टैटिक लाइब्रेरियाँ रनटाइम भी हैं? मुझे लगता है कि इस शब्द का इस्तेमाल ज्यादातर साझा वस्तुओं के लिए किया जाता है, है न? linux में libc पर विचार करें। और प्लेटफार्मों और रूपरेखाओं के बारे में क्या? वे भी पुस्तकालयों में टूट गए हैं?
आमिर ज़ादेह

3
लेकिन मेरा कोड वास्तव में किसी भी " लाइब्रेरी, फ्रेमवर्क, या प्लेटफॉर्म " पर कैसे चल सकता है ? यह सीपीयू या अन्य प्रोसेसिंग यूनिट पर चलना चाहिए। क्या आप अधिक स्पष्टीकरण के लिए अतिरिक्त स्तर का विवरण प्रदान कर सकते हैं?
n611x007

C और C ++ रनटाइम्स फ़ंक्शन का संग्रह हैं। -> क्या कार्य?
कोरे तुगय

3
@KorayTugay: मानक पुस्तकालय में कार्य, जैसे coutया printf
SLaks

80

विकिपीडिया: रनटाइम लाइब्रेरी / रन-टाइम सिस्टम के अनुसार

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


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


पुन: आपका संपादन , "रनटाइम" और "रनटाइम लाइब्रेरी" एक ही चीज के दो अलग-अलग नाम हैं।


69
विकिपीडिया उद्धरणों के लिए एक अच्छा स्रोत नहीं है। यह आधिकारिक स्रोतों की तलाश शुरू करने के लिए एक अच्छा स्थान है, लेकिन खुद को आधिकारिक नहीं माना जाना चाहिए और क्योंकि इस तरह के उद्धरण विश्वसनीय नहीं हैं। (मि। वेल्स द्वारा विकिपीडिया के निर्माता के बयानों के अनुसार)।
मार्टिन यॉर्क

5
पहली बोली में "रनटाइम के दौरान" (माना जाता है कि रनटाइम लाइब्रेरी के बारे में) क्या दर्शाता है? एक आसान [गलत] व्याख्या निम्नलिखित हो सकती है: "जबकि कार्यक्रम निष्पादित हो रहा है, संकलक, समानांतर में, कार्यान्वयन के लिए एक पुस्तकालय (खुद के लिए) का उपयोग करता है (यानी रनटाइम पर अतिरिक्त कोड उत्पन्न करता है)" वादा किया "(भाषा कल्पना द्वारा) ) कार्यक्रम के लिए कार्य करता है ”। यह गलत हो सकता है और / या आसानी से रन-टाइम सिस्टम के बचाव में झुक सकता है।
n611x007

2
लोकी को छोड़ना जारी रखने के लिए, खासकर जब लेखों में से कोई भी संदर्भ प्रदान नहीं करता है (जो कि कोई उद्धरण नहीं है, यह सिर्फ कुछ है जो मैंने सोचा था कि मैं बेहतर कहूंगा)
arsaKasra

1
@MartinYork, न केवल एक एनसाइक्लोपीडिया है जो आधिकारिक नहीं है, यह प्रलेखन पर भी ध्यान केंद्रित करता है और स्पष्टीकरण नहीं। वे बहुत अलग हो सकते हैं।
रॉय प्रिन्स

59

क्रम या निष्पादन वातावरण जो कोड निष्पादित करता है और कम से मौजूद है, एक भाषा कार्यान्वयन का हिस्सा है क्रम ; कार्यान्वयन के संकलन-समय वाले भाग को C मानक में अनुवाद परिवेश कहा जाता है ।

उदाहरण:

  • जावा रनटाइम में वर्चुअल मशीन और मानक पुस्तकालय होते हैं

  • एक सामान्य सी रनटाइम में लोडर (जो ऑपरेटिंग सिस्टम का हिस्सा है) और रनटाइम लाइब्रेरी शामिल है, जो सी भाषा के उन हिस्सों को लागू करता है जो कंपाइलर द्वारा निष्पादन योग्य में निर्मित नहीं होते हैं; होस्ट किए गए वातावरणों में, इसमें मानक पुस्तकालय के अधिकांश भाग शामिल हैं


2
धन्यवाद, मुझे लगता है कि यह इस विषय में सबसे अच्छा जवाब है।
कोरे तुगे

1
मैं "निष्पादन पर्यावरण" के नामकरण की सराहना करता हूं, लेकिन मुझे लगता है कि पूर्व के लिए उपनाम के रूप में सिर्फ "रनटाइम" का उपयोग करना एक बुरा विचार है (जो मेरी टिप्पणियों से है कि कई प्रोग्रामर क्या करते हैं), "रनटाइम वातावरण" अधिक सटीक है। मैं @ MichałTrybus से सहमत हूं कि "रनटाइम" का अर्थ है "वह समय जब प्रोग्राम चलाया जाता है"।
वल्हु

32

मेरी समझ में रनटाइम वास्तव में इसका मतलब है - वह समय जब प्रोग्राम चलाया जाता है। आप कह सकते हैं कि रनटाइम / रन टाइम या कंपाइल टाइम पर कुछ होता है ।

मुझे लगता है कि रनटाइम और रनटाइम लाइब्रेरी (यदि वे नहीं हैं) दो अलग-अलग चीजें होनी चाहिए। "सी रनटाइम" मुझे सही नहीं लगता। मैं इसे "सी रनटाइम लाइब्रेरी" कहता हूं।

आपके अन्य सवालों के जवाब: मुझे लगता है कि शब्द रनटाइम को पर्यावरण और कार्यक्रम के संदर्भ को शामिल करने के लिए बढ़ाया जा सकता है जब इसे चलाया जाता है, तो:

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

यह उत्तर कुछ लोगों के लिए मेरी राय है, तथ्य या परिभाषा नहीं।


29

मैट बॉल ने इसका सही जवाब दिया। मैं इसके बारे में उदाहरणों के साथ कहूंगा।

टर्बो-बोरलैंड C / C ++ (वर्ष 1991 से संस्करण 3.1) संकलक में संकलित एक कार्यक्रम चलाने पर विचार करें और इसे 32-बिट संस्करण जैसे Win 98/2000 आदि के तहत चलने दें।

यह एक 16-बिट संकलक है। और आप देखेंगे कि आपके सभी कार्यक्रमों में 16-बिट पॉइंटर्स हैं। जब आपका ओएस 32 बिट है तो ऐसा क्यों है? क्योंकि आपके कंपाइलर ने 16 बिट का निष्पादन वातावरण स्थापित किया है और ओएस के 32-बिट संस्करण ने इसका समर्थन किया है।

जिसे आम तौर पर JRE (जावा रनटाइम एनवायरनमेंट) कहा जाता है, सभी संसाधनों के साथ एक जावा प्रोग्राम प्रदान करता है, जिसे निष्पादित करने की आवश्यकता हो सकती है।

दरअसल, रनटाइम वातावरण वर्चुअल मशीनों के विचार का मस्तिष्क उत्पाद है। एक वर्चुअल मशीन हार्डवेयर के बीच कच्चे इंटरफ़ेस को लागू करती है और किसी प्रोग्राम को निष्पादित करने की आवश्यकता हो सकती है। रनटाइम वातावरण इन इंटरफेस को अपनाता है और उन्हें प्रोग्रामर के उपयोग के लिए प्रस्तुत करता है। एक कंपाइलर डेवलपर को अपने कार्यक्रमों के लिए एक निष्पादन वातावरण प्रदान करने के लिए इन सुविधाओं की आवश्यकता होगी।


एक आभासी मशीन हार्डवेयर के बीच "कच्चे" इंटरफ़ेस को लागू करती है और एक प्रोग्राम को निष्पादित करने की आवश्यकता हो सकती है। -> मैं इस बारे में निश्चित नहीं हूं।
कोरे तुगे

7

समय को ठीक से चलाएं जहां आपका कोड जीवन में आता है और आप अपने कोड में बहुत सी महत्वपूर्ण चीजें देख सकते हैं।

रनटाइम में ऑपरेटिंग सिस्टम की उप प्रणाली (फ़ाइल सेवाएँ, IO सेवाएँ .. नेटवर्क सेवा आदि) का उपयोग करते हुए मेमोरी आवंटित करने, मेमोरी फ्री करने की जिम्मेदारी होती है।

जब तक आप व्यावहारिक रूप से अपना कोड नहीं चलाते हैं, तब तक आपके कोड को "WORKING IN THEORY" कहा जाएगा। और रनटाइम एक मित्र है जो इसे प्राप्त करने में मदद करता है।


3

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

सी कार्यक्रमों के मामले में, रनटाइम वह कोड होता है जो स्टैक, ढेर आदि को सेट करता है जो कि सी पर्यावरण द्वारा अपेक्षित आवश्यकता होती है। यह अनिवार्य रूप से उस वातावरण को स्थापित करता है जो भाषा द्वारा वादा किया गया है। (इसमें रनटाइम लाइब्रेरी कंपोनेंट, crt0.lib या C के मामले में ऐसा कुछ हो सकता है)


3

मैंने पाया कि निम्नलिखित फ़ोल्डर संरचना समझने के लिए बहुत ही व्यावहारिक संदर्भ बनाती runtimeहै:

मोज़िला ज़ूलरनर के स्टंट

आप देख सकते हैं कि वहाँ ' स्रोत ' है, वहाँ ' एसडीके ' या 'सॉफ्टवेयर डेवलपमेंट किट' है और फिर वहाँ है Runtime, जैसे। सामान जो चलता है - रनटाइम पर। यह सामग्री की तरह हैं:

runtimes 'फ़ोल्डर सामग्री

Win32 ज़िप में .exe -s और .dll -s शामिल हैं।

इसलिए उदा। सी रनटाइम इस तरह की फाइलें होंगी - सी रनटाइम लाइब्रेरीज़, .so-s या .dll -s - आप रनटाइम पर चलाते हैं, उनके (या उनकी सामग्री 'या उद्देश्यों') द्वारा विशेष को परिभाषा में शामिल किया जाता है। सी भाषा ('कागज' पर), फिर अपनी पसंद के सी कार्यान्वयन द्वारा लागू की गई। और फिर आपको उस कार्यान्वयन का रनटाइम मिलता है, इसका उपयोग करने और उस पर निर्माण करने के लिए।

यही है, थोड़ा ध्रुवीकरण के साथ, रन करने योग्य फ़ाइलों को आपके नए सी-आधारित प्रोग्राम के उपयोगकर्ताओं की आवश्यकता होगी। सी-आधारित कार्यक्रम के एक डेवलपर के रूप में, आप ऐसा करते हैं, लेकिन आपको सी कंपाइलर और सी लाइब्रेरी हेडर की भी आवश्यकता है; उपयोगकर्ताओं को उन की जरूरत नहीं है


1
प्रासंगिक क्रम को एक दूसरे, इस असंबंधित लेख है अजगर मिथकों के अनुभाग मिथक 6, जहाँ आप के बीच के अंतर को देख सकते हैं क्रम और प्रोग्रामिंग भाषा के 6. मिथक पहले अनुच्छेद में,
n611x007

3

रनटाइम मूल रूप से मतलब है जब प्रोग्राम किसी मशीन के हार्डवेयर और ऑपरेटिंग सिस्टम के साथ इंटरैक्ट करता है। C के पास इसका रनटाइम नहीं है, बल्कि इसके बजाय, यह एक ऑपरेटिंग सिस्टम (जो मूल रूप से RAM का एक हिस्सा है) से रनटाइम का अनुरोध करता है।


1

यदि उपरोक्त उत्तरों को पढ़ने से मेरी समझ सही है, तो रनटाइम मूल रूप से 'बैकग्राउंड प्रोसेस' है जैसे कि कचरा संग्रह, मेमोरी-आवंटन, मूल रूप से किसी भी प्रक्रिया को अप्रत्यक्ष रूप से लागू किया जाता है, पुस्तकालयों / रूपरेखाओं द्वारा कि आपके कोड में लिखा गया है, और विशेष रूप से उन संकलन के बाद होने वाली प्रक्रियाएँ, जबकि अनुप्रयोग चल रहा है।


-1

MSDN प्रलेखन के ये भाग आपके अधिकांश प्रश्नों से निपटते हैं: http://msdn.microsoft.com/en-us/library/8bs2ecf4(VS.71).aspx

आशा है कि ये आपकी मदद करेगा।

धन्यवाद, डेमियन


3
वास्तव में, यह नहीं है; वह केवल .Net के बारे में नहीं पूछ रहा है।
एसएलके

@Matt: फिर से। हालाँकि, उनके रनटाइम्स के 2/3 को .Net द्वारा समर्थित किया गया था, उनके टैग्स के 1/2 ने .Net के साथ सौदा किया और मुझे लगा कि लिंक उपयोगी होंगे।
डेमियन शेंकेलमैन

मैं इसे "3/4 भाषाओं का समर्थन करता हूं।" .NET पूरी तरह से समर्थन नहीं करता है, यह मध्य स्तर पर यूनिक्स और खिड़कियों के बीच दरार को मजबूत रखने के लिए डिज़ाइन किया गया है।
मैट जॉइनर

@MattJoiner - यह २०१० में सच हो सकता है, लेकिन यह .NET मानक और ओपन-सोर्स कार्यान्वयन जैसे .NET कोर, आदि के साथ आज स्मारकीय रूप से अन-ट्रू है
rory.ap

-2

रन टाइम वह उदाहरण है जहां आपको यह नहीं पता होता है कि इसके निष्पादन के दौरान किस प्रकार की वस्तुएं बनती हैं, वस्तुओं का निर्माण निश्चित स्थिति या कुछ गणना कार्य पर आधारित होता है। विरोधाभास में, संकलन समय वह उदाहरण है जहां आवश्यक वस्तुओं को आपके निष्पादन से पहले आपके द्वारा परिभाषित किया जाता है।


-3

रनटाइम डिजाइन-समय और संकलन-समय / लिंक-टाइम के विपरीत है। ऐतिहासिक रूप से यह धीमी मेनफ्रेम वातावरण से आता है जहां मशीन-समय महंगा था।


1
यह प्रश्न का उत्तर नहीं देता है और आगे इसे जटिल बनाता है।
cglotr
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.