सीपीयू शेड्यूलिंग Algorithms in Operaटिंग सिस्टम्स

⚡ स्मार्ट सारांश

सीपीयू शेड्यूलिंग यह निर्धारित करती है कि ऑपरेटिंग सिस्टम अगला कौन सा रेडी प्रोसेस चलाएगा,ping प्रोसेसर को व्यस्त रखते हुए, फर्स्ट कम फर्स्ट सर्व, शॉर्टेस्ट जॉब फर्स्ट, प्रायोरिटी और राउंड रॉबिन जैसे एल्गोरिदम के माध्यम से प्रदर्शन में सुधार किया जाता है।

  • 🔄 परिभाषा: सीपीयू शेड्यूलिंग रेडी क्यू से किसी प्रोसेस को तब चुनता है जब सीपीयू अन्यथा निष्क्रिय रहता।
  • प्रकार: प्रीएम्प्टिव शेड्यूलिंग किसी चल रहे कार्य को बाधित कर सकती है, जबकि नॉन-प्रीएम्प्टिव शेड्यूलिंग सीपीयू को खाली करने के लिए कार्य के प्रतीक्षा करती है।
  • 📊 मानदंड: अच्छे एल्गोरिदम प्रतीक्षा, प्रतिक्रिया और टर्नअराउंड समय को कम करते हुए सीपीयू उपयोग और थ्रूपुट को अधिकतम करते हैं।
  • 🧮 Algorithms: एफसीएफएस, एसजेएफ, शॉर्टेस्ट रिमेनिंग टाइम, प्रायोरिटी, राउंड रॉबिन और मल्टीलेवल क्यू, ये सभी अलग-अलग वर्कलोड के लिए उपयुक्त हैं।
  • 🚦 डिस्पैचर: डिस्पैचर कॉन्टेक्स्ट स्विच करता है जो चयनित प्रक्रिया को सीपीयू नियंत्रण सौंपता है।
  • 🤖 एआई का दृष्टिकोण: मशीन लर्निंग शेड्यूलिंग संबंधी निर्णयों को बेहतर बनाती है, और कोपायलट शेड्यूलर एल्गोरिदम को कोड करने और उनका परीक्षण करने में मदद करता है।

सीपीयू शेड्यूलिंग Algorithms in Operaटिंग सिस्टम्स

सीपीयू शेड्यूलिंग क्या है?

सीपीयू शेड्यूलिंग सीपीयू शेड्यूलिंग वह प्रक्रिया है जिसके द्वारा यह निर्धारित किया जाता है कि कौन सी प्रक्रिया सीपीयू पर तब तक रहेगी जब तक कोई अन्य प्रक्रिया निष्क्रिय है। सीपीयू शेड्यूलिंग का मुख्य कार्य यह सुनिश्चित करना है कि जब भी सीपीयू निष्क्रिय रहे, ऑपरेटिंग सिस्टम तैयार कतार में मौजूद प्रक्रियाओं में से कम से कम एक को निष्पादन के लिए चुन ले। यह चयन प्रक्रिया सीपीयू शेड्यूलर द्वारा की जाती है, जो मेमोरी में मौजूद निष्पादन के लिए तैयार प्रक्रियाओं में से एक का चयन करता है।

सीपीयू शेड्यूलिंग के प्रकार

यहां दो प्रकार की शेड्यूलिंग विधियां हैं:

सीपीयू शेड्यूलिंग के प्रकार

प्रीमेप्टिव शेड्यूलिंग

प्रीएम्प्टिव शेड्यूलिंग में, कार्यों को उनकी प्राथमिकता के अनुसार निर्धारित किया जाता है। कभी-कभी, कम प्राथमिकता वाले कार्य से पहले उच्च प्राथमिकता वाले कार्य को चलाना महत्वपूर्ण होता है, भले ही कम प्राथमिकता वाला कार्य पहले से चल रहा हो। कम प्राथमिकता वाला कार्य कुछ समय के लिए रुका रहता है और उच्च प्राथमिकता वाले कार्य के पूरा होने पर पुनः शुरू हो जाता है।

गैर-पूर्वानुमानित शेड्यूलिंग

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

शेड्यूलिंग कब प्रीएम्प्टिव होती है और कब नॉन-प्रीएम्प्टिव?

