logo

운영 체제(OS)의 은행가 알고리즘

사용되는 뱅커 알고리즘입니다. 교착상태를 피하다 그리고 자원 할당 컴퓨터 시스템의 각 프로세스에 안전하게 전달됩니다. ' S-스테이트' 각 프로세스에 할당을 허용할지 여부를 결정하기 전에 가능한 모든 테스트나 활동을 검사합니다. 또한 운영 체제가 모든 프로세스 간에 리소스를 성공적으로 공유하는 데 도움이 됩니다. 은행가 알고리즘이라는 이름은 은행 시스템이 자원 할당을 안전하게 시뮬레이션하는 데 도움이 되도록 개인에게 대출 금액을 승인해야 하는지 여부를 확인하기 때문에 명명되었습니다. 이 섹션에서는 다음 내용을 학습합니다. 은행원의 알고리즘 상세히. 또한, 이를 바탕으로 문제를 해결해 나가겠습니다. 은행원의 알고리즘 . Banker's Algorithm을 먼저 이해하기 위해 실제 단어의 예를 살펴보겠습니다.

특정 은행의 계좌 보유자가 'n'이고, 은행의 총 자금이 'T'라고 가정해 보겠습니다. 예금주가 대출을 신청하는 경우 먼저 은행은 전액 현금에서 대출 금액을 뺀 다음 현금 차액이 T보다 크다고 추정하여 대출 금액을 승인합니다. 이러한 조치를 취하는 이유는 다른 사람이 대출을 신청하거나 은행에서 일정 금액을 인출하면 은행 시스템의 기능에 아무런 제한 없이 은행이 모든 것을 관리하고 운영하는 데 도움이 되기 때문입니다.

마찬가지로, 다음과 같은 방식으로 작동합니다. 운영 체제 . 컴퓨터 시스템에서 새로운 프로세스가 생성되면 프로세스는 예정된 프로세스, 리소스 요청, 리소스 계산 및 지연과 같은 모든 유형의 정보를 운영 체제에 제공해야 합니다. 이러한 기준에 따라 운영 체제는 시스템에서 교착 상태가 발생하지 않도록 어떤 프로세스 시퀀스를 실행하거나 기다려야 하는지를 결정합니다. 따라서 다음과 같이 알려져 있습니다. 교착상태 회피 알고리즘 또는 교착 상태 감지 운영 체제에서.

장점

Banker 알고리즘의 주요 특징은 다음과 같습니다.

  1. 각 프로세스의 요구 사항을 충족하는 다양한 리소스가 포함되어 있습니다.
  2. 각 프로세스는 향후 리소스 요청, 리소스 수, 리소스 보유 기간에 대한 정보를 운영 체제에 제공해야 합니다.
  3. 이는 운영 체제가 컴퓨터 시스템의 각 리소스 유형에 대한 프로세스 요청을 관리하고 제어하는 ​​데 도움이 됩니다.
  4. 알고리즘에는 각 프로세스가 시스템에서 최대 리소스 수를 보유할 수 있음을 나타내는 최대 리소스 속성이 있습니다.

단점

  1. 고정된 수의 프로세스가 필요하며 프로세스를 실행하는 동안 시스템에서 추가 프로세스를 시작할 수 없습니다.
  2. 알고리즘은 더 이상 작업을 처리하는 동안 프로세스가 최대 요구 사항을 교환하는 것을 허용하지 않습니다.
  3. 각 프로세스는 시스템에 대한 최대 리소스 요구 사항을 미리 알고 명시해야 합니다.
  4. 자원 요청 횟수는 한정된 시간 내에 허용될 수 있지만 자원 할당 시간 제한은 1년입니다.

은행가의 알고리즘으로 작업할 때 다음 세 가지 사항에 대해 알도록 요청합니다.

  1. 각 프로세스가 시스템의 각 리소스에 대해 요청할 수 있는 양입니다. 이는 [ 최대 ] 요구.
  2. 각 프로세스가 현재 시스템의 각 리소스를 보유하고 있는 양입니다. 이는 [ 할당됨 ] 자원.
  3. 이는 현재 시스템에서 사용 가능한 각 리소스의 수를 나타냅니다. 이는 [ 사용 가능 ] 자원.

다음은 뱅커 알고리즘에 적용되는 중요한 데이터 구조 용어입니다.

