은행원 알고리즘 안전상태 판정기
Allocation·Max·Available 행렬에서 Need를 구하고 안전순서가 존재하는지 판정합니다. 자원 요청 하나를 넣어 들어줘도 안전한지, 기다리게 해야 하는지도 함께 봅니다.
한 줄이 프로세스 하나, 한 칸이 자원 한 종류입니다
각 프로세스가 처음 밝힌 최대 요구량입니다
지금 남아 있는 자원. 한 줄에 자원 종류만큼
프로세스 5개 · 자원 3종류
안전상태
안전순서 P1 → P3 → P0 → P2 → P4
Need = Max − Allocation
| 프로세스 | Allocation | Max | Need |
|---|---|---|---|
| P0 | 0 1 0 | 7 5 3 | 7 4 3 |
| P1 | 2 0 0 | 3 2 2 | 1 2 2 |
| P2 | 3 0 2 | 9 0 2 | 6 0 0 |
| P3 | 2 1 1 | 2 2 2 | 0 1 1 |
| P4 | 0 0 2 | 4 3 3 | 4 3 1 |
| 총량 | 10 5 7 (Allocation 합 + Available 3 3 2) | ||
안전순서를 찾아 가며
| # | 끝낼 수 있는 것 | 남은 자원 | 반납 뒤 |
|---|---|---|---|
| 1 | P1Need 1 2 2 | 3 3 2 | 5 3 2 |
| 2 | P3Need 0 1 1 | 5 3 2 | 7 4 3 |
| 3 | P0Need 7 4 3 | 7 4 3 | 7 5 3 |
| 4 | P2Need 6 0 0 | 7 5 3 | 10 5 5 |
| 5 | P4Need 4 3 1 | 10 5 5 | 10 5 7 |
P1이 1 0 2를 요청하면
들어줘도 안전상태가 유지됩니다.
들어준 뒤의 안전순서: P1 → P3 → P0 → P2 → P4
사용 방법
- 1Allocation과 Max 행렬을 한 줄에 프로세스 하나씩 넣습니다. 한 칸이 자원 한 종류입니다.
- 2Available에 지금 남아 있는 자원을 한 줄로 넣습니다.
- 3안전순서를 찾아 가는 과정을 확인하고, 아래에서 자원 요청 하나를 넣어 들어줘도 되는지 봅니다.
자주 묻는 질문
지금 상태가 «안전상태»인지, 즉 모든 프로세스가 최대 요구량까지 다 요구하더라도 하나씩 끝내 나갈 수 있는 순서가 존재하는지를 판정합니다. 남은 자원으로 Need를 채워 줄 수 있는 프로세스를 하나 끝냈다고 치고 그가 쥔 자원을 돌려받기를 되풀이해, 모두 끝낼 수 있으면 안전상태입니다.
아닙니다. 불안전상태는 «교착에 빠질 수도 있는 상태»일 뿐입니다. 프로세스들이 실제로 최대치까지 요구하지 않으면 아무 일 없이 끝나기도 합니다. 은행원 알고리즘은 그 «될 수도 있는» 위험을 아예 만들지 않으려고 요청을 미루는 것이라 그만큼 보수적이며, 이것이 가장 흔한 오해입니다.
틀린 것이 아닙니다. 안전순서는 대개 여러 개 존재하며, 어느 프로세스부터 고르느냐에 따라 달라집니다. 이 도구는 결과가 재현되도록 «번호가 작은 프로세스부터» 찾아 그중 하나만 보여 줍니다. 다만 «안전한가 아닌가»라는 판정 자체는 하나로 정해집니다.
Need = Max − Allocation입니다. 앞으로 더 요구할 수 있는 최대량이며, 이미 쥐고 있는 만큼은 빼고 셉니다. Allocation이 Max보다 큰 값이 있으면 처음 밝힌 한도를 넘게 쥐고 있다는 뜻이라 잘못된 입력이고, 이 도구는 그런 경우 어느 칸이 문제인지 알려 줍니다.
세 가지를 차례로 봅니다. 첫째 요청이 Need를 넘지 않는지(넘으면 처음 밝힌 한도를 어긴 잘못된 요청), 둘째 지금 남은 자원으로 줄 수 있는지(모자라면 기다려야 함), 셋째 줬다고 쳤을 때도 안전상태인지입니다. 셋째에서 걸리면 자원이 있어도 주지 않고 기다리게 합니다.
전송되지 않습니다. 계산은 전부 브라우저 안에서 이뤄지고, 입력값은 이 브라우저의 localStorage에만 남습니다.
알아두면 좋은 점
- 프로세스는 20개, 자원은 10종류까지 다룹니다.
- 자원 총량은 Allocation의 합에 Available을 더해 구합니다. 따로 넣지 않아도 됩니다.
- 안전순서를 찾을 때 번호가 작은 프로세스부터 봅니다. 다른 순서로 찾아도 «안전한가»라는 판정은 같습니다.
- 운영체제 교재에 널리 실린 예제(프로세스 5개, 자원 A 10·B 5·C 7)의 Need 행렬과 안전 판정, 그리고 이어지는 세 가지 요청 판정을 정답지로 삼아 맞췄습니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.