Address binding in Operating System In Hindi




Address binding in Operating System In Hindi

एड्रेस बाइंडिंग कंप्यूटर निर्देशों और डेटा को भौतिक मेमोरी स्थानों पर मैप करने के लिए संदर्भित करता है. कंप्यूटर मेमोरी में लॉजिकल और फिजिकल दोनों एड्रेस का उपयोग किया जाता है. यह एक भौतिक पते को एक तार्किक पते पर मैप करके एक तार्किक सूचक को एक भौतिक स्मृति क्षेत्र प्रदान करता है जिसे एक आभासी पते के रूप में जाना जाता है. यह कंप्यूटर मेमोरी प्रबंधन का एक घटक भी है जो OS उन अनुप्रयोगों की ओर से करता है जिन्हें मेमोरी एक्सेस की आवश्यकता होती है.

ऑपरेटिंग सिस्टम में एड्रेस बाइंडिंग क्या है?

कंप्यूटर मेमोरी तार्किक पते और भौतिक पते दोनों का उपयोग करती है. एड्रेस बाइंडिंग एक भौतिक पते को एक तार्किक पते से जोड़कर एक तार्किक सूचक को एक भौतिक स्मृति स्थान आवंटित करता है, जिसे एक आभासी पते के रूप में भी जाना जाता है. एड्रेस बाइंडिंग कंप्यूटर मेमोरी प्रबंधन का हिस्सा है और यह ऑपरेटिंग सिस्टम द्वारा उन अनुप्रयोगों की ओर से किया जाता है जिन्हें मेमोरी तक पहुंच की आवश्यकता होती है.

ऑपरेटिंग सिस्टम में एड्रेस बाइंडिंग के प्रकार -

OS में मुख्य रूप से तीन तरह के एड्रेस बाइंडिंग होते हैं. ये इस प्रकार हैं:-

संकलन समय पता बाध्यकारी

लोड टाइम एड्रेस बाइंडिंग

निष्पादन समय या गतिशील पता बाध्यकारी

संकलन समय पता बाध्यकारी ?

यह एड्रेस बाइंडिंग का पहला प्रकार है. यह तब होता है जब कंपाइलर एड्रेस बाइंडिंग करने के लिए जिम्मेदार होता है, और कंपाइलर एड्रेस बाइंडिंग करने के लिए ऑपरेटिंग सिस्टम के साथ इंटरैक्ट करता है. दूसरे शब्दों में, जब कोई प्रोग्राम निष्पादित किया जाता है, तो यह कंप्यूटर के सिस्टम कोड को मेमोरी आवंटित करता है. एड्रेस बाइंडिंग ऑब्जेक्ट कोड को स्टोर करने के लिए मेमोरी सेगमेंट की शुरुआत में एक तार्किक पता प्रदान करता है. मेमोरी आवंटन एक लंबी अवधि की प्रक्रिया है और केवल प्रोग्राम को पुन: संकलित करके संशोधित किया जा सकता है.

लोड टाइम एड्रेस बाइंडिंग ?

यह एक अन्य प्रकार का एड्रेस बाइंडिंग है. यह प्रोग्राम को मेमोरी में लोड करने के बाद किया जाता है, और यह ऑपरेटिंग सिस्टम मेमोरी मैनेजर, यानी लोडर द्वारा किया जाएगा. यदि प्रोग्राम को असाइन करते समय मेमोरी आवंटन निर्दिष्ट किया जाता है, तो इसकी संकलित स्थिति में कोई भी प्रोग्राम कभी भी एक कंप्यूटर से दूसरे कंप्यूटर में स्थानांतरित नहीं किया जा सकता है. निष्पादन योग्य कोड में स्मृति आवंटन पहले से ही नए सिस्टम पर किसी अन्य प्रोग्राम द्वारा उपयोग में हो सकता है. इस मामले में, प्रोग्राम के तार्किक पते तब तक भौतिक पते से जुड़े नहीं होते हैं जब तक कि इसे लागू नहीं किया जाता है और स्मृति में लोड नहीं किया जाता है.

निष्पादन समय या गतिशील पता बाध्यकारी

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

Memory Management

