deadlocklock-orderresource-allocation

데드락의 발생 조건과 예방 방법을 설명해 주세요

예상 시간
8
30초 답변

꼬리질문

조금 더 깊게 물어본다면

답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.

상호 배제 조건은 무엇인가요?

부가 설명

데드락은 단순히 느린 상태가 아닙니다. 각 작업이 자기 자원은 놓지 않은 채 상대가 가진 자원을 기다리기 때문에 시간이 지나도 자연스럽게 풀리지 않을 수 있습니다. 예를 들어 A는 DB lock을 잡고 file lock을 기다리고, B는 file lock을 잡고 DB lock을 기다리면 둘 다 앞으로 가지 못합니다.

lock을 완전히 없애기보다 lock 규칙을 명확히 두는 쪽이 현실적인 경우가 많습니다. 획득 순서를 정하고, lock 범위를 줄이고, timeout을 두고, 실패 시 재시도 정책을 둡니다. 예방은 네 조건 중 어떤 조건을 깨는지로 정리할 수 있습니다.

한 줄 정리

데드락은 서로 자원을 쥔 채 기다리는 순환 대기이고, 예방은 네 필요 조건 중 하나를 깨는 일입니다.