Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ cho tình trạng không có deadlock trong hệ điều hành

Được đưa ra với P số quy trình trong bộ nhớ và N số tài nguyên cần thiết của chúng để hoàn thành việc thực thi và nhiệm vụ là tìm số tài nguyên R tối thiểu cần được phân bổ cho các quy trình sao cho không bao giờ xảy ra bế tắc.

Bế tắc là gì

Bế tắc là tình huống trong một hệ điều hành mà nhiều quy trình cư trú trong bộ nhớ không thể thực hiện việc thực thi của chúng vì tài nguyên cần thiết cho việc thực thi chương trình đang được giữ bởi một tài nguyên khác đang chờ một số tài nguyên khác hoàn thành.

Giả sử có hai quá trình P1 và P2 trong bộ nhớ trong đó P1 yêu cầu tài nguyên R1 và P2 yêu cầu tài nguyên R2, nhưng bế tắc sẽ phát sinh khi P1 giữ tài nguyên R2 và chờ tài nguyên R1 tương tự P2 giữ tài nguyên R1 và chờ tài nguyên R2 .

Chương trình C ++ cho tình trạng không có deadlock trong hệ điều hành

Đây là ví dụ về sự chờ đợi vòng tròn là một trong những nguyên nhân gây ra bế tắc. Vì vậy, để ngăn chặn deadlock, chúng ta cần tính toán số lượng tài nguyên sẽ có sẵn cho các quá trình để không xảy ra deadlock.

Tình trạng không có bế tắc

R> =P * (N - 1) + 1

trong đó, R là Tài nguyên, P là quy trình và N là nhu cầu của quy trình

Ví dụ

Input-: processes = 5, need = 3
Output-: minimum required resources are: 11
Input-: Processes = 7, need = 2
Output-: minimum required resources are: 8

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau -

  • Nhập số lượng quy trình và nhu cầu của các quy trình trong bộ nhớ
  • Áp dụng công thức đã cho để tính số tài nguyên cần thiết
  • Hiển thị kết quả

Thuật toán

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

Ví dụ

#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;
}

Đầu ra

minimum required resources are : 11