메모리에 있는 P개의 프로세스와 실행을 완료하는 데 필요한 N개의 리소스가 주어지면 작업은 교착 상태가 발생하지 않도록 프로세스에 할당되어야 하는 최소 리소스 수 R을 찾는 것입니다.피>
교착 상태란 무엇입니까
교착 상태는 프로그램 실행에 필요한 리소스가 완료되기를 기다리는 다른 리소스에 의해 보류되고 있기 때문에 메모리에 있는 여러 프로세스가 실행을 수행할 수 없는 운영 체제의 상황입니다.
P1이 리소스 R1을 필요로 하고 P2가 리소스 R2를 필요로 하는 메모리에 두 개의 프로세스 P1과 P2가 있다고 가정해 보겠습니다. 그러나 P1이 리소스 R2를 보유하고 리소스 R1을 기다릴 때 P2가 마찬가지로 리소스 R1을 보유하고 리소스 R2를 기다릴 때 교착 상태가 발생합니다. .
교착 상태의 원인 중 하나인 순환 대기의 예입니다. 따라서 교착 상태를 방지하려면 교착 상태가 발생하지 않도록 프로세스에 사용할 수 있는 리소스 수를 계산해야 합니다.
교착 상태가 없는 상태
R>=P * (N - 1) + 1
여기서, R은 자원, P는 프로세스, N은 프로세스의 필요성
예시
Input-: processes = 5, need = 3 Output-: minimum required resources are: 11 Input-: Processes = 7, need = 2 Output-: minimum required resources are: 8
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다. -
- 메모리에 있는 프로세스의 수와 필요를 입력
- 필요한 자원의 수를 계산하기 위해 주어진 공식을 적용
- 결과 표시
알고리즘
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호출
예시
#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; }
출력
minimum required resources are : 11