एक प्रोसेसर में कितने ढेर होते हैं? [बन्द है]


-2

मैं अपने ऑपरेटिंग सिस्टम वर्ग में CPU और मेमोरी इंटरैक्शन के बारे में सीख रहा हूं और इस बारे में भ्रमित हो गया हूं कि मेमोरी स्टैक कैसे काम करता है। मैं समझता हूं कि स्टैक एक बार में एक पंक्ति से नीचे चला जाता है और या तो Accumulator में डेटा संग्रहीत करता है या IR को एक निर्देश भेजता है।

मेरा प्रश्न है: क्या प्रत्येक प्रक्रिया की अपनी मेमोरी स्टैक होती है या क्या प्रत्येक प्रोसेसर में एक विशाल मेमोरी स्टैक होता है जो विभिन्न प्रक्रियाओं के बीच लगातार स्विच करता है (और कभी-कभी I / O कॉल द्वारा बाधित होता है)? अगर एक विशालकाय ढेर है, तो केवल एक स्टैक है क्योंकि अधिकांश आधुनिक प्रोसेसर प्रति सेकंड इतने सारे निर्देशों को निष्पादित कर सकते हैं कि यह केवल ऐसा लगता है कि प्रक्रियाएं हमारे धीमे मानव दिमाग में एक साथ चल रही हैं?

जवाबों:


2

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

आपके प्रश्न के उत्तरार्ध का कुछ हद तक उत्तर देने के लिए, मल्टीटास्किंग एक भ्रम है, यह सिर्फ पैमाने पर निर्भर करता है। प्रत्येक व्यक्ति सीपीयू कोर एक समय में एक प्रक्रिया को चला सकता है, और यह (आमतौर पर) सिस्टम पर सभी प्रक्रियाओं के बीच स्विच करेगा जो उच्च आवृत्ति पर कुछ पर इंतजार नहीं कर रहे हैं जो कि वे कार्यात्मक रूप से एक मानव परिप्रेक्ष्य (एक साथ काम कर रहे हैं) एक सेकंड में 100 से 1000 गुना की दर से प्रक्रिया वाले सिस्टम, जो प्रत्येक प्रक्रिया में निष्पादित होने वाले सैकड़ों लाखों सीपीयू निर्देशों के लिए अभी भी पर्याप्त समय है)। इसे थोड़ा अलग तरीके से देखें, तो एक सिंगल कोर सीपीयू एक व्यक्ति की तरह होता है, उसे अपना ध्यान नियमित रूप से 'मल्टी-टास्क' पर स्विच करना पड़ता है, और मल्टी-कोर सीपीयू लोगों की टीम की तरह होता है, प्रत्येक व्यक्ति केवल एक काम कर सकता है। मज़बूती से, लेकिन एक पूरे के रूप में लिया,

हालाँकि, आपकी कक्षा के प्रयोजनों के लिए, यह सब या तो अप्रासंगिक है (यदि क्लास को CP / M या DOS जैसे न्यूनतर OS का उपयोग करके सिखाया जाता है, जो मल्टीटास्किंग नहीं करते हैं, और इसलिए एक ही स्टैक, अवधि) या होगा नियत समय में कवर किया जाना चाहिए (यदि यह UNIX, MINIX, या यहां तक ​​कि विभिन्न आधुनिक वाणिज्यिक प्रस्तावों में से एक का उपयोग करके असली ओएस का उपयोग करके सिखाया जाता है, जो सभी मल्टीटास्किंग करते हैं, जिसे अक्सर कक्षा के अंत में कवर किया जाता है क्योंकि इसे समझने के लिए समझने की आवश्यकता होती है मूल बातें (जैसे स्टैक कैसे काम करता है)।


मैंने इसे अच्छी तरह से वर्णित नहीं किया है, लेकिन मैं यह पूछने की कोशिश कर रहा था कि सीपीयू केवल एक समय में एक प्रक्रिया चला सकता है, इसका मतलब यह है कि इनमें से प्रत्येक प्रक्रिया एक ही स्टैक में रखी जाएगी?
डेरेन स्प्रिंगर

1
@DarienSpringer आह, क्षमा करें, मुझे यह गलत लगा। संक्षिप्त उत्तर नहीं है, प्रत्येक प्रक्रिया का अपना स्टैक है, लेकिन स्टैक पॉइंटर प्रोसेसर संदर्भ का एक हिस्सा है जो एक संदर्भ स्विच के दौरान सहेजा और पुनर्स्थापित हो जाता है।
ऑस्टिन हेमेलर्गरन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.