मेमोरी में P प्रक्रियाओं की संख्या दी गई है और उनके निष्पादन को पूरा करने के लिए उनके द्वारा आवश्यक N संसाधनों की संख्या दी गई है और कार्य उन न्यूनतम संसाधनों R की संख्या ढूंढना है जिन्हें प्रक्रियाओं को आवंटित किया जाना चाहिए ताकि डेडलॉक कभी न हो।
डेडलॉक क्या है?
डेडलॉक एक ऑपरेटिंग सिस्टम में स्थिति है जहां मेमोरी में रहने वाली कई प्रक्रियाएं अपने निष्पादन को करने में सक्षम नहीं होती हैं क्योंकि प्रोग्राम निष्पादन के लिए आवश्यक संसाधन किसी अन्य संसाधन द्वारा धारित किए जा रहे हैं जो पूरा होने के लिए किसी अन्य संसाधन की प्रतीक्षा कर रहा है।
मान लीजिए मेमोरी में दो प्रक्रियाएं P1 और P2 हैं जहां P1 को संसाधन R1 की आवश्यकता है और P2 को संसाधन R2 की आवश्यकता है, लेकिन डेडलॉक तब उत्पन्न होगा जब P1 संसाधन R2 को धारण करे और संसाधन R1 की प्रतीक्षा करे, इसी तरह P2 संसाधन R1 को धारण करे और संसाधन R2 की प्रतीक्षा करे।

यह सर्कुलर वेट का एक उदाहरण है जो डेडलॉक के कारणों में से एक है। इसलिए, डेडलॉक को रोकने के लिए हमें उन संसाधनों की संख्या की गणना करने की आवश्यकता है जो प्रक्रियाओं के लिए उपलब्ध होने चाहिए ताकि डेडलॉक न हो।
डेडलॉक-फ्री कंडीशन
R ≥ P × (N - 1) + 1
जहां, R संसाधन हैं, P प्रक्रियाएं हैं और N प्रक्रियाओं की आवश्यकता है
उदाहरण
इनपुट: प्रक्रियाएं = 5, आवश्यकता = 3 आउटपुट: न्यूनतम आवश्यक संसाधन हैं: 11 इनपुट: प्रक्रियाएं = 7, आवश्यकता = 2 आउटपुट: न्यूनतम आवश्यक संसाधन हैं: 8
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण निम्नानुसार है -
- मेमोरी में प्रक्रियाओं की संख्या और प्रक्रियाओं की आवश्यकता इनपुट करें
- दिए गए फॉर्मूला को लागू करके आवश्यक संसाधनों की संख्या की गणना करें
- परिणाम प्रदर्शित करें
एल्गोरिदम
शुरुआत
चरण 1: न्यूनतम आवश्यक संसाधनों की गणना के लिए फंक्शन घोषित करें
int min_resource(int process, int need)
int calculate = 0 घोषित करें
calculate = process * (need - 1) + 1 सेट करें
calculate लौटाएं
चरण 2: main() में
int process = 5 और need = 3 घोषित करें
min_resource(process, need) कॉल करें
रुकें उदाहरण
#include <bits/stdc++.h>
using namespace std;
// न्यूनतम आवश्यक संसाधनों की गणना
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