Hello Friend! इस Post में आपको बताया जायेगा कि Operating System में Deadlock को होने से कैसे रोक (prevent) सके और उसके कारण जानेगे, तो चलिए शुरू करते है।
limited होते है। कुछ रिसोर्स sharable होते है तथा कुछ non sharable होते है।
यदि हम नीचे दिए गए इन 4 conditions में से किसी एक को रोक सकते है, तो system में deadlock नहीं
होगा, आइये देखते हैं।
अगर हमारे पास non-shareable resources होते है जिन्हें share नहीं किया जा सकता है तो उस स्थिति में हम mutual exclusion को होने से नहीं रोक सकते।
Example: के लिए Printer एक non-shareable resources है। इस स्थिति में mutual exclusion को prevent नहीं कर सकते।
लेकिन अगर आपके पास sharable resource है तो आप उसे share करके mutual exclusion को रोक सकते है।
Example: मैमोरी को हम share कर सकते है।
उदाहरण के लिए किसी process को printer की बाद में जरुरत है। और हम उसे पहले ही प्रिंटर allocate कर देते है, तो जब तक इसकी execution समाप्त नहीं हो जाती तब तक यह प्रिंटर block रहेगा और दूसरे प्रोसेस इसका प्रयोग इसके खाली समय में नहीं कर सकते, तथा इसकी दूसरी हानि यह है कि इसमें starvation होता है।
लेकिन कुछ resources जैसे:- printer, tape drivers को prevent नहीं किया जा सकता है।
अर्थात् resources का एक क्रम होता है जिसके अनुसार ही processes को resources allocate किया जाता है।
उदाहरण के लिए:- यदि प्रोसेस P2 को R6 रिसोर्स allocate किया गया है तो अगली बार P2 को R5, R4 या इससे नीचे के रिसोर्स allocate नहीं किये जायेंगे, केवल R6 से उपर के रिसोर्स ही P2 को allocate किये जायेंगे।
अधिकांश deadlock avoidance को प्रत्येक प्रकार के rsources की अधिकतम संख्या को advance रूप से बताने के लिए प्रत्येक प्रक्रिया की आवश्यकता होती है। इन सभी जानकारियों के आधार पर हम यह तय कर सकते हैं कि क्या किसी प्रक्रिया को किसी resources की प्रतीक्षा करनी चाहिए या नहीं।
यदि कोई system पहले से ही सुरक्षित स्थिति में है, तो हम असुरक्षित स्थिति से दूर रहने और deadlock
को avoid करने की कोशिश कर सकते हैं। असुरक्षित स्थिति में deadlock से बचा नहीं जा सकता है। यदि यह deadlock की स्थिति में नहीं है, और अधिकतम उपलब्ध तक के Resources को Allotted कर सकता है। प्रक्रियाओं का एक सुरक्षित अनुक्रम और संसाधनों का Allotted एक सुरक्षित स्थिति सुनिश्चित करता है।
यदि सभी resources प्रकारों में केवल एक ही उदाहरण है, तो हम एक graph का उपयोग कर सकते हैं जिसे wait-for-graph कहा जाता है, जो resources allotment graph का एक प्रकार है।
यहां, vertical processes का Representation करते हैं, और P1 से P2 तक एक निर्देशित बढ़त दर्शाती है कि P1- P2 द्वारा आयोजित resources की प्रतीक्षा करता है।
जैसे resources आवंटन ग्राफ के मामले में, प्रतीक्षा के लिए ग्राफ में एक चक्र deadlock का message देता है। इसलिए system किसी भी deadlock का पता लगाने के लिए समय-समय पर graph को बनाए रखता है और चक्रों की जांच कर सकता है।
यदि किसी resource के लिए कई इंस्टेंसेस हैं, तो wating-for-graph बहुत उपयोगी नहीं है, क्योंकि चक्र में deadlock नहीं हो सकता है। ऐसे मामले में, हम deadlock का पता लगाने के लिए बैंकर के algorithms के समान algorithms का उपयोग कर सकते हैं।
आप इन algorithms के विवरण के लिए किसी भी operating system text book का mention कर सकते हैं।
What is Deadlock?
Sperating System में Deadlock तभी होता है या deadlock की स्थिति तभी बनती है जब दो Computer process एक ही रिसोर्स को साझा करते हैं। और एक साथ उन्हें access करने की कोशिश करने लगते हैं।Deadlock prevention
Deadlock होने की जो conditions होती है, उनको हम कुछ हद तक रोक (prevent) कर सकते है। ज्यादातर हम उनको रोक (prevent) नहीं कर सकते है, क्योंकि हमारे resourceslimited होते है। कुछ रिसोर्स sharable होते है तथा कुछ non sharable होते है।
यदि हम नीचे दिए गए इन 4 conditions में से किसी एक को रोक सकते है, तो system में deadlock नहीं
होगा, आइये देखते हैं।
- Mutual exclusion
- Hold & wait
- No preemption
- Cirvular wait
1. Mutualexclusion
अगर हम resources को share कर सकते है तो हम mutual exclusion को रोक सकते है।अगर हमारे पास non-shareable resources होते है जिन्हें share नहीं किया जा सकता है तो उस स्थिति में हम mutual exclusion को होने से नहीं रोक सकते।
Example: के लिए Printer एक non-shareable resources है। इस स्थिति में mutual exclusion को prevent नहीं कर सकते।
लेकिन अगर आपके पास sharable resource है तो आप उसे share करके mutual exclusion को रोक सकते है।
Example: मैमोरी को हम share कर सकते है।
2. Hold & wait
अगर resources को processes को, इसके execution से पहले ही, allocate कर दिया जाएँ तो हम hold & wait condition को होने से रोक सकते है। परन्तु इसकी पहली हानि यह है कि इससे सिस्टम की utilization कम हो जाती है।उदाहरण के लिए किसी process को printer की बाद में जरुरत है। और हम उसे पहले ही प्रिंटर allocate कर देते है, तो जब तक इसकी execution समाप्त नहीं हो जाती तब तक यह प्रिंटर block रहेगा और दूसरे प्रोसेस इसका प्रयोग इसके खाली समय में नहीं कर सकते, तथा इसकी दूसरी हानि यह है कि इसमें starvation होता है।
3. No preemption
अगर किसी प्रोसेस ने resources को hold किया है और वह दूसरे resources का wait कर रहा है तो उस प्रोसेस से सभी resources को release कर दिया जाता है जिससे दूसरे प्रोसेस अपने execution को पूरा कर सकें।लेकिन कुछ resources जैसे:- printer, tape drivers को prevent नहीं किया जा सकता है।
4. Circular wait
Circular wait को रोकने के लिए, processes को resources केवल बढ़ते हुए क्रम में ही allocate कर सकते है।अर्थात् resources का एक क्रम होता है जिसके अनुसार ही processes को resources allocate किया जाता है।
उदाहरण के लिए:- यदि प्रोसेस P2 को R6 रिसोर्स allocate किया गया है तो अगली बार P2 को R5, R4 या इससे नीचे के रिसोर्स allocate नहीं किये जायेंगे, केवल R6 से उपर के रिसोर्स ही P2 को allocate किये जायेंगे।
Deadlock avoidance
हम देख चुके हैं, अधिकांश deadlock में resource का खराब उपयोग होता है, और परिणामस्वरूप result कम हो जाते हैं।Deadlock Avoidance, and Detection
Deadlock avoidance
जैसा कि हम पहले ही देख चुके हैं, अधिकांश deadlock में resource का खराब उपयोग होता है, और परिणामस्वरूप result कम हो जाते हैं। इसके बजाय, हम संसाधनों द्वारा available resources, allocated resources, भविष्य के Requests और प्रक्रियाओं के उपयोग के बारे में पहले से ज्ञात करके deadlock से बचने की कोशिश कर सकते हैं।अधिकांश deadlock avoidance को प्रत्येक प्रकार के rsources की अधिकतम संख्या को advance रूप से बताने के लिए प्रत्येक प्रक्रिया की आवश्यकता होती है। इन सभी जानकारियों के आधार पर हम यह तय कर सकते हैं कि क्या किसी प्रक्रिया को किसी resources की प्रतीक्षा करनी चाहिए या नहीं।
यदि कोई system पहले से ही सुरक्षित स्थिति में है, तो हम असुरक्षित स्थिति से दूर रहने और deadlock
को avoid करने की कोशिश कर सकते हैं। असुरक्षित स्थिति में deadlock से बचा नहीं जा सकता है। यदि यह deadlock की स्थिति में नहीं है, और अधिकतम उपलब्ध तक के Resources को Allotted कर सकता है। प्रक्रियाओं का एक सुरक्षित अनुक्रम और संसाधनों का Allotted एक सुरक्षित स्थिति सुनिश्चित करता है।
Deadlock Detection
यदि Deadlock की Prevention और Avoidance सही तरीके से नहीं किया जाता है, जैसा कि deadlock हो सकता है और केवल deadlock से recover करने का पता लगाना है।यदि सभी resources प्रकारों में केवल एक ही उदाहरण है, तो हम एक graph का उपयोग कर सकते हैं जिसे wait-for-graph कहा जाता है, जो resources allotment graph का एक प्रकार है।
यहां, vertical processes का Representation करते हैं, और P1 से P2 तक एक निर्देशित बढ़त दर्शाती है कि P1- P2 द्वारा आयोजित resources की प्रतीक्षा करता है।
जैसे resources आवंटन ग्राफ के मामले में, प्रतीक्षा के लिए ग्राफ में एक चक्र deadlock का message देता है। इसलिए system किसी भी deadlock का पता लगाने के लिए समय-समय पर graph को बनाए रखता है और चक्रों की जांच कर सकता है।
यदि किसी resource के लिए कई इंस्टेंसेस हैं, तो wating-for-graph बहुत उपयोगी नहीं है, क्योंकि चक्र में deadlock नहीं हो सकता है। ऐसे मामले में, हम deadlock का पता लगाने के लिए बैंकर के algorithms के समान algorithms का उपयोग कर सकते हैं।
आप इन algorithms के विवरण के लिए किसी भी operating system text book का mention कर सकते हैं।