रिवर्स ऑर्डर में उनको समझाना बहुत आसान है क्योंकि प्रक्रिया-स्विच में हमेशा थ्रेड-स्विच शामिल होता है।
एक एकल कोर सीपीयू पर एक ठेठ धागा संदर्भ स्विच इस तरह होता है:
सभी संदर्भ स्विच एक 'बाधा' द्वारा शुरू कर रहे हैं। यह एक वास्तविक हार्डवेयर बाधा हो सकती है जो चालक चलाती है, (उदाहरण के लिए। नेटवर्क कार्ड, कीबोर्ड, मेमोरी-प्रबंधन या टाइमर हार्डवेयर से), या सॉफ़्टवेयर कॉल, (सिस्टम कॉल), जो हार्डवेयर-इंटरप्ट-जैसे कॉल अनुक्रम करता है ओएस में प्रवेश करने के लिए। ड्राइवर के बाधा के मामले में, ओएस एक एंट्री पॉइंट प्रदान करता है कि ड्राइवर 'सामान्य' प्रत्यक्ष इंटरप्ट-रिटर्न & करने के बजाय कॉल कर सकता है, इसलिए ड्राइवर को ओएस शेड्यूलर के माध्यम से बाहर निकलने की अनुमति मिलती है अगर उसे थ्रेड सेट करने के लिए ओएस की आवश्यकता होती है तैयार, (उदाहरण के लिए। यह एक सेमफोर संकेत दिया है)।
गैर-तुच्छ प्रणाली को कर्नेल-स्टेटस दर्ज करने के लिए हार्डवेयर-सुरक्षा-स्तर परिवर्तन शुरू करना होगा ताकि कर्नेल कोड/डेटा इत्यादि का उपयोग किया जा सके।
बाधित थ्रेड के लिए कोर स्थिति को सहेजना होगा। एक साधारण एम्बेडेड सिस्टम पर, यह सिर्फ सभी रजिस्टरों को थ्रेड स्टैक पर धक्का दे सकता है और स्टैक पॉइंटर को अपने थ्रेड कंट्रोल ब्लॉक (टीसीबी) में सहेज सकता है।
कई सिस्टम इस चरण में एक ओएस-समर्पित स्टैक पर स्विच करते हैं ताकि ओएस-आंतरिक स्टैक आवश्यकताओं के बड़े हिस्से को प्रत्येक थ्रेड के ढेर पर नहीं लगाया जा सके।
थ्रेड स्टैक स्थिति को चिह्नित करना आवश्यक हो सकता है जहां अवरोध-स्थिति में परिवर्तन नेस्टेड इंटरप्ट्स की अनुमति देने के लिए हुआ।
चालक/सिस्टम कॉल रन करता है और विभिन्न थ्रेड प्राथमिकताओं के लिए टीसीबी के आंतरिक कतारों से टीसीबी को जोड़कर/हटाकर तैयार धागे का सेट बदल सकता है। नेटवर्क कार्ड ड्राइवर ने एक ईवेंट सेट किया हो या एक सेमफोर सिग्नल किया हो कि एक और धागा इंतजार कर रहा था, ताकि धागा तैयार सेट में जोड़ा जा सके, या एक चलने वाले थ्रेड को नींद() कहा जा सकता है और इसलिए तैयार सेट से खुद को हटाने के लिए चुने गए ।
ओएस शेड्यूलर एल्गोरिदम यह निर्धारित करने के लिए चलाया जाता है कि कौन सा धागा आगे चलाना है, आमतौर पर उच्च प्राथमिकता वाले तैयार धागे जो उस प्राथमिकता के लिए कतार के सामने है। यदि अगली-टू-रन थ्रेड पहले से चलने वाले थ्रेड के लिए एक अलग प्रक्रिया से संबंधित है, तो यहां कुछ अतिरिक्त सामान की आवश्यकता है, (बाद में देखें)।
उस थ्रेड के लिए टीसीबी से सहेजे गए स्टैक पॉइंटर को पुनर्प्राप्त और हार्डवेयर स्टैक पॉइंटर में लोड किया गया है।
चयनित धागे के लिए मूल स्थिति पुनर्स्थापित की गई है। मेरे सरल सिस्टम पर, रजिस्टरों को चयनित थ्रेड के ढेर से पॉप किया जाएगा। अधिक जटिल प्रणालियों को उपयोगकर्ता स्तर की सुरक्षा में वापसी को संभालना होगा।
एक इंटरप्ट-रिटर्न किया जाता है, इसलिए चयनित थ्रेड को निष्पादन स्थानांतरित किया जाता है।
मल्टीकोर सीपीयू के मामले में, चीजें अधिक जटिल होती हैं। शेड्यूलर यह तय कर सकता है कि वर्तमान में किसी अन्य कोर पर चलने वाला थ्रेड रोकना और एक थ्रेड द्वारा प्रतिस्थापित किया जाना चाहिए जो अभी तैयार हो गया है। यह अपने इंटरप्रोसेसर ड्राइवर को हार्डवेयर को रोकने के लिए ऐसा कर सकता है- उस थ्रेड को चलाने वाले कोर को बाधित करें जिसे रोकना है।
प्रक्रिया संदर्भ स्विच शुरू कर रहे हैं: इस आपरेशन की जटिलताओं, अन्य सभी सामान के शीर्ष पर, ओएस कर्नेल :)
एक ठेठ प्रक्रिया संदर्भ स्विच इस तरह होता है लेखन से बचने के लिए एक अच्छा कारण है थ्रेड-कॉन्टेक्शन स्विच द्वारा, इसलिए उपरोक्त सभी, 1-9, होने की आवश्यकता होगी।
उपरोक्त चरण 5 पर, शेड्यूलर पहले से चलने वाले थ्रेड वाले स्वामित्व वाली एक अलग प्रक्रिया से संबंधित थ्रेड चलाने का निर्णय लेता है।
मेमोरी-प्रबंधन हार्डवेयर को नई प्रक्रिया के लिए पता-स्थान के साथ लोड किया जाना चाहिए, यानी जो भी चयनकर्ता/सेगमेंट/झंडे/जो भी नई प्रक्रिया के थ्रेड/एस को अपनी स्मृति तक पहुंचने की अनुमति देता है।
किसी भी एफपीयू हार्डवेयर के संदर्भ को पीसीबी से सहेजा/बहाल करने की आवश्यकता है।
अन्य प्रक्रिया-समर्पित हार्डवेयर हो सकते हैं जिन्हें सहेजा/बहाल करने की आवश्यकता है।
किसी भी असली प्रणाली पर, तंत्र वास्तुकला आधारित होता है तथा उक्त में से किसी संदर्भ स्विच के निहितार्थ को एक किसी न किसी और अधूरा गाइड है। प्रक्रिया-स्विच द्वारा उत्पन्न अन्य ओवरहेड हैं जो स्विच का सख्ती से हिस्सा नहीं हैं - प्रक्रिया-स्विच के बाद अतिरिक्त कैश-फ्लश और पृष्ठ-दोष हो सकते हैं क्योंकि इसकी कुछ मेमोरी संबंधित पृष्ठों के पक्ष में हो सकती है उस थ्रेड के मालिक की प्रक्रिया के लिए जो पहले चल रहा था।
स्रोत
2011-09-16 11:02:09
और अधिक विस्तार में सिंगल कोर संदर्भ स्विच के चरण 4 व्याख्या कर सकते हैं? नेस्टेड इंटरप्ट्स के लिए बिल्कुल "चिह्न" क्यों आवश्यक है? साथ ही, रजिस्टरों को वास्तव में कहां से सहेजा जाता है? (लिनक्स मानते हैं) –