एड्रेस बाइंडिंग इस बात से संबंधित है कि किसी प्रोग्राम का कोड मेमोरी में कैसे स्टोर किया जाता है. प्रोग्राम मानव-पठनीय पाठ में लिखे जाते हैं, प्रोग्रामिंग भाषा की संरचनात्मक आवश्यकताओं द्वारा स्थापित नियमों की एक श्रृंखला का पालन करते हुए, और ऐसे कीवर्ड का उपयोग करते हैं जिनकी कंप्यूटर की सेंट्रल प्रोसेसिंग यूनिट द्वारा क्रियाओं में व्याख्या की जाती है. जिस बिंदु पर प्रोग्राम का निष्पादन योग्य संस्करण बनाया जाता है, वह पता बाध्यकारी होने पर तय करता है. कुछ प्रोग्राम भाषाओं, जैसे "C" और COBOL को संकलित करने की आवश्यकता होती है, जबकि अन्य, मुख्य रूप से स्क्रिप्ट, मशीन कोड संकलित बाइनरी संस्करण के बजाय मूल प्रोग्राम टेक्स्ट से चलती हैं.

Compile Time

एड्रेस बाइंडिंग का पहला प्रकार कंपाइल टाइम एड्रेस बाइंडिंग है. जब प्रोग्राम को निष्पादन योग्य बाइनरी फ़ाइल में संकलित किया जाता है तो यह कंप्यूटर के मशीन कोड में मेमोरी में एक स्थान आवंटित करता है. एड्रेस बाइंडिंग मेमोरी में सेगमेंट के शुरुआती बिंदु पर एक तार्किक पता आवंटित करता है जहां ऑब्जेक्ट कोड संग्रहीत होता है. स्मृति आवंटन दीर्घकालिक है और केवल कार्यक्रम को पुन: संकलित करके बदला जा सकता है.

Load Time

यदि प्रोग्राम आवंटित होने के समय स्मृति आवंटन निर्दिष्ट किया गया है, तो कोई भी प्रोग्राम कभी भी एक कंप्यूटर से दूसरे कंप्यूटर में संकलित स्थिति में स्थानांतरित नहीं हो सकता है. ऐसा इसलिए है क्योंकि निष्पादन योग्य कोड में स्मृति आवंटन होंगे जो पहले से ही नए कंप्यूटर पर अन्य प्रोग्रामों द्वारा उपयोग में हो सकते हैं. इस उदाहरण में, प्रोग्राम के तार्किक पते तब तक भौतिक पते से बंधे नहीं होते हैं जब तक कि प्रोग्राम को लागू नहीं किया जाता है और मेमोरी में लोड नहीं किया जाता है.

निष्पादन समय

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

Address Binding Schemes

संकलन समय: - यदि यह पहले से ज्ञात हो कि प्रक्रिया को स्मृति में कहाँ रखा जाएगा तो संकलन के समय निरपेक्ष कोड उत्पन्न किया जा सकता है. यदि हम पहले से जानते हैं कि उपयोगकर्ता प्रक्रिया स्थान आर से शुरू हो सकती है और जेनरेट कोड उस स्थान पर शुरू होगा और वहां से विस्तारित होगा. यदि कुछ समय बाद प्रारंभ स्थान में परिवर्तन होता है तो इस कोड को पुन: संकलित करना आवश्यक होगा. एमएस-डॉस आधारित डॉट कॉम प्रारूप कार्यक्रम पूर्ण कोड हैं और संकलन समय पर बाध्य हैं.

लोड होने का समय: - यदि संकलन समय पर यह ज्ञात नहीं है कि किस विशेष स्थान पर प्रक्रिया स्मृति में रहेगी जब संकलक पता खोजने के लिए स्थानांतरित करने योग्य कोड उत्पन्न करेगा. इस मामले में लोड समय तक अंतिम बंधन में देरी हो रही है. इस मामले में लोडर द्वारा लोड समय पर पूर्ण पता उत्पन्न किया जाएगा

