Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

운영 체제에서 교착 상태가 없는 상태를 위한 C++ 프로그램

<시간/>

메모리에 있는 P개의 프로세스와 실행을 완료하는 데 필요한 N개의 리소스가 주어지면 작업은 교착 상태가 발생하지 않도록 프로세스에 할당되어야 하는 최소 리소스 수 R을 찾는 것입니다.

교착 상태란 무엇입니까

교착 상태는 프로그램 실행에 필요한 리소스가 완료되기를 기다리는 다른 리소스에 의해 보류되고 있기 때문에 메모리에 있는 여러 프로세스가 실행을 수행할 수 없는 운영 체제의 상황입니다.

P1이 리소스 R1을 필요로 하고 P2가 리소스 R2를 필요로 하는 메모리에 두 개의 프로세스 P1과 P2가 있다고 가정해 보겠습니다. 그러나 P1이 리소스 R2를 보유하고 리소스 R1을 기다릴 때 P2가 마찬가지로 리소스 R1을 보유하고 리소스 R2를 기다릴 때 교착 상태가 발생합니다. .

운영 체제에서 교착 상태가 없는 상태를 위한 C++ 프로그램

교착 상태의 원인 중 하나인 순환 대기의 예입니다. 따라서 교착 상태를 방지하려면 교착 상태가 발생하지 않도록 프로세스에 사용할 수 있는 리소스 수를 계산해야 합니다.

교착 상태가 없는 상태

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