Đượ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 .
Đâ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