पूर्वनिर्णयात्मक और गैर-पूर्वनिर्णयात्मक शेड्यूलिंग
प्रीमेप्टिव और नॉन-प्रीमेप्टिव शेड्यूलिंग के बीच मुख्य अंतर
- प्रीमेप्टिव शेड्यूलिंग में, CPU को एक विशिष्ट समय अवधि के लिए प्रक्रियाओं को आवंटित किया जाता है, और गैर-प्रीमेप्टिव शेड्यूलिंग CPU को प्रक्रिया को तब तक आवंटित किया जाता है जब तक कि वह समाप्त न हो जाए।
- प्रीमेप्टिव शेड्यूलिंग में कार्यों को प्राथमिकता के आधार पर स्विच किया जाता है, जबकि गैर-प्रीमेप्टिव शेड्यूलिंग में कोई स्विचिंग नहीं होती है।
- प्रीमेप्टिव एल्गोरिथ्म में प्रक्रिया को तैयार अवस्था से चालू अवस्था में स्विच करने का ओवरहेड होता है, जबकि नॉन-प्रीमेप्टिव शेड्यूलिंग में स्विचिंग का ऐसा कोई ओवरहेड नहीं होता है।
- प्रीमेप्टिव शेड्यूलिंग लचीली होती है, जबकि नॉन-प्रीमेप्टिव शेड्यूलिंग कठोर होती है।