यह निर्धारित करने के लिए कि शेड्यूलिंग प्रीएम्प्टिव है या नॉन-प्रीएम्प्टिव, इन चार मापदंडों पर विचार करें:

  1. एक प्रक्रिया चालू अवस्था से प्रतीक्षा अवस्था में चली जाती है।
  2. एक विशिष्ट प्रक्रिया रनिंग अवस्था से रेडी अवस्था में परिवर्तित हो जाती है।
  3. एक विशिष्ट प्रक्रिया प्रतीक्षा अवस्था से तैयार अवस्था में परिवर्तित हो जाती है।
  4. एक प्रक्रिया अपना निष्पादन पूरा कर लेती है और समाप्त हो जाती है।

यदि केवल शर्तें 1 और 4 लागू होती हैं, तो शेड्यूलिंग को नॉन-प्रीएम्प्टिव कहा जाता है। अन्य सभी शेड्यूलिंग स्थितियां प्रीएम्प्टिव होती हैं।

सीपीयू शेड्यूलिंग से संबंधित महत्वपूर्ण शब्दावलियाँ

  • विस्फोट समय/निष्पादन समय: किसी प्रक्रिया को पूरा करने में लगने वाला समय। इसे रनिंग टाइम भी कहा जाता है।
  • आगमन का समय: वह समय जब कोई प्रक्रिया तैयार अवस्था में प्रवेश करती है।
  • समय समाप्त: वह समय जब कोई प्रक्रिया पूरी हो जाती है और सिस्टम से बाहर निकल जाती है।
  • मल्टीप्रोग्रामिंग: कई प्रोग्राम एक ही समय में मेमोरी में मौजूद हो सकते हैं।
  • नौकरियां: एक प्रकार का प्रोग्राम जिसमें उपयोगकर्ता की कोई परस्पर क्रिया नहीं होती है।
  • उपयोगकर्ता: एक प्रकार का प्रोग्राम जिसमें उपयोगकर्ता की परस्पर क्रिया होती है।
  • प्रक्रिया: वह संदर्भ जिसका उपयोग नौकरी और उपयोगकर्ता दोनों के लिए किया जाता है।
  • सीपीयू/आईओ बर्स्ट चक्र: यह प्रक्रिया निष्पादन की विशेषता बताता है, जो सीपीयू और इनपुट/आउटपुट गतिविधि के बीच बारी-बारी से चलती रहती है। सीपीयू का समय आमतौर पर इनपुट/आउटपुट समय से कम होता है।

सीपीयू शेड्यूलिंग मानदंड

सीपीयू शेड्यूलिंग एल्गोरिदम निम्नलिखित को अधिकतम और न्यूनतम करने का प्रयास करता है:

सीपीयू शेड्यूलिंग मानदंड

अधिकतम करने के लिए

सीपीयू का उपयोग: सीपीयू का उपयोग मुख्य कार्य है जिसमें ऑपरेटिंग सिस्टम को यह सुनिश्चित करना होता है कि सीपीयू यथासंभव व्यस्त रहे। यह 0 से 100 प्रतिशत तक हो सकता है। हालांकि, आरटीओएस के लिए, यह निम्न-स्तरीय सिस्टम के लिए 40 प्रतिशत से लेकर उच्च-स्तरीय सिस्टम के लिए 90 प्रतिशत तक हो सकता है।

प्रवाह क्षमता: प्रति इकाई समय में पूरी होने वाली प्रक्रियाओं की संख्या को थ्रूपुट कहा जाता है। अतः, जब सीपीयू किसी प्रक्रिया को निष्पादित करने में व्यस्त होता है, तब कार्य हो रहा होता है, और प्रति इकाई समय में पूर्ण किए गए कार्य को थ्रूपुट कहते हैं।

कम से कम

इंतजार का समय: प्रतीक्षा समय वह समय है जिसके लिए किसी विशिष्ट प्रक्रिया को तैयार कतार में प्रतीक्षा करनी पड़ती है।

जवाब देने का समय: यह अनुरोध सबमिट करने से लेकर पहली प्रतिक्रिया प्राप्त होने तक का समय है।

