Cho P tiến trình trong bộ nhớ và N tài nguyên cần thiết bởi chúng để hoàn thành thực thi. Nhiệm vụ là tìm số tài nguyên tối thiểu R cần cấp phát cho các tiến trình sao cho deadlock không bao giờ xảy ra.
Deadlock là gì?
Deadlock là tình huống trong hệ điều hành nơi nhiều tiến trình trong bộ nhớ không thể thực thi vì tài nguyên cần thiết cho thực thi chương trình đang bị giữ bởi tiến trình khác đang chờ tài nguyên khác để hoàn thành.
Giả sử có hai tiến trình P1 và P2 trong bộ nhớ, P1 cần tài nguyên R1, P2 cần R2. Deadlock xảy ra khi P1 giữ R2 và chờ R1, tương tự P2 giữ R1 và chờ R2.

Đây là ví dụ của chờ vòng tròn - một nguyên nhân của deadlock. Vì vậy, để ngăn chặn deadlock, cần tính số tài nguyên nên có sẵn cho các tiến trình sao cho deadlock không xảy ra.
Điều kiện không Deadlock
R ≥ P * (N - 1) + 1
trong đó, R là Tài nguyên, P là Tiến trình, N là Nhu cầu của tiến 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 dùng trong chương trình dưới −
- Nhập số tiến trình và nhu cầu của tiến trình trong bộ nhớ
- Áp dụng công thức cho trước để tính số tài nguyên cần
- Hiển thị kết quả
Thuật toán
BẮT ĐẦU
Bước 1: khai báo hàm tính tài nguyên tối thiểu
int min_resource(int process, int need)
Khai báo int calculate = 0
Gán calculate = process * (need - 1) + 1
return calculate
Bước 2: Trong main()
Khai báo int process = 5 và need = 3
Gọi min_resource(process, need)
KẾT THÚC
Ví dụ
#include <bits/stdc++.h>
using namespace std;
// tính tài nguyên tối thiểu
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 << "Tài nguyên tối thiểu cần: " << min_resource(process, need);
return 0;
}
Kết quả
Tài nguyên tối thiểu cần: 11