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