2012-08-02 25 views
5

में चलाता है मुझे ऑपरेटिंग सिस्टम कैसे काम करता है इसके बारे में कुछ संदेह हैं।ओएस: प्रक्रिया शेड्यूलर अलग प्रक्रिया

शेड्यूलर: क्या शेड्यूलर एक अलग प्रक्रिया में चलाता है (किसी अन्य प्रक्रिया की तरह)। नई प्रक्रिया में स्वैपिंग के समय वास्तव में क्या होता है (मुझे पता है कि प्रोसेसर रजिस्ट्रार और मेमोरी टेबल अपडेट किए गए हैं, मेरा सवाल यह है कि वे कैसे अपडेट किए जाते हैं। क्या हम रजिस्ट्रार (एससी, पीसी) को अलग करने के लिए एक प्रोग्राम लिख सकते हैं प्रक्रिया)।

+0

यह ऑपरेटिंग सिस्टम आर्किटेक्चर पर निर्भर करता है। कस्टम निर्मित ओएस में प्रत्येक सीपीयू कोर के लिए केवल एक ही प्रक्रिया हो सकती है। अधिकांश परिपक्व ओएस के लिए, सिस्टम प्रक्रिया हार्डवेयर इंटरप्ट द्वारा ट्रिगर किए गए शेड्यूलिंग को संभालती है। – Jay

उत्तर

5

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

  1. अनुसूचक निर्धारित करता है जो इस प्रक्रिया (विभिन्न विभिन्न एल्गोरिदम के माध्यम से) अगली बार स्लॉट में दिखाया जाएगा:

    ये कदम उठाएँ कि हो रहे हैं।

  2. शेड्यूलर मेमोरी मैनेजिंग यूनिट (एमएमयू) को अगली प्रक्रिया चलाने के लिए पृष्ठ तालिका का उपयोग करने के लिए बताता है (यह तालिका को इंगित करने के लिए एक रजिस्टर सेट करके किया जाता है)।

  3. शेड्यूलर एन घड़ी चक्र के बाद एक बाधा उत्पन्न करने के लिए प्रोग्राम करने योग्य इंटरप्ट टाइमर (पीआईटी) प्रोग्राम करता है।

  4. अनुसूचक से जब प्रक्रिया पिछले चल रहा था रजिस्टरों की राज्य पुनर्स्थापित करता है (या उन्हें नई प्रक्रियाओं के लिए सामान्य मानों सेट)

  5. अनुसूचक पिछले निर्देश का पता है कि निष्पादित नहीं किया गया था करने के लिए कूदता है प्रक्रिया में है।

  6. एन घड़ी चक्र के बाद, एक बाधा उत्पन्न होती है और ऑपरेटिंग सिस्टम पीआईटी के कारण इसे पहचानता है, जो शेड्यूलर द्वारा संभाला जाता है।

  7. शेड्यूलर रजिस्टरों की स्थिति (स्टैक पॉइंटर इत्यादि सहित) को बचाता है और जहां इंटरप्ट होता है वहां प्रोग्राम काउंटर को पकड़ता है (और इसे अगली बार अगली बार कूदने के लिए पते के रूप में सहेजता है) और फिर चरण में वापस जाता है 1.

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

तो अनिवार्य रूप से अपने प्रश्न:

"क्या हम एक अलग प्रक्रिया को इंगित करने के रजिस्टरों को अद्यतन करने के लिए एक कार्यक्रम लिख सकते हैं"

बस कहा गया है, लेकिन उत्तर सही है। हम निश्चित रूप से कर सकते हैं।

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