बदलाव का समय: टर्नअराउंड टाइम किसी विशिष्ट प्रक्रिया को पूरा करने में लगने वाला समय है। इसमें मेमोरी में प्रवेश पाने के लिए प्रतीक्षा करने, कतार में प्रतीक्षा करने और सीपीयू पर निष्पादन में लगने वाला कुल समय शामिल होता है। प्रक्रिया प्रस्तुत करने के समय और उसके पूरा होने के समय के बीच की अवधि को टर्नअराउंड टाइम कहते हैं।

अंतराल टाइमर

टाइमर रुकावट एक ऐसी विधि है जो प्रीएम्प्शन से बहुत करीब से संबंधित है। जब किसी निश्चित प्रक्रिया को CPU आवंटन मिलता है, तो टाइमर को एक निर्दिष्ट अंतराल पर सेट किया जा सकता है। टाइमर रुकावट और प्रीएम्प्शन दोनों ही प्रक्रिया को CPU बर्स्ट पूरा होने से पहले CPU को वापस करने के लिए मजबूर करते हैं।

अधिकांश मल्टी-प्रोग्राम्ड ऑपरेटिंग सिस्टम किसी प्रक्रिया को सिस्टम को हमेशा के लिए व्यस्त रखने से रोकने के लिए किसी न किसी प्रकार के टाइमर का उपयोग करते हैं।

डिस्पैचर क्या है?

डिस्पैचर एक मॉड्यूल है जो प्रक्रिया को CPU का नियंत्रण प्रदान करता है। डिस्पैचर तेज़ होना चाहिए ताकि यह प्रत्येक कॉन्टेक्स्ट स्विच पर चल सके। डिस्पैच लेटेंसी वह समय है जो CPU शेड्यूलर को एक प्रक्रिया को रोकने और दूसरी प्रक्रिया को शुरू करने के लिए चाहिए होता है।

डिस्पैचर द्वारा निष्पादित कार्य:

  • संदर्भ परिवर्तन।
  • उपयोगकर्ता मोड में स्विच किया जा रहा है।
  • नये लोड किये गये प्रोग्राम में सही स्थान पर जाना।

सीपीयू शेड्यूलिंग के प्रकार Algorithms

मुख्यतः छह प्रकार के होते हैं प्रक्रिया शेड्यूलिंग एल्गोरिदम:

  1. पहले आओ पहले पाओ (एफसीएफएस)
  2. सबसे छोटा-कार्य-प्रथम (एसजेएफ) शेड्यूलिंग
  3. सबसे कम बचा समय
  4. प्राथमिकता निर्धारण
  5. राउंड रॉबिन शेड्यूलिंग
  6. बहुस्तरीय कतार निर्धारण

निर्धारण Algorithms

निर्धारण Algorithms

पहले आयें पहले पायें

एफसीएफएस का मतलब है पहले आयें पहले पायेंयह सबसे सरल और आसान सीपीयू शेड्यूलिंग एल्गोरिदम है। इस प्रकार के एल्गोरिदम में, सीपीयू का अनुरोध करने वाली प्रक्रिया को पहले सीपीयू आवंटन मिलता है। इस शेड्यूलिंग विधि को FIFO क्यू के साथ प्रबंधित किया जा सकता है।

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

एफसीएफएस विधि की विशेषताएं

  • यह एक नॉन-प्रीएम्प्टिव शेड्यूलिंग एल्गोरिदम है।
  • नौकरियां हमेशा पहले आओ, पहले पाओ के आधार पर निष्पादित की जाती हैं।
  • इसे क्रियान्वित करना और प्रयोग करना आसान है।
  • हालाँकि, यह विधि प्रदर्शन में खराब है, और सामान्य प्रतीक्षा समय काफी लंबा है।

सबसे कम बचा समय

एसआरटी का पूरा नाम शॉर्टेस्ट रिमेनिंग टाइम है। इसे एसजेएफ (प्रीएम्प्टिव शेड्यूलिंग) भी कहा जाता है। इस विधि में, प्रक्रिया को उस कार्य को आवंटित किया जाता है जो पूरा होने के सबसे करीब होता है। यह विधि किसी नई तैयार स्थिति वाली प्रक्रिया को किसी पुरानी प्रक्रिया के पूरा होने में बाधा डालने से रोकती है।