n은 프로세스의 수이고, m은 컴퓨터 시스템에서 사용되는 각 자원 유형의 수라고 가정합니다.

    사용 가능: 시스템에서 사용 가능한 각 리소스 유형을 정의하는 길이 'm'의 배열입니다. Available[j] = K인 경우, 리소스 유형 R[j]의 'K' 인스턴스가 시스템에서 사용 가능함을 의미합니다.최대:각 프로세스 P[i]가 시스템에서 최대 자원 R[j](각 유형)을 저장할 수 있음을 나타내는 [n x m] 행렬입니다.배당:현재 시스템의 각 프로세스에 할당된 자원의 종류를 나타내는 m x n 차수의 행렬입니다. 할당 [i, j] = K이면 프로세스 P[i]가 현재 시스템에서 리소스 유형 R[j]의 K 인스턴스에 할당되었음을 의미합니다.필요:각 프로세스의 남은 자원 수를 나타내는 M x N 행렬 시퀀스입니다. Need[i] [j] = k이면 프로세스 P[i]에는 할당된 작업을 완료하기 위해 Rj 자원 유형의 인스턴스가 K개 더 필요할 수 있습니다.
    Nedd[i][j] = Max[i][j] - 할당[i][j].마치다: 주문의 벡터입니다. . 프로세스가 요청된 리소스에 할당되었는지, 작업이 완료된 후 모든 리소스가 해제되었는지 여부를 나타내는 부울 값(true/false)을 포함합니다.

Banker's Algorithm은 프로세스를 제어하고 시스템의 교착 상태를 방지하기 위해 안전 알고리즘과 리소스 요청 알고리즘을 결합한 것입니다.

안전 알고리즘

시스템이 안전한 상태인지, 은행가 알고리즘의 안전 순서를 따르는지 확인하는 데 사용되는 안전 알고리즘입니다.

1. 두 개의 벡터가 있습니다 그리고 마치다 안전 알고리즘에서 길이는 m과 n입니다.

초기화: 작업 = 사용 가능
마침[i] = 거짓; I = 0, 1, 2, 3, 4… n - 1인 경우.

2. 다음과 같은 각 리소스 유형 [i]의 가용성 상태를 확인합니다.

필요[i]<= work
마침[i] == 거짓
i가 존재하지 않으면 4단계로 이동합니다.

3. Work = Work +Allocation(i) // 새로운 자원 할당을 얻기 위해

문자열 java의 하위 문자열

마침[i] = 참

2단계로 이동하여 다음 프로세스에 대한 자원 가용성 상태를 확인합니다.

4. If Finish[i] == true; 이는 시스템이 모든 프로세스에 대해 안전하다는 것을 의미합니다.

자원 요청 알고리즘

리소스 요청 알고리즘은 프로세스가 시스템에서 각 유형의 리소스 요청을 요청 매트릭스로 생성할 때 시스템이 어떻게 작동하는지 확인합니다.

각 프로세스 P[i]에 대해 자원 요청 배열 R[i]를 생성해 보겠습니다. 리소스 요청의 경우[j]는 'K'와 같습니다. 이는 프로세스 P[i]가 시스템에서 자원 유형 R[j]의 'k' 인스턴스를 필요로 함을 의미합니다.

1. 수가 많을 때 요청한 리소스 각 유형의 것보다 적습니다. 필요 자원의 경우 2단계로 이동하여 조건이 실패하면 프로세스 P[i]가 자원에 대한 최대 요구 사항을 초과한다는 의미입니다. 표현에서 알 수 있듯이:

요청하는 경우(i)<= need
2단계로 이동합니다.

2. 그리고 각 유형별로 요청한 자원의 개수가 각 프로세스에서 사용할 수 있는 자원보다 적으면 (3)단계로 진행한다. 표현에서 알 수 있듯이:

요청하는 경우(i)<= available
Else 프로세스 P[i]는 사용할 수 없는 리소스이므로 기다려야 합니다.

3. 상태를 변경하여 요청된 자원이 프로세스에 할당되는 경우:

사용 가능 = 사용 가능 - 요청
할당(i) = 할당(i) + 요청(i)
필요= 필요- 요구

자원 할당 상태가 안전하면 해당 자원이 프로세스 P(i)에 할당됩니다. 그리고 새로운 상태가 안전하지 않으면 프로세스 P(i)는 각 유형의 요청 R(i)을 기다리고 이전 자원 할당 상태를 복원해야 합니다.

