लोडर (कंप्यूटिंग): Difference between revisions

From Vigyanwiki
No edit summary
(FINAL SUBMIT)
Line 2: Line 2:
[[कम्प्यूटिंग|परिकलक प्रणाली]] में एक लोडर (भारक) एक [[ऑपरेटिंग सिस्टम|प्रचालन]] [[कम्प्यूटिंग|प्रणाली]] का एक हिस्सा होता है जो [[कंप्यूटर प्रोग्राम|कार्यक्रम]] और [[कम्प्यूटिंग|परिकलक]] संग्रह को लोड करने के लिए जिम्मेदार होता है। यह एक कार्यक्रम शुरू करने की प्रक्रिया में आवश्यक चरणों में से एक है, क्योंकि यह कार्यक्रम को स्मृति में रखता है और उन्हें निष्पादन के लिए तैयार करता है। किसी कार्यक्रम को लोड करने में [[कंप्यूटर प्रोग्राम|स्मृति- प्रतिचित्रण]] या स्मृति में कार्यक्रम निर्देशों वाली [[कंप्यूटर प्रोग्राम|निष्पादन योग्य]] संचिका की सामग्री की प्रतिलिपि बनाना शामिल है और फिर निष्पादन योग्य को चलाने के लिए तैयार करने के लिए अन्य आवश्यक प्रारंभिक संचालन करना शामिल है। एक बार लोड हो जाने पर, प्रचालन प्रणाली लोड किए गए कार्यक्रम  संकेतावली पर नियंत्रण पास करके कार्यक्रम प्रारम्भ शुरू करता है।
[[कम्प्यूटिंग|परिकलक प्रणाली]] में एक लोडर (भारक) एक [[ऑपरेटिंग सिस्टम|प्रचालन]] [[कम्प्यूटिंग|प्रणाली]] का एक हिस्सा होता है जो [[कंप्यूटर प्रोग्राम|कार्यक्रम]] और [[कम्प्यूटिंग|परिकलक]] संग्रह को लोड करने के लिए जिम्मेदार होता है। यह एक कार्यक्रम शुरू करने की प्रक्रिया में आवश्यक चरणों में से एक है, क्योंकि यह कार्यक्रम को स्मृति में रखता है और उन्हें निष्पादन के लिए तैयार करता है। किसी कार्यक्रम को लोड करने में [[कंप्यूटर प्रोग्राम|स्मृति- प्रतिचित्रण]] या स्मृति में कार्यक्रम निर्देशों वाली [[कंप्यूटर प्रोग्राम|निष्पादन योग्य]] संचिका की सामग्री की प्रतिलिपि बनाना शामिल है और फिर निष्पादन योग्य को चलाने के लिए तैयार करने के लिए अन्य आवश्यक प्रारंभिक संचालन करना शामिल है। एक बार लोड हो जाने पर, प्रचालन प्रणाली लोड किए गए कार्यक्रम  संकेतावली पर नियंत्रण पास करके कार्यक्रम प्रारम्भ शुरू करता है।


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


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


== जिम्मेदारियां ==
== जिम्मेदारियां ==
Line 15: Line 15:
# कार्यक्रम प्रवेश स्थान (<code>आरम्भ</code>) पर जाएं।
# कार्यक्रम प्रवेश स्थान (<code>आरम्भ</code>) पर जाएं।


[[Microsoft Windows|माइक्रोसॉफ्ट विंडोज़]] 7 और बाद में, लोडर ntdll.dll में <code>LdrInitializeThunk</code> निहित होता है, जो निम्न कार्य करता है:
[[Microsoft Windows|माइक्रोसॉफ्ट विंडोज़]] 7 और बाद में, भारक ntdll.dll में <code>LdrInitializeThunk</code> निहित होता है, जो निम्न कार्य करता है:


# डीएलएल (DLL) में ही संरचनाओं का प्रारंभ (यानी [[कंप्यूटर प्रोग्राम|महत्वपूर्ण]] [[कंप्यूटर प्रोग्राम|खंड]], अनुखंड सूची);
# डीएलएल (DLL) में ही संरचनाओं का प्रारंभ (यानी [[कंप्यूटर प्रोग्राम|महत्वपूर्ण]] [[कंप्यूटर प्रोग्राम|खंड]], अनुखंड सूची);
Line 27: Line 27:
# डीएलएलएस (DLLs) की शुरूआत;
# डीएलएलएस (DLLs) की शुरूआत;
# कचरा संग्रहण;
# कचरा संग्रहण;
# लोडर प्रकार्य को दिए गए संदर्भ मापदण्ड पर <code>NtContinue</code> को कॉल करना (यानी <code>RtlUserThreadStart</code> पर चले जाना, जो निष्पादन योग्य प्रारंभ करेगा)
# भारक कार्य को दिए गए संदर्भ मापदण्ड पर<code>NtContinue</code> को आह्वान करना (यानी <code>RtlUserThreadStart</code> पर चले जाना, जो निष्पादन योग्य प्रारंभ करेगा)