एसआरटी शेड्यूलिंग विधि की विशेषताएं

  • यह विधि अधिकतर बैच वातावरण में लागू की जाती है जहां छोटे कार्यों को प्राथमिकता देने की आवश्यकता होती है।
  • यह एक साझा प्रणाली में लागू करने का आदर्श तरीका नहीं है जहां आवश्यक सीपीयू समय अज्ञात है।
  • प्रत्येक प्रक्रिया अपने अगले सीपीयू बर्स्ट की अवधि से जुड़ी होती है, इसलिए ऑपरेटिंग सिस्टम इन अवधियों का उपयोग करके प्रक्रिया को यथासंभव कम समय में शेड्यूल करता है।

प्राथमिकता आधारित निर्धारण

प्राथमिकता निर्धारण यह प्राथमिकता के आधार पर प्रक्रियाओं को निर्धारित करने की एक विधि है। इस विधि में, शेड्यूलर कार्यों को उनकी प्राथमिकता के अनुसार चुनता है।

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

राउंड-रॉबिन शेड्यूलिंग

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

राउंड-रॉबिन शेड्यूलिंग की विशेषताएं

  • राउंड रॉबिन एक हाइब्रिड मॉडल है जो क्लॉक-ड्रिवन है।
  • किसी विशिष्ट कार्य को संसाधित करने के लिए निर्धारित समय सीमा न्यूनतम होनी चाहिए। हालांकि, यह विभिन्न प्रक्रियाओं के लिए भिन्न हो सकती है।
  • यह एक टाइम-शेयरिंग सिस्टम की तरह व्यवहार करता है जो प्रत्येक प्रक्रिया पर एक विशिष्ट समय सीमा के भीतर प्रतिक्रिया देता है।

सबसे छोटा काम सबसे पहले

SJF (शॉर्टेस्ट जॉब फर्स्ट) एक शेड्यूलिंग एल्गोरिदम है जिसमें सबसे कम समय में पूरा होने वाली प्रक्रिया को अगली प्रक्रिया के लिए चुना जाता है। यह शेड्यूलिंग विधि प्रीएम्प्टिव या नॉन-प्रीएम्प्टिव हो सकती है। यह अन्य प्रक्रियाओं के निष्पादन की प्रतीक्षा में लगने वाले औसत प्रतीक्षा समय को काफी कम कर देती है।

एसजेएफ शेड्यूलिंग की विशेषताएं

  • प्रत्येक कार्य को पूरा करने के लिए एक निश्चित समय सीमा निर्धारित होती है।
  • इस विधि में, जब सीपीयू उपलब्ध होता है, तो सबसे कम समय में पूरा होने वाली अगली प्रक्रिया या कार्य को पहले निष्पादित किया जाता है।
  • इसे गैर-पूर्वव्यापी नीति के साथ लागू किया गया है।
  • यह एल्गोरिदम बैच-प्रकार की प्रोसेसिंग के लिए उपयोगी है, जहां कार्यों के पूरा होने की प्रतीक्षा करना महत्वपूर्ण नहीं है।
  • यह छोटे कार्यों को पहले निष्पादित करके कार्य उत्पादन में सुधार करता है, जिनका टर्नअराउंड समय आमतौर पर कम होता है।

बहु-स्तरीय कतार निर्धारण

यह एल्गोरिदम रेडी क्यू को कई अलग-अलग क्यू में विभाजित करता है। इस विधि में, प्रक्रियाओं को उनकी विशिष्ट विशेषताओं, जैसे कि प्रक्रिया की प्राथमिकता, मेमोरी का आकार आदि के आधार पर क्यू में आवंटित किया जाता है।

हालांकि, यह एक स्वतंत्र शेड्यूलिंग एल्गोरिदम नहीं है, क्योंकि इसे जॉब्स को शेड्यूल करने के लिए अन्य प्रकार के एल्गोरिदम का उपयोग करने की आवश्यकता होती है।

बहुस्तरीय कतारों की अनुसूचीकरण की विशेषताएं

  • समान विशेषताओं वाली प्रक्रियाओं के लिए कई कतारें बनाए रखी जानी चाहिए।
  • प्रत्येक कतार का अपना अलग शेड्यूलिंग एल्गोरिदम हो सकता है।
  • प्रत्येक कतार को प्राथमिकताएँ सौंपी जाती हैं।

