लोडर (कंप्यूटिंग)

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

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

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

जिम्मेदारियां
यूनिक्स में, लोडर प्रणाली कॉल के लिये प्रबंधकर्ता है। यूनिक्स लोडर के कार्यों में शामिल हैं:


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

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


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

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

ओएस/360 और व्युत्पन्न (शब्द)
OS/360 और वंशज प्रणालियों में, (विशेषाधिकार प्राप्त) प्रचालन प्रणाली सुविधा को IEWFETCH कहा जाता है, और 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 है। IEWL का मुख्य कार्य लोड मापांक (निष्पादन योग्य प्रोग्राम) और उद्देश्य मापांक (जैसे, कोडांतरक और संकलक से निर्गत) को "स्वतः आह्वान" के साथ पुस्तकालयों (उच्च-स्तरीय भाषा "अंतर्निहित कार्य") में संबद्ध करना है, जिसे IEWFETCH द्वारा सबसे कुशलतापूर्वक लोड किया जा सकता है। बड़ी संख्या में संपादन विकल्प हैं, लेकिन एक पारंपरिक अनुप्रयोग के लिए इनमें से कुछ ही आमतौर पर नियोजित होते हैं।

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

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

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

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

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

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

यह भी देखें
.संकलन और जाओ प्रणाली

.डीएलएल हेल

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

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

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

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

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

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

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

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

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

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

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

.नाम की सजावट

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

.प्रारंभिक

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

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

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

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

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

.प्रारंभिक

.बग अनुकूलता