== लोडर स्थानांतरित करना ==
== भारक स्थानांतरित करना ==
कुछ प्रचालन प्रणाली को [[कंप्यूटर प्रोग्राम|लोडर को]] [[कंप्यूटर प्रोग्राम|स्थानांतरित]] करने की आवश्यकता होती है, जो लोडिंग शुरू होने वाले पते में भिन्नता की भरपाई के लिए निष्पादन योग्य में पतों (संकेतों) को समायोजित करता है। प्रचालन प्रणाली जिन्हें लोडर स्थानांतरित करने की आवश्यकता होती है, वे हैं जिनमें एक कार्यक्रम हमेशा पता स्थान में एक ही स्थान पर लोड नहीं होता है और जिसमें कार्यक्रम के [[आधार पता]] से अनुचित्रण के बजाय संकेतावली निरपेक्ष पता होते हैं। कुछ जाने-माने उदाहरण IBM के [[कंप्यूटर प्रोग्राम|OS/360]] उनके [[कंप्यूटर प्रोग्राम|प्रणाली/360]] अधिसंसाधित्र के लिए हैं, और इसके वंशज, जिनमें [[कंप्यूटर प्रोग्राम|z/वास्तुकला]] अधिसंसाधित्र के लिए [[कंप्यूटर प्रोग्राम|z/OS]] सम्मिलित है।
कुछ प्रचालन प्रणाली को [[कंप्यूटर प्रोग्राम|भारक को]] [[कंप्यूटर प्रोग्राम|स्थानांतरित]] करने की आवश्यकता होती है, जो लोडिंग शुरू होने वाले पते में भिन्नता की भरपाई के लिए निष्पादन योग्य में पतों (संकेतों) को समायोजित करता है। प्रचालन प्रणाली जिन्हें भारक स्थानांतरित करने की आवश्यकता वाले प्रचालन प्रणाली, वे हैं जिनमें एक कार्यक्रम हमेशा एक ही पता स्थान पर लोड नहीं होता है और जिसमें कार्यक्रम [[Index.php?title=आधार पता|आधार पता]] से अनुचित्रित होने के बजाय संकेत पूर्ण पते होते हैं। कुछ जाने-माने उदाहरण IBM के [[कंप्यूटर प्रोग्राम|OS/360]] उनके [[कंप्यूटर प्रोग्राम|प्रणाली/360]] अधिसंसाधित्र के लिए हैं, और इसके वंशज, जिनमें [[कंप्यूटर प्रोग्राम|z/वास्तुकला]] अधिसंसाधित्र के लिए [[कंप्यूटर प्रोग्राम|z/OS]] सम्मिलित है।


===ओएस/360 और व्युत्पन्न (शब्द) ===
===ओएस/360 और व्युत्पन्न (शब्द) ===
OS/360 और वंशज प्रणालियों में, (विशेषाधिकार प्राप्त) प्रचालन प्रणाली सुविधा को IEWFETCH कहा जाता है,<ref>{{cite book|last=IBM Corporation|title=IBM OS MVT Supervisor|year=1972|url=http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/360/os/R21.0_Mar72/plm/GY28-6659-6_MVT_Supervisor_PLM_Release_21_Mar72.pdf}}</ref> और OS पर्यवेक्षक का एक आंतरिक घटक है, जबकि (गैर-विशेषाधिकार प्राप्त) लोडर का उपयोग एक ही तरह के कई कार्य कर सकता है, साथ ही संयोजन सम्पादक के भी, और OS पर्यवेक्षक के लिए पूरी तरह से बाहरी है (हालांकि यह निश्चित रूप से कई पर्यवेक्षक सेवाओं का उपयोग करता है)।
OS/360 और वंशज प्रणालियों में, (विशेषाधिकार प्राप्त) प्रचालन प्रणाली सुविधा को IEWFETCH कहा जाता है,<ref>{{cite book|last=IBM Corporation|title=IBM OS MVT Supervisor|year=1972|url=http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/360/os/R21.0_Mar72/plm/GY28-6659-6_MVT_Supervisor_PLM_Release_21_Mar72.pdf}}</ref> और OS पर्यवेक्षक का एक आंतरिक घटक है, जबकि (गैर-विशेषाधिकार प्राप्त) भारक का उपयोग एक ही तरह के कई कार्य कर सकता है, साथ ही संयोजन सम्पादक के भी, और OS पर्यवेक्षक के लिए पूरी तरह से बाहरी है (हालांकि यह निश्चित रूप से कई पर्यवेक्षक सेवाओं का उपयोग करता है)।