शेड्यूलिंग एल्गोरिदम का उद्देश्य

शेड्यूलिंग एल्गोरिदम का उपयोग करने के कारण यहां दिए गए हैं:

  • सीपीयू अपनी दक्षता में सुधार के लिए शेड्यूलिंग का उपयोग करता है।
  • यह आपको प्रतिस्पर्धी प्रक्रियाओं के बीच संसाधनों को आवंटित करने में मदद करता है।
  • मल्टीप्रोग्रामिंग के माध्यम से सीपीयू का अधिकतम उपयोग प्राप्त किया जा सकता है।
  • जिन प्रक्रियाओं को निष्पादित किया जाना है, उन्हें रेडी क्यू में रखा जाता है।

अक्सर पूछे जाने वाले प्रश्न

कोई एक सर्वश्रेष्ठ एल्गोरिदम नहीं है। शॉर्टेस्ट जॉब फर्स्ट सबसे कम औसत प्रतीक्षा समय देता है और सिद्ध रूप से इष्टतम है, लेकिन इसके लिए ज्ञात बर्स्ट टाइम की आवश्यकता होती है और यह लंबे समय तक चलने वाले कार्यों को बाधित कर सकता है। राउंड रॉबिन टाइम-शेयरिंग सिस्टम के लिए अधिक निष्पक्ष है।

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

एजिंग एक ऐसी तकनीक है जो लंबे समय से लंबित प्रक्रियाओं की प्राथमिकता को धीरे-धीरे बढ़ाती है। इससे प्राथमिकता-आधारित शेड्यूलिंग में स्टार्वेशन (समय की कमी) से बचा जा सकता है, क्योंकि कम प्राथमिकता वाली प्रक्रिया भी अंततः चलने के लिए पर्याप्त उच्च प्राथमिकता प्राप्त कर लेती है।

कॉन्टेक्स्ट स्विचिंग वर्तमान प्रक्रिया की स्थिति को सहेजता है और पीसीबी से दूसरी प्रक्रिया की स्थिति को लोड करता है, ताकि निष्पादन बाद में फिर से शुरू हो सके। यह विशुद्ध रूप से शेड्यूलिंग ओवरहेड है जिसे डिस्पैचर द्वारा प्रक्रियाओं के बीच प्रत्येक स्विच पर संभाला जाता है।

दीर्घकालिक (जॉब) शेड्यूलर यह नियंत्रित करता है कि रेडी क्यू में कितनी प्रक्रियाएँ प्रवेश करती हैं और मल्टीप्रोग्रामिंग की डिग्री निर्धारित करता है। अल्पकालिक (सीपीयू) शेड्यूलर यह चुनता है कि कौन सी रेडी प्रक्रिया आगे चलेगी और यह कहीं अधिक बार चलता है।

लिनक्स EEVDF शेड्यूलर का उपयोग करता है, जिसने कर्नेल 6.6 में कम्प्लीटली फेयर शेड्यूलर (CFS) को प्रतिस्थापित किया था। Windows यह प्रत्येक प्राथमिकता स्तर के भीतर राउंड-रोबिन टाइम स्लाइसिंग के साथ एक प्रीएम्प्टिव, प्राथमिकता-आधारित शेड्यूलर का उपयोग करता है।

मशीन लर्निंग मॉडल प्रक्रिया के चरम समय का अनुमान लगाते हैं और प्रतीक्षा समय और ऊर्जा खपत को कम करने के लिए शेड्यूलिंग नीतियों को समायोजित या चयनित करते हैं। डेटा केंद्रों, क्लाउड सर्वरों और रीयल-टाइम सिस्टमों के लिए इन एआई-संचालित शेड्यूलरों का अध्ययन किया जा रहा है।

जी हां। GitHub Copilot गैंट चार्ट और प्रतीक्षा समय गणनाओं के साथ-साथ FCFS, SJF, Priority और Round Robin कोड भी उत्पन्न कर सकता है। आउटपुट पर भरोसा करने से पहले हमेशा एज केस, टाई-ब्रेकिंग नियम और औसत समय सूत्रों की जांच कर लें।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: