কম্পিউটার টিউটোরিয়াল

C++ প্রোগ্রাম: অপারেটিং সিস্টেমে ডেডলক-ফ্রি কন্ডিশন


মেমরিতে P সংখ্যক প্রসেস এবং তাদের এক্সিকিউশন কমপ্লিট করার জন্য N সংখ্যক রিসোর্স দরকার দেওয়া আছে। টাস্ক হলো মিনিমাম রিসোর্স R বের করা যেটি প্রসেসগুলোর আ alok করা উচিত যাতে ডেডলক কখনোই না হয়।

ডেডলক কী?

ডেডলক হলো অপারেটিং সিস্টেমে এমন একটি সিচুয়েশন যেখানে মেমরিতে রেসিডিং একাধিক প্রসেস তাদের এক্সিকিউশন পারফর্ম করতে পারে না কারণ প্রোগ্রাম এক্সিকিউশনের জন্য দরকার রিসোর্সগুলো অন্য প্রসেস দিয়ে হোল্ড করা থাকে যেটি আবার অন্য রিসোর্সের জন্য ওয়েট করছে।

মান লিন, মেমরিতে দুটি প্রসেস P1 এবং P2 আছে যেখানে P1-কে রিসোর্স R1 দরকার এবং P2-কে R2 দরকার। কিন্তু ডেডলক হবে যখন P1 R2 হোল্ড করে R1-এর জন্য ওয়েট করবে এবং P2 R1 হোল্ড করে R2-এর জন্য ওয়েট করবে।

C++ প্রোগ্রাম: অপারেটিং সিস্টেমে ডেডলক-ফ্রি কন্ডিশন

এটি সার্কুলার ওয়েটের একটি উদাহরণ যা ডেডলকের কারণlerden একটি। তাই ডেডলক প্রিভেন্ট করতে প্রসেসগুলোর জন্য যত রিসোর্স থাকা উচিত সেটি ক্যালকুলেট করতে হবে।

ডেডলк-ফ্রি কন্ডিশন

R ≥ P × (N - 1) + 1

যেখানে, R = রিসোর্স, P = প্রসেস, N = প্রসেসের नीড

উদাহরণ

ইনপুট: processes = 5, need = 3 
আউটপুট: minimum required resources are: 11 

ইনপুট: Processes = 7, need = 2 
আউটপুট: minimum required resources are: 8

নিচের প্রোগ্রামে ব্যবহৃত অ্যাপ্রোচ −

  • মেমরিতে প্রসেসের সংখ্যা এবং নিড ইনপুট নিন
  • দেওয়া ফর্মুলা অ্যাপ্লাই করে রিকোয়ার্ড রিসোর্স ক্যালকুলেট করুন
  • রেজাল্ট ডিসপ্লে করুন

অ্যালগরিদম

শুরু 
ধাপ ১→ মিনিমাম রিসোর্স ক্যালকুলেট করার ফাংশন ডিক্লেয়ার 
    int min_resource(int process, int need) 
    int calculate = 0 ডিক্লেয়ার 
    calculate = process * (need - 1) + 1 সেট 
    return calculate 
ধাপ ২→ 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++-এ পিরামিডের ভলিউম বের করার প্রোগ্রাম

  2. C++-এ অক্টাহেড্রনের সারফেস এরিয়া বের করার প্রোগ্রাম

  3. C++-এ ডোডেকাহেড্রনের সারফেস এরিয়া বের করার প্রোগ্রাম

  4. C++-এ কুইকসর্ট (QuickSort) প্রোগ্রাম