IEWFETCH एक अत्यधिक विशिष्ट [[कंप्यूटर प्रोग्राम|चैनल]] [[कंप्यूटर प्रोग्राम|कार्यक्रम]] का उपयोग करता है, और सैद्धांतिक रूप से DASD संचार माध्यम की एक क्रांति (लगभग 16.6 ms अधिकतम, 8.3 ms औसत, "पैतृक संपत्ति" 3,600 rpm ड्राइव पर) के भीतर एक संपूर्ण निष्पादन योग्य को लोड करना और स्थानांतरित करना संभव है। लोड मापांक के लिए जो आकार में एक तरीके से अधिक है, संचार माध्यम की क्रांति खोए बिना पूरे मापांक को लोड करना और स्थानांतरित करना भी संभव है।
IEWFETCH एक अत्यधिक विशिष्ट [[कंप्यूटर प्रोग्राम|चैनल]] [[कंप्यूटर प्रोग्राम|कार्यक्रम]] का उपयोग करता है, और सैद्धांतिक रूप से DASD संचार माध्यम की एक क्रांति (लगभग 16.6 ms अधिकतम, 8.3 ms औसत, "पैतृक संपत्ति" 3,600 rpm ड्राइव पर) के भीतर एक संपूर्ण निष्पादन योग्य को लोड करना और स्थानांतरित करना संभव है। लोड मापांक के लिए जो आकार में एक तरीके से अधिक है, संचार माध्यम की क्रांति खोए बिना पूरे मापांक को लोड करना और स्थानांतरित करना भी संभव है।


IEWFETCH में तथाकथित अधिचित्रित संरचनाओं के लिए सुविधाए भी सम्मिलित हैं, और जो न्यूनतम स्मृति मापांक में संभावित रूप से बहुत बड़े निष्पादन योग्य चलाने की सुविधा प्रदान करती हैं (OS के कुछ संस्करणों पर 44 KB जितना छोटा, लेकिन 88 KB और 128 KB अधिक सामान्य हैं)।
IEWFETCH में तथाकथित अधिचित्रित संरचनाओं के लिए सुविधाआएं भी सम्मिलित हैं, और जो न्यूनतम स्मृति अनुखंड में संभावित रूप से बहुत बड़े निष्पादन योग्य चलाने की सुविधा प्रदान करती हैं (OS के कुछ संस्करणों पर 44 KB जितना छोटा, लेकिन 88 KB और 128 KB अधिक सामान्य हैं)।


OS का [[कर्नेल (ऑपरेटिंग सिस्टम)|केन्द्रक]] (पर्यवेक्षक का हमेशा निवासी हिस्सा) स्वयं इस तरह से स्वरूपित होता है जो IEWFETCH के एक उतार-चढ़ाव वाले संस्करण के साथ संगत होता है। सामान्य निष्पादकों के विपरीत, OS का केन्द्रक "तितर बितर भारित" है: केन्द्रक के कुछ हिस्सों को स्मृति के विभिन्न भागों में लोड किया जाता है; विशेष रूप से, कुछ प्रणाली तालिकाओं को प्रारंभिक 64 KB के अंतर्गत होना चाहिए, जबकि अन्य तालिकाएँ और संकेतावली कहीं और स्थित हो सकते हैं।
OS का [[कर्नेल (ऑपरेटिंग सिस्टम)|केन्द्रक]] (पर्यवेक्षक का हमेशा निवासी हिस्सा) स्वयं इस तरह से स्वरूपित होता है जो IEWFETCH के एक अनावृत संस्करण के साथ संगत होता है। सामान्य निष्पादकों के विपरीत, OS का केन्द्रक "प्रकीर्ण भारित" है: केन्द्रक के कुछ हिस्सों को स्मृति के विभिन्न भागों में लोड किया जाता है; विशेष रूप से, कुछ प्रणाली तालिकाओं को प्रारंभिक 64 KB के अंतर्गत होना चाहिए, जबकि अन्य तालिकाएँ और संकेतावली कहीं और स्थित हो सकते हैं।


प्रणाली के [[कंप्यूटर प्रोग्राम|संयोजन संपादक]] उपयोग का नाम IEWL है।<ref>{{cite book|last=IBM Corporation|title=IBM OS Linkage Editor and Loader|year=1972|url=http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/360/os/R21.0_Mar72/GC28-6538-9_OS_Linkage_Editor_and_Loader_Release_21_Jan72.pdf}}</ref> IEWL का मुख्य कार्य लोड मापांक (निष्पादन योग्य कार्यक्रम) और उद्देश्य मापांक (जैसे, कोडांतरक और संकलक से निर्गत) को "स्वतः आह्वान" के साथ पुस्तकालयों (उच्च-स्तरीय भाषा "अंतर्निहित कार्य") में संबद्ध करना है, जिसे IEWFETCH द्वारा सबसे कुशलतापूर्वक लोड किया जा सकता है। बड़ी संख्या में संपादन विकल्प हैं, लेकिन इनमें से कुछ ही आमतौर पर पारंपरिक अनुप्रयोग के लिए नियोजित होते हैं।
प्रणाली के [[कंप्यूटर प्रोग्राम|संयोजन संपादक]] उपयोग का नाम IEWL है।<ref>{{cite book|last=IBM Corporation|title=IBM OS Linkage Editor and Loader|year=1972|url=http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/360/os/R21.0_Mar72/GC28-6538-9_OS_Linkage_Editor_and_Loader_Release_21_Jan72.pdf}}</ref> IEWL का मुख्य कार्य लोड मापांक (निष्पादन योग्य कार्यक्रम) और उद्देश्य मापांक (जैसे, कोडांतरक और संकलक से निर्गत) को "स्वतः आह्वान" के साथ पुस्तकालयों (उच्च-स्तरीय भाषा "अंतर्निहित कार्य") में संबद्ध करना है, जिसे IEWFETCH द्वारा सबसे कुशलतापूर्वक लोड किया जा सकता है। बड़ी संख्या में संपादन विकल्प हैं, लेकिन एक पारंपरिक अनुप्रयोग के लिए इनमें से कुछ ही आमतौर पर नियोजित होते हैं।


