निम्न कोड स्निपेट पर विचार करें।वैरिएबल का पता फोर्क() सिस्टम कॉल में संशोधित होने के बाद क्यों रहता है
if (fork() == 0)
{
a = a + 5;
printf("%d, %d \n", a, &a);
}
else
{
a = a - 5;
printf ("%d, %d \n", a,& a);
}
AFAIK, जब कांटा() किया जाता है, माता पिता की वर्चुअल ऐड्रेस स्पेस बच्चे और दोनों बच्चे & माता पिता साझा करने के लिए एक ही शारीरिक पृष्ठों की नकल की है जब तक उनमें से एक को संशोधित करने की कोशिश करता है। बच्चे & अभिभावक में से एक क्षण एक चर को संशोधित करता है, माता-पिता के भौतिक पृष्ठ को बच्चे के लिए दूसरे पृष्ठ पर कॉपी किया जाता है और भौतिक पृष्ठ निजी रहते हैं। तो, यहां 'ए' का मान बच्चे & अभिभावक में भिन्न है। लेकिन जब बच्चे & माता-पिता में 'ए' के पते के लिए आता है, तो आउटपुट समान होता है। मैं यह समझने में सक्षम नहीं हूं कि भौतिक पृष्ठ भिन्न होने पर भी पता क्यों रहता है।
इसका मतलब है जो भी हम देखते हैं वह आभासी पता है। क्या हम अपने कार्यक्रम के माध्यम से वास्तविक भौतिक पता देख सकते हैं? –
यदि आपको सही (ओएस) उपकरण मिलते हैं। लेकिन सामान्य परिस्थितियों में नहीं। –
उत्तर के लिए धन्यवाद .. –