unix - प्रक्रिया मेमोरी मानचित्र में पाठ अनुभाग



process operating-system (1)

हर प्रक्रिया में यह बहुत ही आभासी पते हैं। यह वर्चुअल पता बच्चे प्रक्रिया सहित किसी के साथ साझा नहीं किया गया है लेकिन इन आभासी पते का अनुवाद या, अन्य शब्दों में, ओएस कर्नेल और एमएमयू द्वारा भौतिक पते पर मैप किए गए हैं

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

इसलिए असली बात यह है कि पाठ अनुभाग को एक ही भौतिक पृष्ठों (फ्रेम कहा जाता है) के लिए विभिन्न आभासी पृष्ठों के मानचित्रण के द्वारा साझा किया जा सकता है।

आम तौर पर, प्रक्रिया मेमोरी मैप में स्टैक, टेक्स्ट, डेटा + बीएसएस और ढेर होता है।

मेमोरी एड्रेस पाठ अनुभाग को छोड़कर अन्य प्रक्रियाओं के लिए स्वतंत्र है।

मेरा प्रश्न टेक्स्ट अनुभाग में है, वहां केवल बाल प्रक्रिया साझा कर सकती है

अपनी मूल प्रक्रिया के साथ एक ही पाठ अनुभाग? या अन्य प्रक्रियाओं को भी साझा कर सकते हैं।

================================================== ====================

@ एविड: हाँ, विकिपीडिया को देखें

http://en.wikipedia.org/wiki/Process_isolation

"प्रक्रिया अलगाव को वर्चुअल पता स्थान से कार्यान्वित किया जा सकता है, जहां प्रक्रिया ए का पता स्थान प्रक्रिया बी के पते से भिन्न है - ए को बी में लिखने से रोका जा रहा है"

यह मेरा मतलब है कि प्रत्येक प्रक्रिया के पास अपनी स्मृति का नक्शा है।

हालांकि, जब मैंने ओएस बुक पढ़ा, तो इसमें उल्लेख है कि पाठ अनुभाग को साझा किया जा सकता है। इसलिए मैं इस से बहुत स्पष्ट नहीं हूं या शायद मैं किताब के उस भाग को गलत समझा।

================================================== =================== अतिरिक्त जानकारी:

http://www.hep.wisc.edu/~pinghc/Process_Memory.htm

प्रक्रियाएं पाठ खंड को साझा करती हैं यदि कार्यक्रम की दूसरी प्रति को समवर्ती निष्पादित किया जाता है। इस सेटिंग में, सिस्टम डुप्लिकेट पुनः लोड करने के बजाय सूचक के साथ पहले लोडेड टेक्स्ट सेगमेंट का संदर्भ देता है। यदि आवश्यक हो, तो साझा पाठ, जो सी / सी ++ कंपाइलर का उपयोग करते समय डिफ़ॉल्ट है, को कंपाइल समय पर- N विकल्प का उपयोग करके बंद किया जा सकता है।





kernel