예: 5개의 프로세스 P1, P2, P3, P4, P5와 세 가지 리소스 유형 A, B, C가 포함된 시스템을 생각해 보세요. 리소스 유형은 다음과 같습니다. A에는 10개, B에는 5개, 리소스 유형 C에는 7개의 인스턴스가 있습니다.

프로세스 배당
ABC
맥스
ABC
사용 가능
ABC
P1 0 1 0 7 5 3 3 3 2
P2 200 3 2 2
P3 3 0 2 9 0 2
P4 2 1 1 2 2 2
P5 0 0 2 4 3 3

은행원의 알고리즘을 사용하여 다음 질문에 답하십시오.

  1. Need Matrix의 참조는 무엇입니까?
  2. 시스템이 안전한지 여부를 확인하십시오.
  3. 프로세스 P1에 대한 자원 요청(1, 0, 0)이 시스템에서 이 요청을 즉시 수락할 수 있다면 어떻게 될까요?

연령. 2: 요구 매트릭스의 맥락은 다음과 같습니다.

필요 [i] = 최대 [i] - 할당 [i]
P1 필요: (7, 5, 3) - (0, 1, 0) = 7, 4, 3
P2에 대한 필요성: (3, 2, 2) - (2, 0, 0) = 1, 2, 2
P3 필요: (9, 0, 2) - (3, 0, 2) = 6, 0, 0
P4 필요: (2, 2, 2) - (2, 1, 1) = 0, 1, 1
P5 필요: (4, 3, 3) - (0, 0, 2) = 4, 3, 1

컴퓨터가 뭐야?
프로세스 필요
ABC
P1 7 4 3
P2 1 2 2
P3 6 0 0
P4 0 1 1
P5 4 3 1

따라서 우리는 욕구 매트릭스의 맥락을 만들었습니다.

답변. 2: 은행가 알고리즘을 적용합니다.

A, B, C의 사용 가능한 자원은 3, 3, 2입니다.

이제 각 프로세스에 대해 각 유형의 리소스 요청이 가능한지 확인합니다.

1 단계: 프로세스 P1의 경우:

필요<= available< p>

7, 4, 3<= 2 3, condition is 거짓 .

그래서 우리는 또 다른 프로세스인 P2를 조사합니다.

2 단계: 프로세스 P2의 경우:

필요<= available< p>

1, 2, 2<= 2 3, condition 진실

신규 사용 가능 = 사용 가능 + 할당

(3, 3, 2) + (2, 0, 0) => 5, 3, 2

마찬가지로 다른 프로세스 P3을 조사합니다.

3단계: 프로세스 P3의 경우:

P3 필요<= available< p>

6, 0, 0<= 2 5, 3, condition is 거짓 .

마찬가지로, 또 다른 프로세스인 P4를 조사합니다.

4단계: 프로세스 P4의 경우:

P4 필요<= available< p>

0, 1, 1<= 2 5, 3, condition is 진실

새로운 사용 가능한 자원 = 사용 가능 + 할당

5, 3, 2 + 2, 1, 1 => 7, 4, 3

마찬가지로 다른 프로세스 P5를 조사합니다.

5단계: 프로세스 P5의 경우:

P5 필요<= available< p>

4, 3, 1<= 3 7, 4, condition is 진실

새로운 사용 가능한 자원 = 사용 가능 + 할당

7, 4, 3 + 0, 0, 2 => 7, 4, 5

이제 프로세스 P1과 P3에 대한 각 리소스 요청 유형을 다시 살펴보겠습니다.

6단계: 프로세스 P1의 경우:

P1 필요<= available< p>

7, 4, 3<= 5 7, 4, condition is 진실

새로운 사용 가능한 자원 = 사용 가능 + 할당

7, 4, 5 + 0, 1, 0 => 7, 5, 5

그래서 우리는 또 다른 프로세스 P2를 조사합니다.

7단계: 프로세스 P3의 경우:

P3 필요<= available< p>

6, 0, 0<= 5 7, 5, condition is true< p>

새로운 사용 가능한 자원 = 사용 가능 + 할당

7, 5, 5 + 3, 0, 2 => 10, 5, 7

따라서 우리는 안전한 상태와 P2, P4, P5, P1 및 P3과 같은 안전한 시퀀스를 찾기 위해 뱅커 알고리즘을 실행합니다.

개미 대 메이븐

연령. 삼: 요청(1, 0, 2)을 승인하려면 먼저 다음을 확인해야 합니다. 요구<= available< strong>, 즉 (1, 0, 2)<= (3, 3, 2), since the condition is true. so process p1 gets request immediately.< p>