Memory Management in Operating System ऑपरेटिंग सिस्टम में मेमोरी मैनेजमेंट
मैमोरी (Memory)
Memory (मैमोरी) कम्प्यूटर सिस्टम में स्टोरेज को संदर्भित करता है। अर्थात् मेमोरी कम्प्यूटर सिस्टम में Data को Store करने हेतु प्रयुक्त होती है।
कम्प्यूटर उस डाटा को बदल सकता है जो Main Memory में है, इसलिए ही यूजर द्वारा एक्जिक्यूट किया गया प्रत्येक प्रोग्राम और यूजर द्वारा एक्सेस की जाने वाली प्रत्येक फाइल को स्टोरेज डिवाइस (Storage device) से Main memory में कॉपी किया जाता है। नोट- मुख्य मेमोरी (Main Memory) प्रोसेसर से जुड़ी होती है, इसलिए निर्देशों और सूचनाओं को प्रोसेसर के अंदर और बाहर ले जाना बहुत तेज होता है।
मैमोरी मैनेजमेंट (Memory Management)
Memory Management आपरेटिंग सिस्टम का एक फंक्शन होती है। मेमोरी मैनेजमेंट द्वारा सिस्टम की प्राइमरी मैमोरी या Main Memory को हैंडल किया जाता है-
मैमोरी मैनेजमेंट एक ऐसी प्रोसेस होती है जिसके द्वारा Memory को कंट्रोल एवं कॉर्डिनेट (Control and coordinate) किया जाता मैमोरी एक्जिक्यूशन (Memory execution) के दौरान किसी भी
Process को Main Memory एवं disc के बीच back word एवं Forward Move करने का कार्य मैमोरी मैनेजमेंट द्वारा ही होता है। Memory Management यह निर्धारित (decide) करता है कि-
1. किस प्रोसेस को कितने समय पर कितनी मैमोरी देने (Allocate) करने की आवश्यकता है।
2. मैमोरी मैनेजमेंट किसी मैमोरी लोकेशन को ट्रेक करता है चाहे फिर वह किसी Process को allocate किया गया हो या free हो । यह नियमित रूप से विभिन्न एप्लिकेशन्स हेतु स्थान आवंटित करने में मदद करता है।
4. यह तकनीक मैमोरी Inventory का ट्रेक रखती है जब भी मेमोरी मुक्त (free) या आवंटित (Allocate) होती है तो यह स्थिति को अपडेट करता है। 5. मैमोरी मैनेजमेंट किसी मैमोरी को इस प्रकार रखने में मदद करता है कि उस मेमोरी का भरपुर उपयोग (Proper Utilization) हो सके।
मेमोरी-मैनेजमेंट तकनीकें
(Memory Management Techniques) ܀ कम्प्यूटर मैमोरी के मैनेजमेंट हेतु विभिन्न प्रकार की मैमोरी मैनेजमेंट तकनीक (Memory Management Technique) प्रयुक्त होती है’ जो निम्नानुसार है-
1. स्वैपिंग (Swapping) – जब एक प्रोसेस (Process) को Main Memory में लाना जरूरी होता है, लेकिन उस प्रोसेस को स्थान देने के लिए मुख्य मैमोरी में Sufficient Memory Space उपलब्ध नहीं होता है तब मुख्य मैमोरी से एक ऐसी
प्रोसेस जिसकी प्रायोरिटी कम होती है, उसे निकालकर सैकण्डरी मेमोरी/बैंकिंग स्टोरेज में स्टोर कर दिया जाता है एवं उस आवश्यक प्रोसेस को एक्जिक्यूशन हेतु मेमोरी में लाया जाता है। मुख्य मेमोरी से एक प्रोसेस को निकालकर बैंकिग स्टोरेज में स्टोर करने एवं मुख्य मेमोरी में अन्य प्रोसेस को लोड करने के चरणों को स्वैपिंग (Swapping) कहा गया है।
नोट-
1. बैंकिग स्टोरेज को ही Swap space कहा जाता है।
2. जब एक प्रोसेस को मुख्य मेमोरी में लाया जाता है तो इसे स्वेप इन (Swap in) कहा जाता है।
3. जब एक प्रोसेस को मुख्य मैमोरी से बैकिंग स्टोरेज में लाया जाता है तो इसे Swap-out कहा जाता है।
स्वेप टाइम (Swap time )—एक प्रोसेस (process) को स्वेप-आउट करने एवं इसके पश्चात एक अन्य प्रोसेस को स्वेप-इन करने के लिए आवश्यक समय को स्वेप टाइम (swap time) कहा जाता है।
स्वेप टाइम प्रोसेस की Transfer rate एवं Process की size पर निर्भर करता है। यदि किसी प्रोसेस का आकार छोटा है एवं ट्रांसफर रेट अधिक है तो स्वेप टाइम बहुत कम होगा।
ऑपरेटिंग सिस्टम में सी.पी.यू शेडयूलिंग [C.P.U. Scheduling in Operating System]
CPU शेडयूलिंग एक ऐसी प्रक्रिया है जो किसी प्रक्रिया (Process) को करने के लिए CPU का उपयोग करने की अनुमति प्रदान पूरा करता है, जब एक Process CPU का उपयोग कर रही है, Resources की कमी होने के कारण अन्य प्रोसेस को होल्ड (Hold) करके रखा जाता है। इस प्रकार शेडयूलिंग द्वारा CPU का पूर्ण
उपयोग होता है एवं System Fast & efficient बनता है। CPU Scheduling द्वारा जब CPU idle state में होता है तो ऑपरेटिंग सिस्टम Ready Queue में से किसी Process को एक्जिक्यूशन के लिए Select करता है।
नोट—किसी भी Process को सिलेक्ट करने का कार्य Short Term Schedular / CPU Schedular के द्वारा किया जाता है। Run हो रही प्रोसेस जब I/O ऑपरेशन के लिए Reqeust करती है। तो इसे running से waiting state में डाल दिया जाता है। नोट- जब एक प्रोसेस Waiting में होती है तो शॉर्ट टर्म शेडयूलर किसी अन्य Process को ready queue से pick करके CPU को
असाइन कर देता है, यह प्रक्रिया context switching कहलाती है। शेड्यूलिंग के प्रकार (Types of Scheduling) CPU शेड्यूलिंग को मुख्यतः दो प्रकारों में वर्गीकृत किया गया है।
1. प्रिएम्पटिव शेड्यूलिंग (Preemptive Scheduling)— Preemptive प्रकार की शेडयूलिंग में किसी भी टास्क को उसकी प्राथमिकता (Priority) के अनुसार assign किया जाता है। जैसे— यदि कोई low priority task पहले से रन हो रही है एवं यदि high priority टास्क प्राप्त होता है तो जो lower priority task पहले से रन हो रहा है उसको होल्ड (hold) कर दिया जाता है और इस high priority task को पूरा किया जाता है तथा जब high priority task पूर्ण हो जाती है तो फिर से lower priority task को रन किया जाता है।
नोट शेड्यूलिंग उन Systems के लिए विशेष उपयोगी है जिनमें उच्च वरीयता प्रोसेस (High Priority Process) की Fast Processing की आवश्यकता होती है।
शेड्यूलिंग एल्गोरिथम (Scheduling algorithm)
ऑपरेटिंग सिस्टम में विभिन्न प्रोसेस को शेड्यूल (Schedule) करने हेतु प्रोसेस शेड्यूलर प्रयुक्त होता है, प्रोसेस शेड्यूलर यह निर्धारित
करता है कि प्रोसेस को CPU को कब असाइन किया जाना है। शेड्यूलर द्वारा किया जा रहा शेड्यूलिंग का कार्य शेड्यूलिंग एल्गोरिथम पर आधारित होता है।
प्रोसेसेस का शेडयूल करने हेतु प्रयुक्त प्रमुख शेडयूलिंग एल्गोरिथम (Scheduling Aglorithm ) निम्नानुसार है— 1. फर्स्ट कम फर्स्ट सर्व (FCFS) एल्गोरिथम-(First Come First Serve (FCFS) algorithm )
यह सबसे साधारण CPU Scheduling Algorithm होता है। इस एल्गोरिथम की अवधारणा के अनुसार जो प्रोसेस/जॉब रेडी क्यू (ready queue) में पहले आता है, उसे CPU के द्वारा एक्जिक्यूट भी सबसे पहले किया जाता है, अर्थात् जो Process सबसे पहले Reqest करती है, उस प्रोसेस को ही CPU मिल पाता है।
यह एक नॉन-प्रिएम्पटिव शेडयूलिंग एल्गोरिथम होता है। इस शेडयूलिंग एल्गोरिथम में Waiting time बहुत अधिक होता है, क्योंकि जब अनेक प्रोसेस wait state में होते हैं एवं उनके पहले जो प्रोसेस हो रही है वो बहुत बड़ी है तो अन्य प्रोसेस को wait ही करना पड़ेगा, इसलिए इसमें Average waiting time बहुत अधिक होता है।
Waiting time अधिक होने के कारण इसकी Performance कम
होती है। इस प्रकार के एल्गोरिथम के उदाहरण बिल भुगतान काउन्टर, टिकट काउन्टर आदि होते हैं जो व्यक्ति पहले आता है उसे facility भी पहले मिलती है, उसी प्रकार जो process सबसे पहले आती है, उसकी प्रोसेसिंग प्रक्रिया भी सबसे पहले होती है।
2. शॉर्टस्ट जॉब फर्स्ट शेडयूलिंग (Shortest-Job First Scheduling)
इस प्रकार की शेडयूलिंग में जो प्रोसेस सबसे कम समय में पूरा हो जायेगा अर्थात् जिस प्रोसेस को पूरा होने में सबसे कम समय लगेग, उसे सबसे पहले एक्जिक्यूट किया जायेगा।
इस प्रकार के एल्गोरिथम को Shortest Job-Next (SJN) भी कहा जाता है। यह Algorithm FCFS से तेज है। * इसमें एल्गोरिथम की प्रकृति Non-Premptive होती है। इसमें Burst time के आधार पर CPU allocate किया जाता है।
3. Shortest Remaining time Scheduling (SRT) यह Shortest Job First (SJF) शेडयूलिंग का Premptive वर्जन है।
इस प्रकार की शेडयूलिंग में CPU उस जॉब को ही असाइन किया जाता है, जो जॉब पूरा होने के बिल्कुल नजदीक है। यदि कोई नया जॉब रेडी क्यू में आ जाता है। और उस जॉब को पूरा होने के लिए जो पुरानी process है’ उससे कम समय चाहिए तो उस समय पुरानी जॉब को प्रिएक्यटिव कर दिया जाता है।
4. राउण्ड – रॉबिन शेडयूलिंग (Round-Robin Scheduling) राउण्ड – रॉबिन शेडयूलिंग टाइम-शेयरिंग सिस्टम्स के लिए डिजाइन की गई शेडयूलिंग है, इस शेडयूलिंग को सर्वाधिक काम में लिया जाता है। इस प्रकार के शेडयूलिंग एल्गोरिथम में हर प्रोसेस को एक्जिक्यूट होने के लिए एक निश्चित समय दिया जाता है, जिसे time slice(टाइम स्लाइस) या क्वांटम (Quantum) कहा जाता है। इसमें सभी process को पहले से डिफाइंड time के लिए CPU को allocate किया जाता है। इस predefined time को ही time- slice कहते हैं।
यदि process इस time slice के अन्दर पूरा हो जाता है तो दूसरे process को execute किया जाता है। अगर process पूरा नहीं होता है तो वह preempted हो जाता है अर्थात् इस process को वापस पीछे (rear end) में भेज दिया जाता है और अगले execute किया जाता है। process को
इस प्रकार की शेडयूलिंग में प्रोसेसेस को FCFS के जाता है। अनुसार भेजा यदि कोई प्रोसेस उसे दिए गए टाइम स्लाइस से पहले पूर्ण नहीं होती है तो इसे पीछे की ओर रेडी क्यू (Ready Queue) में भेज दिया जाता है एवं लाइन में अगली प्रोसेस को CPU के लिए भेज दिया जाता है।
राउण्ड रॉबिन शेडयूलिंग की परफॉर्मेस पूर्णतया टाइम स्लाइस या क्वांटम टाइम पर निर्भर करती है। Round Robin Scheduling Shortest Job First T
Preemptive Version यह scheduling FCFS की तरह ही समान है परन्तु round-robin में time-sharing कांसेप्ट का प्रयोग किया जाता है
प्रायोरिटी शेड्यूलिंग (Priority Scheduling)
इस scheduling में, सभी process को एक priority दी जाती है तथा highest priority वाले process को सबसे पहले CPU allocate किया जाता है। अगर दो process की process priority समान होगी तो तब उनके मध्य FCFS scheduling की जाती है।
नॉन प्रिएम्पटिव शेड्यूलिंग (Non-Preemptive Scheduling) नॉन प्रिएम्पटिव शेड्यूलिंग में CPU को कोई specific process allocate कर दी जाती है। यह प्रोसेस CPU को तब तक busy रखती है जब तक या तो process को terminate ना कर दिया जाए।
इस method के लिए special hardware की आवश्यकता नहीं होती है, इसलिए इस method को विभिन्न हार्डवेयर platform में इस्तेमाल किया जाता है। शेड्यूलिंग एल्गोरिथम की तुलना करने हेतु निम्नलिखित मापदण्ड शामिल होता है—
CPU Utilization
Throughput
Turn around time Waiting time
Response time
डैडलॉक (Deadlock)
ऑपरेटिंग सिस्टम के अन्तर्गत डैडलॉक (Deadlock) वो condition है, जिसमें दो या दो से अधिक process को अपना execution पूरा करने के लिए resource की आवश्यकता होती है परन्तु उन resource को किसी दूसरे process के द्वारा hold किया गया होता है, जिस कारण process का execution पूरा नहीं हो पाता।
Deadlock ऑपरेटिंग सिस्टम में होने वाली स्थिति है, जिसमें कोई भी प्रोसेस (process) waiting state में चली जाती है, क्योंकि किसी अन्य process के द्वारा resource को hold किया गया होता है। जैसे – 3 विद्यार्थी चित्र बनाने का कार्य कर रहे हैं, उनके पास लाल (Red), हरे (Green) और नीले (Blue) रंग की पेन्सिल है। Student 1 लाल पेन्सिल, Student 2 हरी पेन्सिल, Student 3 नीली पेन्सिल चुनते हैं परन्तु वापस तभी करेंग जब वे चित्र पूरा बना लेंगे।
माना Student 1 लाल पेन्सिल, Student 2 हरी पेन्सिल, Student 3 नीली पेन्सिल चुनते हैं। अब Student 1 को हरी पेन्सिल की जरूरत है, जो की Student 2 के पास है लेकिन Student 2 नीली पेन्सिल की प्रतीक्षा कर रहा है जो Student 1 के पास है। इस स्थिति के कारण ये होगा की कोई भी चित्र को पूर्ण नहीं कर पाएगा क्योंकि सभी के पास 1-1 पेन्सिल है तथा वे सभी दूसरे की पेन्सिल की प्रतीक्षा कर रहे हैं। यह उदाहरण computer system के समान है जहाँ student process माना जा सकता है तथा पेन्सिल को संसाधन माना जा सकता है।
डैडलॉक की शर्तें (Conditions of Deadlock) Deadlock में चार कंडीशन होती है—
1. Mutual exclusion
2. Hold & wait 4. Circular wait
1. Mutual exclusion – इस condition में एक कोई ऐसा resource No Preemption होता है, जिसे processes के मध्य share ना किया जा सके उस स्थिति में mutual exclusion को होने से नहीं रोका जा सकता है।
2. Hold & Wait – इसम process एक resource को hold किए रहता है, जबकि दूसरे resource के लिए wait करता है।
3. No Preemption —ऐसा Resource जो किसी Process के लिए A allocate हो जाता है, उसे forcefully किसी दूसरी process को A allocate नहीं किया जा सकता।
4. Circular wait—इस condition में प्रत्येक process एक resource के लिए wait करता है, जिसे दूसरा process hold किए हुए रहता है।
इसके कारण हम mutual exclusion द्वारा deadlock को prevent नहीं कर सकते।
Deadlock Prevention
इस technique का प्रयोग करने से स्थिति create नहीं हो पाती है। system में deadlock की
Deadlock prevention हेतु Deadlock उत्पन्न होने की जो कण्डीशन दी गई है, जैसे – Mutual Exclusion, Hold & Wait, No preemption, circular wait इन कण्डीशन को create होने से रोकना है।
किसी process को उसके execution से पहले ही resource allocate कर दे तो hold & wait की condition को रोका जा सकता है, किन्तु इससे device का utilization कम हो जाता है। प्रोसेस द्वारा hold किए गए resource को release करके इस
कण्डीशन को होने से रोका जा सकता है। Deadlock prevention की algorithm कम प्रभावशाली है, इससे System का throughput कम होता है
Deadlock Avoidance डैडलॉक को prevent करने हेतु यूजर Banker’s algorithm का प्रयोग करता है।
Deadlock Detection
Deadlock को detect करने हेतु ऑपेरटिंग सिस्टम Resource Scheduler का प्रयोग कर सकता है। इस condition में प्रोसेसेज (processes) की एक श्रृंखला होती है । तथा resource का एक क्रम होता है, जिसे अनुसार ही प्रोसेस को resource allocate किया जाता है।