निष्पादन समय (रन टाइम): - यदि प्रक्रिया को इसके निष्पादन के दौरान एक मेमोरी सेगमेंट से दूसरे में ले जाया जा सकता है, तो रन टाइम पर एड्रेस बाइंडिंग की जानी चाहिए. भौतिक पते उत्पन्न करने के लिए एक विशेष हार्डवेयर-एमएमयू (मेमोरी मैनेजमेंट यूनिट) का उपयोग किया जाता है. एड्रेस ट्रांसलेशन के बारे में अधिक जानकारी के लिए कृपया हमारी पोस्ट "लॉजिकल एंड फिजिकल एड्रेस" पढ़ें.

Address Binding

परिचय: - एक प्रोग्राम एक बाइनरी निष्पादन योग्य फ़ाइल डिस्क पर रहता है. निष्पादित करने के लिए, प्रोग्राम को स्मृति में लाया जाना चाहिए और एक प्रक्रिया के भीतर रखा जाना चाहिए. डिस्क पर प्रक्रियाएं जो निष्पादन के लिए स्मृति में लाए जाने की प्रतीक्षा कर रही हैं, इनपुट कतार बनाती हैं.

इनपुट कतार से एक प्रक्रिया का चयन किया जाता है और मेमोरी में लोड किया जाता है. जैसे ही प्रक्रिया को निष्पादित किया जाता है, यह मेमोरी से निर्देशों और डेटा तक पहुंचता है. बाद में प्रक्रिया समाप्त हो जाती है और इसकी मेमोरी स्पेस उपलब्ध घोषित कर दी जाती है.

एक उपयोगकर्ता प्रोग्राम निष्पादित होने से पहले निम्नलिखित चरणों से गुजरता है. इन चरणों के दौरान पतों को विभिन्न तरीकों से दर्शाया जा सकता है.

मेमोरी एड्रेस के लिए निर्देशों और डेटा की बाइंडिंग यहां की जा सकती है:

संकलन समय - यदि आप संकलन समय पर जानते हैं कि प्रक्रिया स्मृति में कहाँ रहेगी, तो पूर्ण कोड उत्पन्न किया जा सकता है.

लोड समय - यदि यह संकलन समय पर ज्ञात नहीं है कि प्रक्रिया स्मृति में कहाँ रहेगी, तो संकलक को स्थानांतरित करने योग्य कोड उत्पन्न करना होगा. लोड समय तक अंतिम बंधन में देरी हो रही है.

निष्पादन समय - यदि प्रक्रिया को इसके निष्पादन के दौरान एक मेमोरी सेगमेंट से दूसरे में ले जाया जा सकता है, तो रन टाइम तक बाइंडिंग में देरी होनी चाहिए.

एड्रेस बाइंडिंग प्रोग्राम के लॉजिकल या वर्चुअल एड्रेस को संबंधित भौतिक या मुख्य मेमोरी एड्रेस पर मैप करने की प्रक्रिया है. दूसरे शब्दों में, किसी दिए गए तार्किक पते को MMU (मेमोरी मैनेजमेंट यूनिट) द्वारा भौतिक पते पर मैप किया जाता है.

सीपीयू रैम से प्राप्त किए जाने वाले निर्देश/डेटा के लिए तार्किक या आभासी पता उत्पन्न करता है.

तार्किक पता विशेष रूप से एमएमयू या पता अनुवाद इकाई द्वारा अनुवाद से गुजरता है.

इस प्रक्रिया का आउटपुट उपयुक्त भौतिक पता या रैम में कोड/डेटा का स्थान है.

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

आइए सन्निहित स्मृति आवंटन का मामला लें. इस पद्धति में, एक प्रक्रिया कुछ स्थान "एल" से शुरू होने वाले एक सन्निहित मुख्य-मेमोरी क्षेत्र पर कब्जा कर लेगी और "एल + एक्स" तक विस्तारित होगी जहां एक्स एल के सापेक्ष बाइट ऑफसेट है. इस योजना में, एड्रेस बाइंडिंग के एक सेट के माध्यम से होता है 2 रजिस्टर - स्थानांतरण/आधार रजिस्टर और सीमा रजिस्टर. हमारे उदाहरण में, स्थानांतरण/आधार रजिस्टर में इसके मूल्य के रूप में "एल" पता होगा, और सीमा रजिस्टर में इसके मूल्य के रूप में "एक्स" ऑफसेट होगा. इन रजिस्टरों का उद्देश्य दो गुना है:-

