स्मृति में प्रक्रियाओं की पी संख्या और उनके निष्पादन को पूरा करने के लिए उनके द्वारा आवश्यक संसाधनों की एन संख्या के साथ दिया गया है और कार्य संसाधनों की न्यूनतम संख्या को खोजना है जो प्रक्रियाओं को आवंटित किया जाना चाहिए ताकि गतिरोध कभी न हो।पी>
एक गतिरोध क्या है
डेडलॉक एक ऑपरेटिंग सिस्टम की स्थिति है जहां मेमोरी में रहने वाली कई प्रक्रियाएं अपना निष्पादन करने में सक्षम नहीं होती हैं क्योंकि प्रोग्राम निष्पादन के लिए आवश्यक संसाधन किसी अन्य संसाधन द्वारा रखे जा रहे हैं जो पूरा होने के लिए किसी अन्य संसाधन की प्रतीक्षा कर रहा है।
मान लीजिए कि मेमोरी में दो प्रक्रियाएं हैं P1 और P2 जहां P1 को संसाधन R1 की आवश्यकता है और P2 को संसाधन R2 की आवश्यकता है, लेकिन गतिरोध तब उत्पन्न होगा जब P1 संसाधन R2 को पकड़ेगा और संसाधन R1 की प्रतीक्षा करेगा, इसी तरह P2 संसाधन R1 को पकड़ता है और संसाधन R2 की प्रतीक्षा करता है। ।
यह सर्कुलर वेट का उदाहरण है जो गतिरोध के कारणों में से एक है। इसलिए, गतिरोध को रोकने के लिए हमें संसाधनों की संख्या की गणना करने की आवश्यकता है जो प्रक्रियाओं के लिए उपलब्ध होनी चाहिए ताकि गतिरोध न हो।
डेडलॉक फ्री कंडीशन
R>=P * (N-1) + 1
जहां R संसाधन है, P प्रक्रिया है और N प्रक्रियाओं की आवश्यकता है
उदाहरण
Input-: processes = 5, need = 3 Output-: minimum required resources are: 11 Input-: Processes = 7, need = 2 Output-: minimum required resources are: 8
नीचे दिए गए कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है -
- मेमोरी में प्रक्रियाओं की संख्या और प्रक्रियाओं की आवश्यकता दर्ज करें
- आवश्यक संसाधनों की संख्या की गणना करने के लिए दिए गए सूत्र को लागू करें
- परिणाम प्रदर्शित करें
एल्गोरिदम
START Step 1-> declare function to calculate the minimum number of resources needed int min_resource(int process, int need) declare int calculate = 0 set calculate = process * (need - 1) + 1 return calculate Step 2-> In main() Declare int process = 5 and need = 3 Call min_resource(process, need) STOP
उदाहरण
#include <bits/stdc++.h> using namespace std; //calculate minimum number of resources needed int min_resource(int process, int need) { int calculate = 0; calculate = process * (need - 1) + 1; return calculate; } int main() { int process = 5, need = 3; cout << "minimum required resources are : " <<min_resource(process, need); return 0; }
आउटपुट
minimum required resources are : 11