लोड मापांक प्रारूप में एक प्रारंभिक "पाठ अभिलेख" होता है, जिसके तुरंत बाद उस पाठ अभिलेख के लिए "स्थानांतरण और/या नियंत्रण अभिलेख" होता है, जिसके बाद पाठ अभिलेख और स्थानांतरण और/या नियंत्रण अभिलेख के जोड़े अंत तक होते हैं।
लोड मापांक प्रारूप में प्रारंभिक "पाठ अभिलेख" शामिल होता है, जिसके तुरंत बाद उस पाठ अभिलेख के लिए "स्थानांतरण और/या नियंत्रण अभिलेख" होता है, इसके बाद पाठ रिकॉर्ड और स्थानांतरण और/या नियंत्रण रिकॉर्ड जोड़े के अंत तक, मापांक के अंत तक होता है।


पाठ अभिलेख सामान्यतः बहुत बड़े होते हैं; स्थानांतरण और/या नियंत्रण अभिलेख छोटे हैं क्योंकि IEWFETCH के तीन स्थानांतरण और/या नियंत्रण अभिलेख प्रतिरोधक 260 बाइट्स पर तय किए गए हैं (छोटे स्थानांतरण और/या नियंत्रण अभिलेख निश्चित रूप से संभव हैं, लेकिन 260 बाइट्स से अधिकतम संभव हैं, और IEWL यह सुनिश्चित करता है कि यह अगले पाठ अभिलेख से पहले आवश्यकतानुसार अतिरिक्त स्थानांतरण अभिलेख सम्मिलित करके सीमा का अनुपालन किया जाता है; इस विशेष मामले में, अभिलेख का क्रम हो सकता है: ..., पाठ अभिलेख, स्थानांतरण रिकॉर्ड, ...,  नियंत्रण अभिलेख, पाठ अभिलेख, ...)।
पाठ अभिलेख सामान्यतः बहुत बड़े होते हैं; स्थानांतरण और/या नियंत्रण अभिलेख छोटे हैं क्योंकि IEWFETCH के तीन स्थानांतरण और/या नियंत्रण अभिलेख प्रतिरोधक 260 बाइट्स पर तय किए गए हैं (छोटे स्थानांतरण और/या नियंत्रण अभिलेख निश्चित रूप से संभव हैं, लेकिन 260 बाइट्स तक अधिकतम संभव हैं, और IEWL यह सुनिश्चित करता है कि यह अगले पाठ अभिलेख से पहले आवश्यकतानुसार अतिरिक्त स्थानांतरण अभिलेख सम्मिलित करके सीमा का अनुपालन किया जाता है; इस विशेष मामले में, अभिलेख का क्रम हो सकता है: पाठ अभिलेख, स्थानांतरण रिकॉर्ड, नियंत्रण अभिलेख, पाठ अभिलेख)।