प्रीमेप्टिव शेड्यूलिंग क्या है?
प्रीमेप्टिव शेड्यूलिंग एक शेड्यूलिंग विधि है जिसमें कार्यों को अधिकतर उनकी प्राथमिकताओं के साथ असाइन किया जाता है। कभी-कभी किसी उच्च प्राथमिकता वाले कार्य को किसी अन्य निम्न प्राथमिकता वाले कार्य से पहले चलाना महत्वपूर्ण होता है, भले ही निम्न प्राथमिकता वाला कार्य अभी भी चल रहा हो।
उस समय, निम्न प्राथमिकता वाला कार्य कुछ समय के लिए रुका रहता है तथा उच्च प्राथमिकता वाले कार्य के पूरा हो जाने पर पुनः शुरू हो जाता है।
नॉन-प्रीमेप्टिव शेड्यूलिंग क्या है?
इस प्रकार की शेड्यूलिंग विधि में, CPU को एक विशिष्ट प्रक्रिया को आवंटित किया गया है। जो प्रक्रिया CPU को व्यस्त रखती है, वह संदर्भ स्विच करके या समाप्त करके CPU को रिलीज़ कर देगी।
यह एकमात्र तरीका है जिसका इस्तेमाल विभिन्न हार्डवेयर प्लेटफ़ॉर्म के लिए किया जा सकता है। ऐसा इसलिए है क्योंकि इसमें प्रीमेप्टिव शेड्यूलिंग जैसे विशेष हार्डवेयर (उदाहरण के लिए, टाइमर) की ज़रूरत नहीं होती है।
गैर-प्रीएम्टिव शेड्यूलिंग तब होती है जब कोई प्रक्रिया स्वेच्छा से प्रतीक्षा अवस्था में प्रवेश करती है या समाप्त हो जाती है।
प्रीमेप्टिव बनाम नॉन-प्रीमेप्टिव शेड्यूलिंग: तुलना तालिका
यहाँ प्रीमेप्टिव बनाम नॉन-प्रीमेप्टिव शेड्यूलिंग की आमने-सामने की तुलना दी गई है। OS में प्रीमेप्टिव और नॉन-प्रीमेप्टिव शेड्यूलिंग के बीच मुख्य अंतर इस प्रकार हैं:
| प्रीमेप्टिव शेड्यूलिंग | गैर-प्रीमेप्टिव शेड्यूलिंग |
|---|---|
| किसी भी वर्तमान प्रक्रिया के निष्पादन के बीच में प्रोसेसर को विभिन्न प्रक्रियाओं को निष्पादित करने के लिए रोका जा सकता है। | एक बार जब प्रोसेसर अपना निष्पादन शुरू कर देता है, तो उसे दूसरे को निष्पादित करने से पहले इसे पूरा करना होगा। इसे बीच में रोका नहीं जा सकता। |
| सीपीयू उपयोग गैर-प्रीएम्टिव शेड्यूलिंग की तुलना में अधिक कुशल है। | प्रीमेप्टिव शेड्यूलिंग की तुलना में CPU उपयोग कम कुशल है। |
| पूर्वनिर्धारित शेड्यूलिंग में प्रतीक्षा और प्रतिक्रिया समय कम होता है। | गैर-प्रीमेप्टिव शेड्यूलिंग विधि का प्रतीक्षा और प्रतिक्रिया समय अधिक होता है। |
| प्रीमेप्टिव शेड्यूलिंग को प्राथमिकता दी जाती है। सर्वोच्च प्राथमिकता वाली प्रक्रिया वह प्रक्रिया है जो वर्तमान में उपयोग में लाई जा रही है। | जब कोई भी प्रक्रिया चलने की स्थिति में प्रवेश करती है, तो उस प्रक्रिया की स्थिति शेड्यूलर से तब तक नहीं हटाई जाती जब तक कि वह अपना कार्य समाप्त नहीं कर लेती। |
| पूर्वनिर्धारित समय-निर्धारण लचीला है। | गैर-निवारक शेड्यूलिंग कठोर है। |
| उदाहरण:- सबसे कम समय शेष रहने पर प्रथम, राउंड रॉबिन, आदि। | उदाहरण: पहले आयें पहले पायें, सबसे छोटा काम पहले, प्राथमिकता निर्धारण, आदि। |
| प्रीमेप्टिव शेड्यूलिंग एल्गोरिदम को प्रीमेप्टिव किया जा सकता है अर्थात प्रक्रिया को शेड्यूल किया जा सकता है | गैर-प्रीमेप्टिव शेड्यूलिंग प्रक्रिया को शेड्यूल नहीं किया जा सकता |
| इस प्रक्रिया में, सीपीयू को एक विशिष्ट समय अवधि के लिए प्रक्रियाओं को आवंटित किया जाता है। | इस प्रक्रिया में, CPU को प्रक्रिया को तब तक आवंटित किया जाता है जब तक कि वह समाप्त नहीं हो जाती या प्रतीक्षा अवस्था में नहीं चली जाती। |
| प्रीमेप्टिव एल्गोरिथ्म में प्रक्रिया को तैयार अवस्था से चालू अवस्था में तथा इसके विपरीत स्विच करने का ओवरहेड होता है। | गैर-प्रीमेप्टिव शेड्यूलिंग में प्रक्रिया को चालू अवस्था से तैयार अवस्था में बदलने का कोई ओवरहेड नहीं होता है। |
पूर्वनिर्धारित शेड्यूलिंग के लाभ
यहां, प्रीमेप्टिव शेड्यूलिंग विधि के पक्ष/लाभ दिए गए हैं:
- प्रीमेप्टिव शेड्यूलिंग विधि अधिक मजबूत है, इसलिए एक प्रक्रिया सीपीयू पर एकाधिकार नहीं कर सकती है
- प्रत्येक व्यवधान के बाद चल रहे कार्य के विकल्प पर पुनर्विचार किया गया।
- प्रत्येक घटना चल रहे कार्यों में रुकावट पैदा करती है
- ऑपरेटिंग सिस्टम यह सुनिश्चित करता है कि सभी चल रही प्रक्रियाओं में CPU का उपयोग समान हो।
- इसमें CPU का उपयोग समान होगा, अर्थात सभी चल रही प्रक्रियाएं CPU का समान रूप से उपयोग करेंगी।
- यह शेड्यूलिंग विधि औसत प्रतिक्रिया समय को भी सुधारती है।
- प्रीमेप्टिव शेड्यूलिंग तब लाभदायक होती है जब हम इसका उपयोग बहु-प्रोग्रामिंग वातावरण के लिए करते हैं।
गैर-पूर्वनिर्धारित शेड्यूलिंग के लाभ
यहां, गैर-प्रीमेप्टिव शेड्यूलिंग विधि के पक्ष/लाभ दिए गए हैं:
- कम शेड्यूलिंग ओवरहेड प्रदान करता है
- उच्च थ्रूपुट प्रदान करने की प्रवृत्ति रखता है
- यह वैचारिक रूप से बहुत सरल विधि है
- Less शेड्यूलिंग के लिए कम्प्यूटेशनल संसाधनों की आवश्यकता
पूर्वनिर्धारित शेड्यूलिंग के नुकसान
पूर्वनिर्धारित समय-निर्धारण की कमियां निम्नलिखित हैं:
- शेड्यूलिंग के लिए सीमित कम्प्यूटेशनल संसाधनों की आवश्यकता है
- चल रहे कार्य को स्थगित करने, संदर्भ बदलने, तथा नए आने वाले कार्य को भेजने में शेड्यूलर को अधिक समय लगता है।
- यदि कुछ उच्च प्राथमिकता वाली प्रक्रियाएं लगातार आती रहती हैं, तो कम प्राथमिकता वाली प्रक्रिया को अधिक समय तक प्रतीक्षा करनी पड़ती है।
गैर-प्रीमेप्टिव शेड्यूलिंग के नुकसान
यहां, गैर-प्रीमेप्टिव शेड्यूलिंग विधि के नुकसान/खामियां दी गई हैं:
- इससे भूखमरी हो सकती है, खासकर वास्तविक समय के कार्यों के लिए
- बग के कारण मशीन ठप्प हो सकती है
- यह वास्तविक समय और प्राथमिकता निर्धारण मुश्किल
- प्रक्रियाओं के लिए खराब प्रतिक्रिया समय
गैर-प्रीमेप्टिव शेड्यूलिंग का उदाहरण
गैर-प्रीएम्टिव एसजेएफ शेड्यूलिंग में, एक बार सीपीयू चक्र को प्रक्रिया के लिए आवंटित कर दिया जाता है, तो प्रक्रिया उसे तब तक रोक कर रखती है जब तक वह प्रतीक्षा अवस्था में नहीं पहुंच जाती या समाप्त नहीं हो जाती।
निम्नलिखित पांच प्रक्रियाओं पर विचार करें जिनमें से प्रत्येक का अपना विशिष्ट विस्फोट समय और आगमन समय है।
| प्रक्रिया कतार | बर्स्ट टाइम | आने का समय |
|---|---|---|
| P1 | 6 | 2 |
| P2 | 2 | 5 |
| P3 | 8 | 1 |
| P4 | 3 | 0 |
| P5 | 4 | 4 |
चरण 0) समय=0 पर, P4 आता है और निष्पादन शुरू करता है।
चरण 1) समय = 1 पर, प्रक्रिया P3 आती है। लेकिन, P4 को अभी भी पूरा होने के लिए 2 निष्पादन इकाइयों की आवश्यकता है। यह निष्पादन जारी रखेगा।
चरण 2) समय =2 पर, प्रक्रिया P1 आती है और प्रतीक्षा कतार में जुड़ जाती है। P4 निष्पादन जारी रखेगा।
चरण 3) समय = 3 पर, प्रक्रिया P4 अपना निष्पादन समाप्त कर लेगी। P3 और P1 के बर्स्ट समय की तुलना की जाती है। प्रक्रिया P1 को निष्पादित किया जाता है क्योंकि इसका बर्स्ट समय P3 की तुलना में कम है।
चरण 4) समय = 4 पर, प्रक्रिया P5 आती है और प्रतीक्षा कतार में जुड़ जाती है। P1 निष्पादन जारी रखेगा।
चरण 5) समय = 5 पर, प्रक्रिया P2 आती है और प्रतीक्षा कतार में जुड़ जाती है। P1 निष्पादन जारी रखेगा।
चरण 6) समय = 9 पर, प्रक्रिया P1 अपना निष्पादन समाप्त कर लेगी। P3, P5 और P2 के बर्स्ट समय की तुलना की जाती है। प्रक्रिया P2 निष्पादित होती है क्योंकि इसका बर्स्ट समय सबसे कम है।
चरण 7) समय=10 पर, P2 निष्पादित हो रहा है, तथा P3 और P5 प्रतीक्षा कतार में हैं।
चरण 8) समय = 11 पर, प्रक्रिया P2 अपना निष्पादन समाप्त कर लेगी। P3 और P5 के बर्स्ट समय की तुलना की जाती है। प्रक्रिया P5 को निष्पादित किया जाता है क्योंकि इसका बर्स्ट समय कम है।
चरण 9) समय = 15 पर, प्रक्रिया P5 अपना निष्पादन समाप्त कर देगी।
चरण 10) समय = 23 पर, प्रक्रिया P3 अपना निष्पादन समाप्त कर देगी।
चरण 11) आइये उपरोक्त उदाहरण के लिए औसत प्रतीक्षा समय की गणना करें।
Wait time P4= 0-0=0 P1= 3-2=1 P2= 9-5=4 P5= 11-4=7 P3= 15-1=14 Average Waiting Time= 0+1+4+7+14/5 = 26/5 = 5.2
पूर्व-निर्धारित शेड्यूलिंग का उदाहरण
इसमें निम्नलिखित तीन प्रक्रियाओं पर विचार करें राउंड रोबिन
| प्रक्रिया कतार | बर्स्ट टाइम |
|---|---|
| P1 | 4 |
| P2 | 3 |
| P3 | 5 |
चरण 1) निष्पादन प्रक्रिया P1 से शुरू होता है, जिसका बर्स्ट समय 4 है। यहाँ, प्रत्येक प्रक्रिया 2 सेकंड के लिए निष्पादित होती है। P2 और P3 अभी भी प्रतीक्षा कतार में हैं।
चरण 2) समय =2 पर, P1 को कतार के अंत में जोड़ दिया जाता है और P2 निष्पादित करना शुरू कर देता है
चरण 3) समय=4 पर, P2 को पहले से ही हटा दिया जाता है और कतार के अंत में जोड़ दिया जाता है। P3 निष्पादन शुरू करता है।
चरण 4) समय=6 पर, P3 को पहले से ही हटा दिया जाता है और कतार के अंत में जोड़ दिया जाता है। P1 निष्पादन शुरू करता है।
चरण 5) समय=8 पर, P1 का बर्स्ट समय 4 है। इसने निष्पादन पूरा कर लिया है। P2 निष्पादन शुरू करता है
चरण 6) P2 का बर्स्ट समय 3 है। यह पहले ही 2 अंतराल के लिए निष्पादित हो चुका है। समय = 9 पर, P2 निष्पादन पूरा करता है। फिर, P3 निष्पादन शुरू करता है जब तक कि यह पूरा न हो जाए।
चरण 7) आइये उपरोक्त उदाहरण के लिए औसत प्रतीक्षा समय की गणना करें।
Wait time P1= 0+ 4= 4 P2= 2+4= 6 P3= 4+3= 7


















