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