स्थानांतरण और/या नियंत्रण अभिलेख प्रतिरोधक के भीतर एक विशेष बाइट "अक्षम अंश घुमाव" संचार क्षेत्र के रूप में उपयोग किया जाता है, और इसे एक अद्वितीय मान के लिए प्रारंभ किया जाता है। उस स्थानांतरण और/या नियंत्रण अभिलेख के लिए पठित सीसीडब्ल्यू में कार्यक्रम-नियंत्रित अवरोध अंश तय किया जाता है। संसाधक को सूचित किया जाता है जब उस सीसीडब्ल्यू को एक विशेष [[कंप्यूटर प्रोग्राम|आईओएस]] निकास के माध्यम से चैनल द्वारा अभिगम किया जाता है। इस बिंदु पर संसाधक "अक्षम अंश घुमाव" परिपथ (कभी-कभी "दुनिया में सबसे छोटा परिपथ" कहा जाता है) में प्रवेश करता है। एक बार जब वह बाइट अपने प्रारंभिक मूल्य से बदल जाता है, तो सीपीयू अंश घुमाव से बाहर निकल जाता है, और स्थानांतरण और/या नियंत्रण अभिलेख और अगले पाठ अभिलेख के बीच संचार माध्यम "अंतर" के दौरान स्थानांतरण होता है। यदि स्थानांतरण अगले अभिलेख से पहले समाप्त हो जाता है, तो पढ़नें के बाद NOP CCW को TIC में बदल दिया जाएगा, और अगले प्रतिरोधक का उपयोग करके लोडिंग और स्थानांतरण आगे बढ़ेगा; यदि नहीं, तो चैनल NOP CCW पर रुकेगा, जब तक कि IEWFETCH द्वारा इसे अन्य विशेष IOS निकास के माध्यम से पुनः आरंभ नहीं किया जाता है। तीन प्रतिरोधक एक सतत परिपत्र कतार में हैं, प्रत्येक अगले की ओर इशारा करता है, और पिछले एक की ओर इशारा करता है, और तीन प्रतिरोधक को पुनः उपयोग किया जाता है क्योंकि वे लगातार लोड और स्थानांतरित होते हैं।
स्थानांतरण और/या नियंत्रण अभिलेख प्रतिरोधक के भीतर एक विशेष बाइट "अक्षम अंश घुमाव" संचार क्षेत्र के रूप में उपयोग किया जाता है, और इसे एक अद्वितीय मान के लिए प्रारंभ किया जाता है। उस स्थानांतरण और/या नियंत्रण अभिलेख के लिए पठित सीसीडब्ल्यू (CCW) में कार्यक्रम-नियंत्रित अवरोध अंश तय किया जाता है। संसाधक को सूचित किया जाता है जब उस सीसीडब्ल्यू को एक विशेष [[कंप्यूटर प्रोग्राम|आईओएस]] निकास के माध्यम से चैनल द्वारा अभिगम किया जाता है। इस बिंदु पर संसाधक "अक्षम अंश घुमाव" परिपथ (कभी-कभी "दुनिया में सबसे छोटा परिपथ" कहा जाता है) में प्रवेश करता है। एक बार जब वह बाइट अपने प्रारंभिक मूल्य से बदल जाता है, तो सीपीयू अंश घुमाव से बाहर निकल जाता है, और स्थानांतरण होता है और स्थानांतरण और/या नियंत्रण अभिलेख और अगले पाठ अभिलेख के बीच संचार माध्यम "अंतर" के दौरान स्थानांतरण होता है। यदि स्थानांतरण अगले अभिलेख से पहले समाप्त हो जाता है, तो पढ़नें के बाद NOP CCW को TIC में बदल दिया जाएगा, और अगले प्रतिरोधक का उपयोग करके लोडिंग और स्थानांतरण आगे बढ़ेगा; यदि नहीं, तो चैनल NOP CCW पर रुकेगा, जब तक कि IEWFETCH द्वारा इसे अन्य विशेष IOS निकास के माध्यम से पुनः आरंभ नहीं किया जाता है। तीन प्रतिरोधक एक सतत परिपत्र कतार में हैं, प्रत्येक अगले की ओर इशारा करता है, और पिछले एक की ओर इशारा करता है, और तीन प्रतिरोधक को पुनः उपयोग किया जाता है क्योंकि वे लगातार लोड और स्थानांतरित होते हैं।


IEWFETCH, इस प्रकार, किसी भी व्यावहारिक आकार के लोड मापांक को कम से कम समय में लोड और स्थानांतरित कर सकता है।
IEWFETCH, इस प्रकार, किसी भी व्यावहारिक आकार के लोड मापांक को कम से कम समय में लोड और स्थानांतरित कर सकता है।


== गतिशील संयोजक ==
== गतिशील संयोजक ==
[[गतिशील लिंकर|गतिशील]] [[गतिशील लिंकर|संयोजक लोडर]] एक अन्य प्रकार का लोडर है जो पहले से लोड चल रहे कार्यक्रमों के लिए साझा पुस्तकालय (जैसे .so दस्तावेजों .dll दस्तावेजों या .dylib दस्तावेजों) को लोड और संयोजित करता है।
[[गतिशील लिंकर|गतिशील]] [[गतिशील लिंकर|संयोजक]] भारक एक अन्य प्रकार का भारक है जो पहले से लोड चल रहे कार्यक्रमों के लिए साझा पुस्तकालय (जैसे .so दस्तावेजों .dll दस्तावेजों या .dylib दस्तावेजों) को लोड और संयोजित करता है।
 
