교착상태 검출(자원 할당 그래프) 계산기
프로세스-자원 요청/보유 간선을 입력하면 자원 할당 그래프에서 사이클을 찾아 교착 여부와 관련 프로세스를 판정합니다. 자원마다 인스턴스가 하나뿐이라는 전제 아래, 사이클이 곧 교착상태입니다.
한 줄에 하나씩 「P1 -> R1」(요청) 또는 「R1 -> P1」(할당)로 적습니다. 화살표 대신 공백이나 쉼표도 됩니다.
교착상태
있습니다
1개의 독립된 교착 그룹을 찾았습니다.
교착 그룹 1
P1 → P2 → R1 → R2 → P1
사용 방법
- 1프로세스가 자원을 요청하는 간선(P1 → R1)과 자원이 프로세스에 할당된 간선(R1 → P1)을 한 줄에 하나씩 입력합니다.
- 2교착상태가 있는지, 있다면 어떤 프로세스·자원이 얽혀 있는지 확인합니다.
- 3예시(고전적 원형 대기·교착 없음·독립된 교착 둘)를 눌러 결과가 어떻게 갈리는지 비교합니다.
자주 묻는 질문
프로세스와 자원을 정점으로 놓고, 프로세스가 자원을 요청하면 프로세스→자원 간선을, 자원이 프로세스에 할당되면 자원→프로세스 간선을 그은 방향 그래프입니다. 이 그래프에서 사이클을 찾으면 교착상태를 판정할 수 있습니다.
P1이 R1을 쥔 채 R2를 기다리고 P2가 R2를 쥔 채 R1을 기다리면, 둘 다 상대가 자원을 놓아 주기를 기다리는데 상대도 마찬가지라 영원히 못 풀립니다. 이 관계가 정확히 그래프의 사이클(P1→R2→P2→R1→P1)로 나타납니다 — 단, 자원마다 인스턴스가 하나뿐일 때만 그렇습니다.
사이클이 있어도 반드시 교착은 아닙니다. 사이클 밖의 프로세스가 자원을 반납하면 사이클 안의 프로세스도 그 자원을 받아 풀릴 수 있기 때문입니다. 정확히 판정하려면 «축약(reduction)» 절차 — 끝낼 수 있는 프로세스를 하나씩 지워 나가는 것 — 가 필요합니다. 이 계산기는 인스턴스가 하나뿐이라고 전제하므로, 여러 개인 자원이 섞여 있으면 실제와 다를 수 있습니다.
은행원 알고리즘은 요청을 «들어주기 전에» 미리 안전한지 검사해 교착 자체가 생기지 않도록 막는 회피(avoidance) 기법입니다. 이 계산기는 이미 벌어진 상태에서 사이클을 찾아 교착을 확인하는 검출(detection) 기법이라, 적용하는 시점 자체가 다릅니다.
전송되지 않습니다. 모든 계산은 브라우저 안에서 이뤄지고 입력값은 이 기기에만 남습니다.
알아두면 좋은 점
- 사이클 검출은 강한 연결 요소(SCC) 계산과 같은 문제라 dev/tarjan-scc의 알고리즘을 그대로 재사용합니다.
- 자원 종류마다 인스턴스가 하나뿐이라고 전제합니다. 인스턴스가 여러 개인 자원이 섞여 있으면 실제 교착 여부와 다를 수 있습니다.
- 한 그래프 안에 서로 독립된 교착이 여럿 있을 수 있으며, 이 경우 그룹을 나눠 모두 보여줍니다.
- 입력한 값은 브라우저 안에서만 계산되며 서버로 전송되지 않습니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 3일 · 결과는 참고용 추정치입니다.