Deadlock Detection
यदि कोई System deadlock prevention technique या deadlock avoidance technique का Use नहीं करता है, तो deadlock occur होने की probability है। deadlock से बचने के लिए, Operating System नियमित रूप से किसी भी deadlocks के लिए System की जाँच करता है। OS खोजे जाने के बाद recovery mechanisms का उपयोग करके deadlock से recover कर लेगा
How to Detect Deadlock in Operating Systems?
OS इस approach में deadlock prevent or recovery के लिए किसी mechanism का use नहीं करता है। System predict करता है कि deadlock होगा। OS समय-समय पर System को किसी भी deadlock avoid के लिए scan करता है। यदि कोई deadlocks discover किया जाता है, तो OS कई तरीकों से System को restore करने का प्रयास करेगा।
deadlocks detect OS की primary responsibility है। resource allocation graph की सहायता से, OS deadlocks का पता लगा सकता है।
यदि एक System में single instanced resource types के साथ एक cycle बनता है, तो undoubtedly deadlocks होगा।
Deadlock Recovery in Operating System
OS deadlock से System को recover करने के लिए resources or processes की जांच करता है।
For Resource
Preempt the resource
हम resource owner (process) से resources में से एक ले सकते हैं और इसे इस hopes में another process को दे सकते हैं कि यह execution को finish कर देगा और resource को जल्द ही release कर देगा। ऐसा resources चुनना जो snatched challenging होगा।
Rollback to a safe state
Deadlock State तक पहुँचने के लिए, System को कई States से गुजरना पड़ता है। OS में System को previous safe state में restore करने की ability है। इसके work करने के लिए OS को प्रत्येक States में checkpoint implement करनी चाहिए।
जब हम एक deadlock पर पहुँचते हैं, तो हमें सभी allocations को उलट देना चाहिए और prior safe state में return कर लेना चाहिए।
For Process
Kill a process
एक Process को finish करके Our problem solve किया जा सकता है; हालाँकि, bigger issue यह decide कर रहा है कि किस process को finish करना है। एक process जिसने अब तक सबसे कम work किया है, basically OS द्वारा finish कर दिया जाता है।
Kill all processes
यह एक persuasive strategy नहीं है, लेकिन अगर problem extremely serious हो जाती है तो इसका use किया जा सकता है। सभी processes को finish करने से system inefficiencies result होगा क्योंकि सभी processes को फिर से start करना होगा।