मेमोरी सुरक्षा - किए गए संदर्भों की जाँच की जाती है यदि वे प्रक्रिया के पता स्थान या प्रक्रिया द्वारा कब्जा किए गए सन्निहित स्मृति क्षेत्र के भीतर हैं.

पता रूपांतरण - तार्किक पता संदर्भ सत्यापित होने के बाद, इसे बस आधार या स्थानांतरण रजिस्टर में मूल्य में जोड़ा जाता है. जोड़ा गया मूल्य वास्तविक भौतिक पता है.

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

अब एड्रेस बाइंडिंग पर वापस आते हुए, सीपीयू द्वारा उत्पन्न लॉजिकल एड्रेस को दो भागों में बांटा गया है:

पेज नंबर (उर्फ वर्चुअल पेज नंबर)

पृष्ठ के भीतर ऑफसेट या विस्थापन.

पेज नंबर का उपयोग पेज टेबल में इंडेक्स करने के लिए किया जाता है, ताकि संबंधित फिजिकल फ्रेम / पेज नंबर प्राप्त किया जा सके. भौतिक पृष्ठ संख्या उन्हें पूर्ण भौतिक पता प्राप्त करने के लिए ऑफ़सेट के साथ जोड़ दिया जाता है.

अगला विभाजन है. इस योजना में, प्रक्रिया को खंडों के रूप में स्मृति आवंटित की जाती है:

कोड/पाठ खंड - जिसमें निष्पादित किए जाने वाले निर्देश शामिल हैं

डेटा खंड - कार्यक्रम के वैश्विक और स्थिर डेटा युक्त.

हीप - प्रक्रिया के लिए गतिशील मेमोरी आवंटन अनुरोधों की सेवा के लिए उपयोग किया जाने वाला स्थान.

स्टैक - फ़ंक्शन कॉल के दौरान उपयोग की जाने वाली जगह.

ये सभी खंड मिलकर प्रक्रिया का भौतिक पता स्थान बनाते हैं. लॉजिकल टू फिजिकल एड्रेस मैपिंग एक सेगमेंट टेबल के जरिए की जाती है. मेमोरी के प्रत्येक खंड में लोडर द्वारा निर्दिष्ट एक खंड संख्या होती है. प्रत्येक खंड के बारे में निम्नलिखित जानकारी रखने के लिए एक खंड तालिका का उपयोग किया जाता है.

खंड सीमा - खंड के भीतर ऑफसेट सीमा.

खंड आधार - स्मृति में प्रत्येक खंड का प्रारंभिक पता.

CPU द्वारा उत्पन्न लॉजिकल एड्रेस को दो भागों में बांटा गया है:

खंड संख्या.

खंड के भीतर ऑफसेट या विस्थापन.

खंड संख्या का उपयोग खंड सीमा और आधार के मान प्राप्त करने के लिए खंड तालिका में अनुक्रमित करने के लिए किया जाता है. पहले हम जांचते हैं कि ऑफसेट सीमा के भीतर है

[0, सीमा]. यदि ऐसा है, तो खंड के भीतर वास्तविक भौतिक स्मृति पता प्राप्त करने के लिए खंड आधार का मान ऑफ़सेट में जोड़ा जाता है.

मुझे आशा है कि उपरोक्त विभिन्न स्मृति प्रबंधन योजनाओं के संदर्भ में निष्पादन-समय पता बाध्यकारी बताता है.

निष्पादन-समय के अलावा, एड्रेस बाइंडिंग को दो अलग-अलग प्रकारों में वर्गीकृत किया जा सकता है:

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

कंपाइल-टाइम: आमतौर पर कंपाइल टाइम पर हम नहीं जानते कि प्रोग्राम फिजिकल मेमोरी में कहां रहने वाला है. लेकिन यदि यह ज्ञात हो, तो वास्तविक भौतिक पते संकलन समय पर उत्पन्न किए जा सकते हैं. फिर से, तार्किक पते भौतिक स्मृति पते के समान हैं. कंपाइल-टाइम बाइंडिंग एक ही समय में दो अलग-अलग प्रोग्राम (कंपाइल-टाइम पर बाइंडिंग के साथ) को मेमोरी में रखना लगभग असंभव बना देता है.