जहां इस तरह के साझा पुस्तकालयों को कई प्रक्रियाओं द्वारा साझा किया जा सकता है, साझा कूट की केवल एक प्रति संभवतः प्रत्येक प्रक्रिया के पता स्थान में एक अलग (आभासी) पते पर दिखाई दे रही है, साझा पुस्तकालय में कूट को स्थानांतरित करने योग्य होना आवश्यक है, अर्थात पुस्तकालय संपूर्ण में केवल स्व-संबंधी या कूटखंड आधार-सापेक्ष आंतरिक पतों का उपयोग करना चाहिए। कुछ प्रक्रमक के पास निर्देश होते हैं जो इसे सुविधाजनक बनाने के लिए स्व-सापेक्ष कूट-संदर्भों का उपयोग कर सकते हैं।


== यह भी देखें ==
== यह भी देखें ==
.[[कंपाइल|कंपाइल एंड गो सिस्टम]]
.[[कंपाइल|संकलन और जाओ प्रणाली]]


.[[डीएलएल]] [[हेल]]
.[[डीएलएल]] [[हेल]]
Line 63: Line 65:
.[[गतिशील]] [[बन्धन|बन्धन (संगणन)]]
.[[गतिशील]] [[बन्धन|बन्धन (संगणन)]]


.[[मृत|गतिशील मृत कोड उन्मूलन]]
.[[मृत|गतिशील मृत कूट उन्मूलन]]


.[[गतिशील]] [[प्रेषण]]
.[[गतिशील]] [[प्रेषण]]
Line 75: Line 77:
.[[Tdfu|गतिशील-लिंक पुस्तकालय]]
.[[Tdfu|गतिशील-लिंक पुस्तकालय]]


.[[पुस्तकालय|जीएनयू लिंकर]]
.[[पुस्तकालय|जीएनयू संयोजक]]


.[[Hfhh|पुस्तकालय (संगणन)]]
.[[Hfhh|पुस्तकालय (संगणन)]]


.[[Jhvh|लिंकर (संगणन)]]
.[[Jhvh|संयोजक (संगणन)]]


.[[Hgfh|नाम की सजावट]]
.[[Hgfh|नाम की सजावट]]
Line 85: Line 87:
.[[Hghj|पूर्वबाध्यकारी]]
.[[Hghj|पूर्वबाध्यकारी]]


.[[Gfhjj|प्रीलिंकिंग]]
.[[Gfhjj|प्रारंभिक]]


.[[Hghj|स्थानांतरण (परिकलक विज्ञान)]]
.[[Hghj|स्थानांतरण (परिकलक विज्ञान)]]
Line 95: Line 97:
.[[Jggj|स्थैतिक पुस्तकालय]]
.[[Jggj|स्थैतिक पुस्तकालय]]


.[[Hghj|सोना (लिंकर)]]
.[[Hghj|सोना (]][[Jhvh|संयोजक]])


.[[Ggjj|प्रीलिंक]]
.[[Ggjj|प्रारंभिक]]


.[[Hhhj|बग अनुकूलता]]
.[[Hhhj|बग अनुकूलता]]

Revision as of 23:50, 12 April 2023

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

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

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

जिम्मेदारियां

यूनिक्स में, भारक प्रणाली कॉल निष्पादन()के लिये प्रबंधकर्ता है।[1] यूनिक्स भारक के कार्यों में शामिल हैं:

  1. सत्यापन (अनुमतियां, स्मृति आवश्यकताएं आदि);
  2. स्मृति-प्रतिचित्रण निष्पादन योग्य वस्तु डिस्क से मुख्य स्मृति तक;
  3. आभासी स्मृति में आदेश पंक्ति तर्कों की प्रतिलिपि बनाना;
  4. आरंभ पंजिका (जैसे, क्रमबद्ध ढेर सूचक);
  5. कार्यक्रम प्रवेश स्थान (आरम्भ) पर जाएं।

माइक्रोसॉफ्ट विंडोज़ 7 और बाद में, भारक ntdll.dll में LdrInitializeThunk निहित होता है, जो निम्न कार्य करता है:

  1. डीएलएल (DLL) में ही संरचनाओं का प्रारंभ (यानी महत्वपूर्ण खंड, अनुखंड सूची);
  2. लोड करने के लिए निष्पादन योग्य का सत्यापन;
  3. एक ढेर बनाना (प्रकार्य RtlCreateHeapके माध्यम से);
  4. पर्यावरण परिवर्तनीय विभाग और कार्यप्रणाली विभाग का आवंटन;
  5. निष्पादन योग्य और ntdll को अनुखंड सूची में जोड़ना (एक दोगुनी-श्रृंखलित सूची);
  6. कई महत्वपूर्ण कार्यों को प्राप्त करने के लिए KERNEL32.DLL लोड करना, उदाहरण के लिए BaseThreadInitThunk;
  7. निष्पादन योग्य के आयात को पुनः लोड करना (यानी गतिशील-श्रृंखलित पुस्तकालयों) पुनरावर्ती (आयात के आयात, उनके आयात आदि की जांच करें);
  8. डिबग प्रणाली में, प्रणाली विराम बिंदु बढाएँ;
  9. डीएलएलएस (DLLs) की शुरूआत;
  10. कचरा संग्रहण;
  11. भारक कार्य को दिए गए संदर्भ मापदण्ड परNtContinue को आह्वान करना (यानी RtlUserThreadStart पर चले जाना, जो निष्पादन योग्य प्रारंभ करेगा)

