뱅커의 알고리즘은 때때로 회피 알고리즘 또는 교착 상태 알고리즘 (Dijkstra의 알고리즘의 또 다른!)에 의해 개발되었다. 뱅커의 알고리즘이 작동하려면 n 프로세스와 m 리소스 유형이 있다고 가정해 보겠습니다. 뱅커의 알고리즘을 구현하는 데 사용되는 일부 데이터 구조는 다음과 같습니다: 따라서 새 시스템 상태는 안전하므로 프로세스 P1에 대한 요청을 즉시 부여할 수 있습니다. 뱅커의 알고리즘에 대한 코드 그래서, 우리는 P2 또는 P4 중 하나에서 시작할 수 있습니다. Banker 알고리즘의 첫 번째 또는 두 번째 시도 단계에서 P1 또는 P3의 사용 가능한 리소스에서 남은 요구를 충족시킬 수 없습니다. 가능한 안전 시퀀스는 4개뿐입니다. 다음은 다음과 같습니다 : P2-> P4 -> P1 -> P3-> P3-> P1 -> P1 -> P1 -> P1 -> P3P3-> P2-> P2-> P3-> P1 가정을 감안할 때, 알고리즘은 각 자원을 획득할 수 있는 프로세스에 의한 가상의 요청 세트를 찾으려고 노력함으로써 상태가 안전한지 여부를 결정합니다. 종료합니다(리소스를 시스템에 반환). 이러한 집합이 없는 상태는 안전하지 않은 상태입니다. 다음 데이터 구조는 뱅커의 알고리즘을 구현하는 데 사용됩니다 : 우리는 당신이 은행과 “교착 상태”를 이해하는 데 도움이됩니다 은행의 알고리즘으로 시작합니다. 시스템이 안전한 상태에 있는지 여부를 확인하는 알고리즘은 다음과 같이 설명할 수 있습니다. 이렇게 하려면 위의 데이터 구조에서 안전 알고리즘을 다시 실행합니다. 이 솔루션은 WP보다 EWD-623에서 더 많은 영감을 받았습니다.

EWD-623은 프로세스의 순열을 찾는 것을 이야기하면서 자원을 요청하는 프로세스가 포화 될 수 있게되는 즉시 “주문 노력”을 중지 할 수 있다고 지적합니다. 여기서 해결 방법은 프로세스를 만족스럽지 않은 프로세스 목록의 맨 앞으로 이동하여 가능한 한 빨리 이 결과를 만들려고 시도합니다. 또한 만족스러운 프로세스의 해결 된 순열은 아무 소용이 없기 때문에 알고리즘을 약간 단순화하는 것은 유지되지 않습니다. 은행은 어떻게 작동합니까? 은행은 대출 금액을 어떻게 결정합니까? 뱅커의 알고리즘은 무엇입니까? 이전 예제에서 시작 된 동일한 상태에서 시작, 가정 프로세스 3 요청 2 단위 의 리소스 C. // C# 프로그램 시스템을 사용 하 여 은행의 알고리즘을 사용 하 여 가능한 모든 가능한 안전 // 시퀀스를 인쇄 하는 프로그램; System.Collections.Generic 사용; 안전하지 않은 상태의 예로, 프로세스 2가 처음에 2단위의 리소스 B를 보유하고 있는 경우 어떤 일이 발생하는지 고려하십시오.