सीपीयू कोर को निर्देश कैसे दिए जाते हैं?
मल्टी-कोर प्रोसेसर में, सीपीयू कोर को निर्देश कैसे दिए जाते हैं? अर्थात्, किसी प्रोग्राम को किसी विशेष कोर द्वारा किस आधार पर सौंपा या निष्पादित किया जाता है और यह निर्णय कौन लेता है और इसे कैसे सौंपा जाता है?
क्या उपयोगकर्ता या व्यवस्थापक के लिए सिस्टम को एक विशिष्ट प्रोग्राम चलाने का निर्देश देना संभव है एक विशिष्ट कोर पर? एक विशिष्ट कोर पर कार्यक्रम? C या असेंबली में किसी कोड का अनुवाद करने पर यह कैसा दिखता है?
बहुत अनुमानित उत्तर:
एक मल्टी-कोर प्रोसेसर में, सीपीयू कोर को निर्देश कैसे दिए जाते हैं? अर्थात्, किसी प्रोग्राम को किसी विशेष कोर द्वारा किस आधार पर सौंपा या निष्पादित किया जाता है और यह निर्णय कौन लेता है और इसे कैसे सौंपा जाता है?
आम तौर पर ओएस कर्नेल - विशेष रूप से इसका शेड्यूलर - Â प्रत्येक कोर के वर्तमान उपयोग, प्रत्येक कोर की बिजली खपत (अब मिश्रित ई/पी कोर मौजूद हैं) जैसी विभिन्न चीजों के आधार पर, संभवतः प्रति-प्रक्रिया या प्रति-थ्रेड यह निर्णय लेता है। अन्य।
ध्यान रखें कि मल्टी-कोर सीपीयू से पहले सममित मल्टीप्रोसेसिंग अस्तित्व में थी - आप पेंटियम युग में भी दो सीपीयू सॉकेट के साथ एक पीसी प्राप्त कर सकते थे - और अभी भी मौजूद है कुछ सर्वर प्लेटफ़ॉर्म पर आज तक। तो आपको कई लेख मिलेंगे जो कोर के बजाय व्यक्तिगत "सीपीयू" के संदर्भ में मल्टीप्रोसेसिंग के बारे में बात करते हैं।
क्या उपयोगकर्ता या व्यवस्थापक के लिए सिस्टम को एक विशिष्ट कोर पर एक विशिष्ट प्रोग्राम चलाने का निर्देश देना संभव है?< br>
ओएस पर निर्भर करता है; कई लोगों के पास 'सीपीयू एफ़िनिटी' प्रक्रिया सेटिंग होती है। लिनक्स पर आप टास्कसेट (या अधिक व्यापक numactl) का उपयोग कर सकते हैं।
विंडोज के लिए, इसके टास्क मैनेजर (Win2000 या बाद के संस्करण) को खोलें, "विवरण" पर जाएं और "सेट एफ़िनिटी" खोजने के लिए एक प्रक्रिया पर राइट-क्लिक करें " विकल्प। Cmd या PowerShell समकक्ष में स्टार्ट /एफ़िनिटी कमांड का उपयोग विशिष्ट एफ़िनिटी प्री-सेट के साथ एक प्रोग्राम शुरू करने के लिए किया जा सकता है।
ओएस एक विशिष्ट कोर पर प्रोग्राम चलाने का निर्देश कैसे देता है?
जैसा कि पहले उल्लेख किया गया है, मुझे लगता है कि इसे दूसरे तरीके से देखना बेहतर है: ओएस निर्देश देता है कि प्रत्येक सीपीयू कोर क्या चलाएगा।
अर्थात्, जब भी कोई सीपीयू किसी प्रोग्राम को निष्पादित करने से लेकर ओएस को निष्पादित करने के लिए वापस लौटता है कर्नेल या तो 'प्रीमेप्टिव मल्टीटास्किंग' ओएस में रुकावट के द्वारा या स्वेच्छा से Win3.11 जैसे 'सहकारी' ओएस में - कर्नेल पहले सीपीयू की स्थिति को रैम में पिछली प्रक्रिया के अनुरूप बचाएगा ( इसमें इसके 'निर्देश सूचक', आदि जैसी चीज़ें शामिल हैं); फिर यह एक योग्य प्रक्रिया की तलाश करेगा; फिर यह उस प्रक्रिया के लिए सीपीयू रजिस्टरों को पुनर्स्थापित करेगा और सीपीयू को मेमोरी में एक विशिष्ट स्थान पर जाने के लिए कहेगा, जिस बिंदु पर सीपीयू उस प्रक्रिया से संबंधित कोड चलाना जारी रखेगा।
जब इसका अनुवाद किया जाता है तो यह कैसा दिखता है सी या असेंबली में कोड?
उदाहरण के लिए लिनक्स कर्नेल के प्रासंगिक बिट्स देखें:
आपके प्रश्नों का एक विस्तृत उत्तर आसानी से एक किताब भर देगा, तो आइए सीधे उत्तर देने का प्रयास करें।
मल्टी-कोर प्रोसेसर में, सीपीयू को निर्देश कैसे दिए जाते हैं कोर?
बाइनरी कोड प्रक्रियाओं और कभी-कभी थ्रेड्स (ओएस के आधार पर) में व्यवस्थित होता है। ओएस का शेड्यूलर उपलब्ध सीपीयू कोर पर उन प्रक्रियाओं/थ्रेड्स को चलाने का आयोजन करता है।
अर्थात्, किसी प्रोग्राम को किसी विशेष कोर द्वारा किस आधार पर सौंपा या निष्पादित किया जाता है और यह निर्णय कौन लेता है और इसे कैसे सौंपा जाता है?
काफी हद तक ओएस पर निर्भर, शेड्यूलर कम से कम लोड किए गए कोर, प्रक्रिया/थ्रेड प्राथमिकता, कोर एफ़िनिटी, या कुछ और के आधार पर लोड वितरित कर सकता है।
क्या उपयोगकर्ता या व्यवस्थापक के लिए सिस्टम को निर्देश देना संभव है एक विशिष्ट चलाएँ एक विशिष्ट कोर पर प्रोग्राम? आत्मीयता स्वयं या (संभवतः विशेषाधिकार प्राप्त) उपयोगकर्ता किसी दिए गए प्रक्रिया की आत्मीयता निर्धारित करने के लिए टूल का उपयोग कर सकता है।
ये कोर कैसे समन्वयित करते हैं?
यह ओएस और के विवेक पर है शेड्यूलर।
भले ही ओएस शेड्यूलिंग का प्रबंधन करता है, कैसे करता है