भारक स्थानांतरित करना

कुछ प्रचालन प्रणाली को भारक को स्थानांतरित करने की आवश्यकता होती है, जो लोडिंग शुरू होने वाले पते में भिन्नता की भरपाई के लिए निष्पादन योग्य में पतों (संकेतों) को समायोजित करता है। प्रचालन प्रणाली जिन्हें भारक स्थानांतरित करने की आवश्यकता वाले प्रचालन प्रणाली, वे हैं जिनमें एक कार्यक्रम हमेशा एक ही पता स्थान पर लोड नहीं होता है और जिसमें कार्यक्रम आधार पता से अनुचित्रित होने के बजाय संकेत पूर्ण पते होते हैं। कुछ जाने-माने उदाहरण IBM के OS/360 उनके प्रणाली/360 अधिसंसाधित्र के लिए हैं, और इसके वंशज, जिनमें z/वास्तुकला अधिसंसाधित्र के लिए z/OS सम्मिलित है।

ओएस/360 और व्युत्पन्न (शब्द)

OS/360 और वंशज प्रणालियों में, (विशेषाधिकार प्राप्त) प्रचालन प्रणाली सुविधा को IEWFETCH कहा जाता है,[2] और OS पर्यवेक्षक का एक आंतरिक घटक है, जबकि (गैर-विशेषाधिकार प्राप्त) भारक का उपयोग एक ही तरह के कई कार्य कर सकता है, साथ ही संयोजन सम्पादक के भी, और OS पर्यवेक्षक के लिए पूरी तरह से बाहरी है (हालांकि यह निश्चित रूप से कई पर्यवेक्षक सेवाओं का उपयोग करता है)।

IEWFETCH एक अत्यधिक विशिष्ट चैनल कार्यक्रम का उपयोग करता है, और सैद्धांतिक रूप से DASD संचार माध्यम की एक क्रांति (लगभग 16.6 ms अधिकतम, 8.3 ms औसत, "पैतृक संपत्ति" 3,600 rpm ड्राइव पर) के भीतर एक संपूर्ण निष्पादन योग्य को लोड करना और स्थानांतरित करना संभव है। लोड मापांक के लिए जो आकार में एक तरीके से अधिक है, संचार माध्यम की क्रांति खोए बिना पूरे मापांक को लोड करना और स्थानांतरित करना भी संभव है।

IEWFETCH में तथाकथित अधिचित्रित संरचनाओं के लिए सुविधाआएं भी सम्मिलित हैं, और जो न्यूनतम स्मृति अनुखंड में संभावित रूप से बहुत बड़े निष्पादन योग्य चलाने की सुविधा प्रदान करती हैं (OS के कुछ संस्करणों पर 44 KB जितना छोटा, लेकिन 88 KB और 128 KB अधिक सामान्य हैं)।

OS का केन्द्रक (पर्यवेक्षक का हमेशा निवासी हिस्सा) स्वयं इस तरह से स्वरूपित होता है जो IEWFETCH के एक अनावृत संस्करण के साथ संगत होता है। सामान्य निष्पादकों के विपरीत, OS का केन्द्रक "प्रकीर्ण भारित" है: केन्द्रक के कुछ हिस्सों को स्मृति के विभिन्न भागों में लोड किया जाता है; विशेष रूप से, कुछ प्रणाली तालिकाओं को प्रारंभिक 64 KB के अंतर्गत होना चाहिए, जबकि अन्य तालिकाएँ और संकेतावली कहीं और स्थित हो सकते हैं।

प्रणाली के संयोजन संपादक उपयोग का नाम IEWL है।[3] IEWL का मुख्य कार्य लोड मापांक (निष्पादन योग्य कार्यक्रम) और उद्देश्य मापांक (जैसे, कोडांतरक और संकलक से निर्गत) को "स्वतः आह्वान" के साथ पुस्तकालयों (उच्च-स्तरीय भाषा "अंतर्निहित कार्य") में संबद्ध करना है, जिसे IEWFETCH द्वारा सबसे कुशलतापूर्वक लोड किया जा सकता है। बड़ी संख्या में संपादन विकल्प हैं, लेकिन एक पारंपरिक अनुप्रयोग के लिए इनमें से कुछ ही आमतौर पर नियोजित होते हैं।

लोड मापांक प्रारूप में प्रारंभिक "पाठ अभिलेख" शामिल होता है, जिसके तुरंत बाद उस पाठ अभिलेख के लिए "स्थानांतरण और/या नियंत्रण अभिलेख" होता है, इसके बाद पाठ रिकॉर्ड और स्थानांतरण और/या नियंत्रण रिकॉर्ड जोड़े के अंत तक, मापांक के अंत तक होता है।

