2012-11-29 49 views
7

यदि आपके पास राउंड रॉबिन शेड्यूलर के लिए बहुत बड़ा (बहुत बड़ा कहें) समय स्लाइस है तो ऑपरेटिंग सिस्टम में मुझे किस तरह के प्रदर्शन प्रभाव की उम्मीद करनी चाहिए?राउंड रॉबिन टाइम शेड्यूलिंग में समय स्लाइस

मेरा एकमात्र विचार यह है कि प्रक्रियाओं को बहुत समय की आवश्यकता होती है, लेकिन अधिकांश प्रक्रियाएं थोड़ी सी मात्रा का उपयोग करती हैं, इसलिए इससे सभी छोटी प्रक्रियाओं को खत्म करने में देरी होगी?

उदाहरण: 50 की टाइलस्लाइस, और प्रक्रियाओं P1 = 400, P2 = 10, पी 3 = 150, पी 4 = 20, पी 5 = 10, पी 6 = 10

यह मेरा सबसे अच्छा अनुमान है, अगर वहाँ मैं सोच रहा हूँ कुछ भी जो लोग आप समय के टुकड़े के रूप में साझा कर सकते हैं बहुत छोटा या बहुत बड़ा हो सकता है।

उत्तर

6

राउंड रॉबिन के साथ समस्या यह है कि कार्य बराबर नहीं हैं।

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

आईओ बाध्य कार्यों के लिए, राउंड रॉबिन खराब विलंबता का कारण बनता है। यदि कोई महत्वपूर्ण कार्य अनब्लॉक करता है (उदाहरण के लिए "नींद()" को कॉल करने के बाद उठता है, तो फाइल आईओ प्राप्त करता है, यह इंतजार कर रहा था, आदि) तो इसे महत्वपूर्ण कार्यों से पहले हजारों महत्वपूर्ण कार्यों को अपने समय स्लाइस के माध्यम से अपना रास्ता तय करने की प्रतीक्षा करनी पड़ सकती है कुछ भी करने का मौका मिलता है। समय स्लाइस की लंबाई को कम करने से महत्वपूर्ण कार्य कुछ उपयोगी करने से पहले लगने वाले समय को कम कर देगा, लेकिन महत्वपूर्ण कार्य कुछ उपयोगी करने के लिए भी कम हो जाएगा।

नोट: आप सूची के प्रमुख पर जाने वाले कार्यों को बनाकर इसे "ठीक" करने का लुत्फ उठा सकते हैं। इस मामले में एक महत्वपूर्ण कार्य हमेशा के लिए भूखा हो सकता है क्योंकि महत्वहीन कार्य सोते रहते हैं और जागते रहते हैं।

अनिवार्य रूप से, राउंड-रोबिन "बेकार" का एक गुस्से में ढेर है और इससे कोई फर्क नहीं होगा कि तुम क्या आप पूरी तरह से अलग शेड्यूलिंग एल्गोरिथ्म विभिन्न कार्यों के महत्व/प्राथमिकता के लिए कम से कम कुछ सम्मान है कि के साथ बदलना जब तक ।

एक oversimplified उदाहरण के लिए; आपके पास 3 अलग-अलग कार्य प्राथमिकताओं हो सकती हैं, जहां ओएस केवल उच्चतम प्राथमिकता वाले कार्यों को चलाता है जो यह कर सकते हैं (यह सुनिश्चित करने के साथ कि उच्च प्राथमिकता कार्य तुरंत कम प्राथमिकता वाले कार्यों को प्राथमिकता देते हैं) और राउंड-रॉबिन का उपयोग समान प्राथमिकता वाले कार्यों के लिए किया जाता है। इस मामले में, आप अलग-अलग प्राथमिकताओं के लिए अलग-अलग समय स्लाइस लम्बाई प्राप्त कर सकते हैं (उदा। उच्च प्राथमिकता वाले कार्यों को केवल 1 एमएस मिलते हैं, मध्यम प्राथमिकता कार्यों को 10 एमएस मिलते हैं, कम प्राथमिकता वाले कार्यों को 125 एमएस मिलते हैं)।

"कम oversimplified" उदाहरण के लिए; आपके पास कई अलग-अलग शेड्यूलिंग नीतियां हो सकती हैं (उदाहरण के लिए रीयल-टाइम कार्यों के लिए एक, सामान्य कार्यों के लिए एक, पृष्ठभूमि/निष्क्रिय कार्यों के लिए एक) जो सभी अलग-अलग दृष्टिकोणों का उपयोग करते हैं (उदाहरण के लिए सबसे पहले समय सीमा, परिवर्तनीय समय स्लाइस इत्यादि); जहां प्रत्येक शेड्यूलिंग नीति के लिए 256 कार्य प्राथमिकताएं हैं।

0

समय स्लाइसिंग दृष्टिकोण से, 2 चरम परिदृश्य हैं जो प्रदर्शन को कम करते हैं। यदि समय स्लाइस है:

  1. बहुत बड़ा: छोटे प्रक्रियाओं को बहुत लंबे समय तक इंतजार करना पड़ता है जब वे बहुत पहले समाप्त हो सकते थे, समय का टुकड़ा छोटा होता था। साथ ही, यह इंटरैक्टिव प्रक्रियाओं के लिए अनुकूल नहीं है जिसके लिए छोटे लेकिन लगातार CPU समय की आवश्यकता होती है।
  2. बहुत छोटा: लगातार संदर्भ स्विच का कारण बनता है जो महत्वपूर्ण ओवरहेड की मात्रा में होता है।

ऐतिहासिक रूप से, ओएस डेवलपर्स इन दो चरम सीमाओं के बीच में संतुलन बनाए रखना बहुत मेहनत की है और वहाँ विभिन्न प्राथमिकता आधारित एल्गोरिदम, जो बेहतर प्रदर्शन के लिए राउंड-रोबिन के साथ आत्मसात न पड़े।

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