2013-03-15 6 views

उत्तर

31

स्टैक हमेशा रैम में रहता है। एक स्टैक पॉइंटर है जो सीपीयू में एक रजिस्टर में रखा जाता है जो ढेर के शीर्ष पर इंगित करता है, यानी, स्टैक के शीर्ष पर स्थान का पता।

+6

+1 निर्दिष्ट करने के लिए कि सीपीयू बिंदुओं से स्टैक तक एक रजिस्टर –

8

स्टैक रैम के भीतर पाया जाता है और सीपीयू के भीतर नहीं। एक खंड ढेर निम्न आरेख के रूप में देखा के लिए समर्पित है:

enter image description here

Wiki से:

ढेर क्षेत्र कार्यक्रम ढेर, एक LIFO संरचना, आम तौर पर उच्च में स्थित होता है स्मृति के कुछ हिस्सों।

3

आप किस सीपीयू के बारे में बात कर रहे हैं?

  1. कुछ स्मृति शामिल हो सकता है कि callstacks के लिए प्रयोग किया जाता है, कुछ याद है कि callstacks के लिए इस्तेमाल किया जा सकता है शामिल लेकिन callstack प्रबंधन कोड लागू करने के लिए ओएस की आवश्यकता होती है, और दूसरों को बिना किसी लिखने योग्य स्मृति होते हैं। उदाहरण के लिए, x86 आर्किटेक्चर में एक या अधिक code caches and data caches CPU में बनाया गया है।

  2. कुछ सीपीयू या ओएस ऑपरेशंस लागू करते हैं जो स्मृति के विशिष्ट क्षेत्रों को गैर-निष्पादन योग्य बनाते हैं। स्टैक-आधारित बफर ओवरफ़्लो को रोकने के लिए, उदाहरण के लिए, कई ओएस hardware and/or software-based data execution prevention का उपयोग करते हैं, जो स्टैक मेमोरी को कोड के रूप में निष्पादित करने से रोक सकता है। कुछ नहीं हैं; यह पूरी तरह से संभव है कि एक x86 CPU डेटा कैश लाइन का उपयोग कॉलस्टैक और कोड दोनों को तेज मेमोरी में निष्पादित करने के लिए किया जा सकता है।

  3. EIP आईए 32 सीपीयू आर्किटेक्चर के लिए एक रजिस्टर की तरह लगता है। यदि आप आईए -32 का जिक्र कर रहे हैं, तो हाँ, यह एक सीपीयू ऑपरेशन है, हालांकि कई ओएस इसे बहु-कार्य करने के अनुकरण के लिए रैम से/स्विच कर देंगे।

संबंधित मुद्दे