पाठ अभिलेख सामान्यतः बहुत बड़े होते हैं; स्थानांतरण और/या नियंत्रण अभिलेख छोटे हैं क्योंकि IEWFETCH के तीन स्थानांतरण और/या नियंत्रण अभिलेख प्रतिरोधक 260 बाइट्स पर तय किए गए हैं (छोटे स्थानांतरण और/या नियंत्रण अभिलेख निश्चित रूप से संभव हैं, लेकिन 260 बाइट्स तक अधिकतम संभव हैं, और IEWL यह सुनिश्चित करता है कि यह अगले पाठ अभिलेख से पहले आवश्यकतानुसार अतिरिक्त स्थानांतरण अभिलेख सम्मिलित करके सीमा का अनुपालन किया जाता है; इस विशेष मामले में, अभिलेख का क्रम हो सकता है: पाठ अभिलेख, स्थानांतरण रिकॉर्ड, नियंत्रण अभिलेख, पाठ अभिलेख)।

स्थानांतरण और/या नियंत्रण अभिलेख प्रतिरोधक के भीतर एक विशेष बाइट "अक्षम अंश घुमाव" संचार क्षेत्र के रूप में उपयोग किया जाता है, और इसे एक अद्वितीय मान के लिए प्रारंभ किया जाता है। उस स्थानांतरण और/या नियंत्रण अभिलेख के लिए पठित सीसीडब्ल्यू (CCW) में कार्यक्रम-नियंत्रित अवरोध अंश तय किया जाता है। संसाधक को सूचित किया जाता है जब उस सीसीडब्ल्यू को एक विशेष आईओएस निकास के माध्यम से चैनल द्वारा अभिगम किया जाता है। इस बिंदु पर संसाधक "अक्षम अंश घुमाव" परिपथ (कभी-कभी "दुनिया में सबसे छोटा परिपथ" कहा जाता है) में प्रवेश करता है। एक बार जब वह बाइट अपने प्रारंभिक मूल्य से बदल जाता है, तो सीपीयू अंश घुमाव से बाहर निकल जाता है, और स्थानांतरण होता है और स्थानांतरण और/या नियंत्रण अभिलेख और अगले पाठ अभिलेख के बीच संचार माध्यम "अंतर" के दौरान स्थानांतरण होता है। यदि स्थानांतरण अगले अभिलेख से पहले समाप्त हो जाता है, तो पढ़नें के बाद NOP CCW को TIC में बदल दिया जाएगा, और अगले प्रतिरोधक का उपयोग करके लोडिंग और स्थानांतरण आगे बढ़ेगा; यदि नहीं, तो चैनल NOP CCW पर रुकेगा, जब तक कि IEWFETCH द्वारा इसे अन्य विशेष IOS निकास के माध्यम से पुनः आरंभ नहीं किया जाता है। तीन प्रतिरोधक एक सतत परिपत्र कतार में हैं, प्रत्येक अगले की ओर इशारा करता है, और पिछले एक की ओर इशारा करता है, और तीन प्रतिरोधक को पुनः उपयोग किया जाता है क्योंकि वे लगातार लोड और स्थानांतरित होते हैं।

IEWFETCH, इस प्रकार, किसी भी व्यावहारिक आकार के लोड मापांक को कम से कम समय में लोड और स्थानांतरित कर सकता है।

गतिशील संयोजक

गतिशील संयोजक भारक एक अन्य प्रकार का भारक है जो पहले से लोड चल रहे कार्यक्रमों के लिए साझा पुस्तकालय (जैसे .so दस्तावेजों .dll दस्तावेजों या .dylib दस्तावेजों) को लोड और संयोजित करता है।

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

यह भी देखें

.संकलन और जाओ प्रणाली

.डीएलएल हेल

.प्रत्यक्ष बन्धन

.गतिशील बन्धन (संगणन)

.गतिशील मृत कूट उन्मूलन

.गतिशील प्रेषण

.गतिशील पुस्तकालय

.गतिशील लिंकर

.गतिशील लोडिंग

.गतिशील-लिंक पुस्तकालय

.जीएनयू संयोजक

.पुस्तकालय (संगणन)

.संयोजक (संगणन)

.नाम की सजावट

.पूर्वबाध्यकारी

.प्रारंभिक

.स्थानांतरण (परिकलक विज्ञान)

.स्थानांतरण तालिका

.शेबांग (यूनिक्स)

.स्थैतिक पुस्तकालय

.सोना (संयोजक)

.प्रारंभिक

.बग अनुकूलता


संदर्भ

  1. "exec". The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition. The Open Group. Retrieved 2008-06-23.
  2. IBM Corporation (1972). IBM OS MVT Supervisor (PDF).
  3. IBM Corporation (1972). IBM OS Linkage Editor and Loader (PDF).