Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ प्रोग्राम ऑपरेटिंग सिस्टम में डेडलॉक-फ्री कंडीशन के लिए


मेमोरी में P प्रक्रियाओं की संख्या दी गई है और उनके निष्पादन को पूरा करने के लिए उनके द्वारा आवश्यक N संसाधनों की संख्या दी गई है और कार्य उन न्यूनतम संसाधनों R की संख्या ढूंढना है जिन्हें प्रक्रियाओं को आवंटित किया जाना चाहिए ताकि डेडलॉक कभी न हो।

डेडलॉक क्या है?

डेडलॉक एक ऑपरेटिंग सिस्टम में स्थिति है जहां मेमोरी में रहने वाली कई प्रक्रियाएं अपने निष्पादन को करने में सक्षम नहीं होती हैं क्योंकि प्रोग्राम निष्पादन के लिए आवश्यक संसाधन किसी अन्य संसाधन द्वारा धारित किए जा रहे हैं जो पूरा होने के लिए किसी अन्य संसाधन की प्रतीक्षा कर रहा है।

मान लीजिए मेमोरी में दो प्रक्रियाएं P1 और P2 हैं जहां P1 को संसाधन R1 की आवश्यकता है और P2 को संसाधन R2 की आवश्यकता है, लेकिन डेडलॉक तब उत्पन्न होगा जब P1 संसाधन R2 को धारण करे और संसाधन R1 की प्रतीक्षा करे, इसी तरह P2 संसाधन R1 को धारण करे और संसाधन R2 की प्रतीक्षा करे।

C++ प्रोग्राम ऑपरेटिंग सिस्टम में डेडलॉक-फ्री कंडीशन के लिए

यह सर्कुलर वेट का एक उदाहरण है जो डेडलॉक के कारणों में से एक है। इसलिए, डेडलॉक को रोकने के लिए हमें उन संसाधनों की संख्या की गणना करने की आवश्यकता है जो प्रक्रियाओं के लिए उपलब्ध होने चाहिए ताकि डेडलॉक न हो।

डेडलॉक-फ्री कंडीशन

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

  1. C++ में अष्टफलक का पृष्ठीय क्षेत्रफल C++ में अष्टफलक का पृष्ठीय क्षेत्रफल

    अष्टफलक क्या है?अष्टफलक शब्द ग्रीक शब्दों से लिया गया है जहां, अष्ट का अर्थ आठ है और फलक फेस निर्दिष्ट करता है। ज्यामिति में अष्टफलक एक 3-D प्लेटोनिक या नियमित ठोस है जिसमें आठ फलक होते हैं। अन्य आकृतियों की तरह अष्टफलक के भी गुण हैं जो हैं -6 पॉलीहेड्रॉन शीर्ष12 पॉलीहेड्रॉन किनारे8 समबाहु फलकनीचे अ

  1. C++ में द्वादशफलक का पृष्ठीय क्षेत्रफल C++ में द्वादशफलक का पृष्ठीय क्षेत्रफल

    द्वादशफलक क्या है?द्वादशफलक शब्द ग्रीक शब्दों से लिया गया है जहां, द्वादश का अर्थ बारह है और फलक फेस निर्दिष्ट करता है। ज्यामिति में द्वादशफलक एक 3-D प्लेटोनिक या नियमित ठोस है जिसमें बारह सपाट फलक होते हैं। अन्य आकृतियों की तरह द्वादशफलक के भी गुण हैं जो हैं -20 पॉलीहेड्रॉन शीर्ष30 पॉलीहेड्रॉन किना

  1. C++ में क्विकसॉर्ट प्रोग्राम C++ में क्विकसॉर्ट प्रोग्राम

    क्विकसॉर्ट क्या है? क्विकसॉर्ट एक सॉर्टिंग तकनीक है जो अनसॉर्टेड सूची (सरणी) को सॉर्ट करने के लिए तुलनाओं का उपयोग करती है। क्विकसॉर्ट को पार्टीशन एक्सचेंज सॉर्ट के नाम से भी जाना जाता है। यह एक स्थिर सॉर्ट नहीं है, क्योंकि समान सॉर्ट आइटम्स का सापेक्ष क्रम संरक्षित नहीं रहता। क्विकसॉर्ट एक सरणी प