Priority Scheduling – Non-Preemptive क्या है
Priority Scheduling – Non-Preemptive क्या है?
Priority Scheduling – Non-Preemptive एक प्रकार का CPU Scheduling Algorithm है, जिसका उपयोग ऑपरेटिंग सिस्टम में विभिन्न प्रक्रियाओं (Processes) के CPU समय का प्रबंधन करने के लिए किया जाता है। इस Scheduling तकनीक में प्रत्येक प्रक्रिया को एक प्रायोरिटी (Priority) दी जाती है, और CPU हमेशा सबसे उच्च प्राथमिकता वाली प्रक्रिया को असाइन किया जाता है।
Non-Preemptive का मतलब है कि एक बार जब CPU किसी प्रक्रिया को दे दिया जाता है, तो वह प्रक्रिया पूरा होने तक CPU को छोड़ती नहीं है, चाहे कोई उच्च प्राथमिकता वाली प्रक्रिया कतार में क्यों न हो।
Priority Scheduling के मुख्य तत्व
- प्रक्रिया की प्राथमिकता (Process Priority)
- प्रत्येक प्रक्रिया को एक मान (Number) दिया जाता है।
- कम नंबर = उच्च प्राथमिकता या ज्यादा नंबर = उच्च प्राथमिकता, यह सिस्टम के design पर निर्भर करता है।
- CPU Allocation
- CPU हमेशा उच्च प्राथमिकता वाली प्रक्रिया को पहले असाइन करता है।
- यदि दो प्रक्रियाओं की प्राथमिकता समान है, तो आमतौर पर First-Come-First-Serve (FCFS) नियम लागू होता है।
- Non-Preemptive व्यवहार
- एक बार CPU किसी प्रक्रिया को दे दिया गया, तो वह प्रक्रिया पूरा होने तक CPU पर रहती है।
- नई आने वाली उच्च प्राथमिकता प्रक्रिया का CPU पर कोई असर नहीं होता।
प्रक्रिया की प्राथमिकता (Process Priority) क्या है?
प्रक्रिया की प्राथमिकता (Process Priority) CPU Scheduling का एक महत्वपूर्ण सिद्धांत है, जिसमें प्रत्येक प्रक्रिया (Process) को एक प्राथमिकता स्तर (Priority Level) दिया जाता है। यह प्राथमिकता तय करती है कि CPU किस प्रक्रिया को पहले निष्पादित (Execute) करेगा।
ऑपरेटिंग सिस्टम हमेशा उच्च प्राथमिकता वाली प्रक्रिया को पहले CPU देता है, ताकि महत्वपूर्ण कार्य जल्दी पूरे हो सकें।
हाइलाइट: Process Priority सिस्टम को यह तय करने में मदद करती है कि कौन सा कार्य अधिक महत्वपूर्ण है।
CPU Scheduling में Process Priority की भूमिका
CPU Scheduling का मुख्य उद्देश्य है:
- CPU का अधिकतम उपयोग
- Waiting Time कम करना
- System Responsiveness बढ़ाना
- महत्वपूर्ण कार्यों को प्राथमिकता देना
इन सभी उद्देश्यों को पूरा करने के लिए Process Priority का उपयोग किया जाता है।
प्रक्रिया की प्राथमिकता क्यों आवश्यक है?
प्रक्रिया की प्राथमिकता कई कारणों से आवश्यक है:
- महत्वपूर्ण सिस्टम कार्य पहले पूरे हों
- Real-time operations में देरी न हो
- User experience बेहतर हो
- संसाधनों का संतुलित उपयोग हो
- Multi-tasking सिस्टम में नियंत्रण बना रहे
उदाहरण:
Banking System में Transaction Process को Background Music Player से अधिक प्राथमिकता दी जाती है।
Process Priority के प्रकार
1. Static Priority (स्थिर प्राथमिकता)
- प्राथमिकता पहले से तय होती है
- Execution के दौरान नहीं बदलती
- सरल लेकिन Starvation संभव
2. Dynamic Priority (गतिशील प्राथमिकता)
- प्राथमिकता समय के साथ बदलती है
- Waiting Time के आधार पर बढ़ सकती है
- Starvation कम करती है
- अधिक जटिल लेकिन संतुलित
Process Priority कैसे निर्धारित की जाती है?
ऑपरेटिंग सिस्टम कई कारकों के आधार पर प्राथमिकता तय करता है:
- Process का प्रकार (System vs User)
- Time-critical कार्य
- Memory आवश्यकता
- CPU Usage
- Waiting Time
Aging Technique
Aging Technique: लंबे समय से प्रतीक्षा कर रही प्रक्रिया की प्राथमिकता बढ़ाना।
Process Priority का उदाहरण
मान लीजिए 4 प्रक्रियाएँ हैं:
| Process | Burst Time | Priority |
|---|---|---|
| P1 | 5 | 3 |
| P2 | 2 | 1 |
| P3 | 7 | 4 |
| P4 | 3 | 2 |
Execution क्रम:
- P2 (Priority 1)
- P4 (Priority 2)
- P1 (Priority 3)
- P3 (Priority 4)
Gantt Chart:
| P2 | P4 | P1 | P3 | 0 2 5 10 17
Process Priority के लाभ
- महत्वपूर्ण कार्य जल्दी पूरे होते हैं
- System Efficiency बढ़ती है
- CPU Utilization बेहतर होता है
- User Responsiveness बढ़ती है
- Real-time सिस्टम में उपयोगी
Process Priority की समस्याएँ
- Starvation: Low priority प्रक्रिया को CPU नहीं मिलना
- Complexity बढ़ना (Dynamic Priority में)
- Scheduling overhead
- Predictability कम होना
Process Priority और Starvation
जब High Priority Processes लगातार आती रहती हैं, तो Low Priority Processes लंबे समय तक CPU नहीं पा पातीं।
इस समस्या का समाधान:
- Aging Technique
- Dynamic Priority
- Fair Scheduling
वास्तविक जीवन में Process Priority का उपयोग
- Operating Systems (Windows, Linux, macOS)
- Banking Servers
- Hospital Systems
- Air Traffic Control
- Industrial Automation
- Real-time Embedded Systems
Process Priority बनाम FIFO Scheduling
| Feature | Process Priority | FIFO |
|---|---|---|
| आधार | महत्व | आगमन समय |
| Flexibility | अधिक | कम |
| Efficiency | उच्च | मध्यम |
| Starvation | संभव | नहीं |
Priority Scheduling – Non-Preemptive का उदाहरण
मान लीजिए, हमारे पास चार प्रक्रिया हैं:
| Process | Burst Time | Priority |
|---|---|---|
| P1 | 10 | 3 |
| P2 | 1 | 1 |
| P3 | 2 | 4 |
| P4 | 1 | 2 |
Step 1: सबसे उच्च प्राथमिकता वाली प्रक्रिया P2 (Priority 1) को CPU मिलेगा।
Step 2: P2 खत्म होने के बाद CPU P4 (Priority 2) को मिलेगा।
Step 3: फिर CPU P1 (Priority 3) को देगा।
Step 4: अंत में CPU P3 (Priority 4) को देगा।
Gantt Chart:
| P2 | P4 | P1 | P3 | 0 1 2 12 14
Priority Scheduling – Non-Preemptive के लाभ
- सरल और लागू करने में आसान।
- उच्च प्राथमिकता वाली प्रक्रिया को पहले CPU मिलता है।
- CPU utilization बढ़ाने में मदद करता है।
- छोटे और त्वरित कार्य जल्दी पूरे हो जाते हैं।
Priority Scheduling – Non-Preemptive के नुकसान
- Starvation की समस्या:
- यदि उच्च प्राथमिकता वाली प्रक्रियाएँ लगातार आती रहें, तो निम्न प्राथमिकता वाली प्रक्रियाएँ कभी CPU नहीं पा सकतीं।
- Deadlock की संभावना अधिक होती है यदि सही प्रबंधन न किया जाए।
- Non-Preemptive होने के कारण लो प्रायोरिटी प्रक्रिया का इंतजार लंबा हो सकता है।
Priority Scheduling – Non-Preemptive का उपयोग
- Operating System में Process Management के लिए।
- Real-Time Systems में जहाँ प्राथमिकता महत्वपूर्ण होती है।
- Batch Processing Systems में प्रक्रिया के समय और महत्व के आधार पर Scheduling के लिए।
CPU Allocation क्या है?
CPU Allocation वह प्रक्रिया है जिसके माध्यम से ऑपरेटिंग सिस्टम यह तय करता है कि CPU किस प्रक्रिया (Process) को और कब दिया जाएगा।
किसी भी मल्टीटास्किंग सिस्टम में कई प्रक्रियाएँ एक साथ CPU की मांग करती हैं। CPU Allocation का काम है इन प्रक्रियाओं के बीच संतुलित और कुशल वितरण करना।
हाइलाइट: CPU Allocation तय करता है कि कौन सी प्रक्रिया CPU का उपयोग करेगी और कितनी देर तक करेगी।
CPU Allocation क्यों आवश्यक है?
CPU Allocation के बिना सिस्टम में अव्यवस्था हो जाएगी। इसकी आवश्यकता इसलिए है:
- CPU का अधिकतम उपयोग
- Waiting Time कम करना
- System Performance बढ़ाना
- Fairness बनाए रखना
- Multitasking को संभव बनाना
- महत्वपूर्ण कार्यों को प्राथमिकता देना
CPU Allocation कैसे काम करता है?
CPU Allocation मुख्य रूप से CPU Scheduler द्वारा नियंत्रित होता है।
प्रक्रिया:
- सभी प्रक्रियाएँ Ready Queue में रहती हैं
- Scheduler अगली प्रक्रिया चुनता है
- CPU चुनी गई प्रक्रिया को दिया जाता है
- प्रक्रिया Execution के बाद CPU छोड़ती है
- अगली प्रक्रिया को CPU मिलता है
CPU Allocation और CPU Scheduling का संबंध
CPU Allocation, CPU Scheduling का एक महत्वपूर्ण हिस्सा है।
- CPU Scheduling = निर्णय लेना
CPU Allocation = CPU देना
Scheduling तय करता है कौन, Allocation तय करता है कब और कैसे
CPU Allocation के प्रकार
1. Preemptive CPU Allocation
- CPU प्रक्रिया से वापस लिया जा सकता है
- नई High Priority प्रक्रिया को दिया जा सकता है
- Real-time सिस्टम में उपयोगी
उदाहरण: Round Robin, Priority Scheduling (Preemptive)
2. Non-Preemptive CPU Allocation
- प्रक्रिया CPU छोड़ती नहीं जब तक पूरी न हो
- सरल लेकिन कम flexible
उदाहरण: FCFS, Non-Preemptive Priority
CPU Allocation का उदाहरण
मान लीजिए 3 प्रक्रियाएँ हैं:
| Process | Burst Time |
|---|---|
| P1 | 5 |
| P2 | 3 |
| P3 | 2 |
Execution क्रम (FCFS Allocation):
| P1 | P2 | P3 | 0 5 8 10
CPU Allocation क्रम Arrival के अनुसार हुआ।
CPU Allocation के लक्ष्य
एक अच्छा CPU Allocation सिस्टम:
- CPU Idle Time कम करे
- Throughput बढ़ाए
- Response Time कम करे
- Fairness बनाए रखे
- Starvation रोके
CPU Allocation के लाभ
- बेहतर System Performance
- Multi-user Support
- Efficient Resource Management
- Smooth Multitasking
- Real-time Execution Support
CPU Allocation की समस्याएँ
- Starvation
- Deadlock की संभावना
- Context Switching Overhead
- Priority Conflict
- Scheduling Complexity
वास्तविक जीवन में CPU Allocation
CPU Allocation का उपयोग:
- Windows / Linux / macOS
- Mobile Operating Systems
- Banking Servers
- Cloud Computing
- Embedded Systems
- AI Processing Systems
CPU Allocation बनाम Memory Allocation
| Feature | CPU Allocation | Memory Allocation |
|---|---|---|
| संसाधन | Processor Time | RAM |
| उद्देश्य | Execution Control | Storage Control |
| प्रबंधन | Scheduler | Memory Manager |
Non-Preemptive व्यवहार क्या है?
Non-Preemptive व्यवहार CPU Scheduling की वह तकनीक है जिसमें एक बार CPU किसी प्रक्रिया (Process) को दे दिया जाता है, तो वह प्रक्रिया पूरा होने तक CPU को नहीं छोड़ती।
इसका मतलब है कि ऑपरेटिंग सिस्टम बीच में CPU वापस नहीं ले सकता, चाहे कोई अधिक महत्वपूर्ण प्रक्रिया कतार में आ जाए।
हाइलाइट: Non-Preemptive सिस्टम में चल रही प्रक्रिया को रोका नहीं जा सकता।
Non-Preemptive व्यवहार का मूल सिद्धांत
Non-Preemptive Scheduling का आधार बहुत सरल है:
- एक प्रक्रिया CPU प्राप्त करती है
- वह पूरा होने तक चलती है
- उसके बाद ही अगली प्रक्रिया को CPU मिलता है
इससे Execution Order स्थिर और Predictable रहता है।
Non-Preemptive व्यवहार क्यों महत्वपूर्ण है?
- Context Switching कम होता है
- System Stability बढ़ती है
- Implementation आसान है
- CPU Overhead कम होता है
- Predictable Execution मिलता है
यह विशेष रूप से Batch Processing Systems में उपयोगी है।
Non-Preemptive Scheduling कैसे काम करता है?
- सभी प्रक्रियाएँ Ready Queue में रहती हैं
- Scheduler अगली प्रक्रिया चुनता है
- प्रक्रिया CPU प्राप्त करती है
- प्रक्रिया पूरा होने तक CPU नहीं छोड़ेगी
- फिर अगली प्रक्रिया को CPU मिलेगा
Non-Preemptive व्यवहार का उदाहरण
मान लीजिए 3 प्रक्रियाएँ हैं:
| Process | Burst Time |
|---|---|
| P1 | 5 |
| P2 | 3 |
| P3 | 2 |
Execution क्रम:
| P1 | P2 | P3 | 0 5 8 10
यहाँ P1 पूरा चलने के बाद ही P2 शुरू हुआ।
Non-Preemptive Scheduling के प्रकार
- FCFS (First Come First Serve)
- Non-Preemptive Priority Scheduling
- Shortest Job First (Non-Preemptive)
इन सभी में प्रक्रिया को बीच में रोका नहीं जाता।
Non-Preemptive व्यवहार के लाभ
- Implementation आसान
- Context Switching कम
- CPU Overhead कम
- Stable Execution
- Debugging आसान
Non-Preemptive व्यवहार की समस्याएँ
- Long Waiting Time
- Low Priority Processes का Delay
- System Responsiveness कम
- Real-time सिस्टम के लिए उपयुक्त नहीं
- Starvation की संभावना
Non-Preemptive बनाम Preemptive व्यवहार
| Feature | Non-Preemptive | Preemptive |
|---|---|---|
| CPU वापस लेना | संभव नहीं | संभव |
| Flexibility | कम | अधिक |
| Responsiveness | कम | अधिक |
| Complexity | कम | अधिक |
| Overhead | कम | अधिक |
Non-Preemptive व्यवहार का उपयोग
- Batch Processing Systems
- Simple Embedded Systems
- Offline Processing
- Legacy Operating Systems
- Educational Systems
निष्कर्ष
Priority Scheduling – Non-Preemptive एक महत्वपूर्ण CPU Scheduling तकनीक है, जो प्रक्रियाओं को उनके महत्व या प्राथमिकता के आधार पर क्रमबद्ध करता है। यह सरल और प्रभावी है, लेकिन Starvation और Low Priority Process Delay जैसी समस्याएँ हो सकती हैं।
Leave a Reply