데드락 4조건을 외운 사람과 시스템 자원 흐름까지 보는 사람을 가르려는 질문이다. 정의에서 멈추는지, 어느 조건을 어떤 상황에 어떻게 깨야 하는지로 이어가는지를 본다.
교착 상태는 여러 스레드나 프로세스가 서로 가진 자원을 기다리면서 영원히 진행되지 않는 상태다. 상호 배제, 점유 대기, 비선점, 원형 대기 네 조건이 동시에 성립할 때 발생하며, 어느 하나만 깨도 막을 수 있다. 다만 어떤 조건을 어떻게 깨는지는 시스템 특성에 따라 갈린다 — 자원 획득 순서 통일은 락 종류가 많지 않을 때 잘 듣고, tryLock 타임아웃은 회복은 되지만 재시도 폭주를 부를 수 있다. 그래서 예방과 회복 전략을 함께 두고 트레이드오프를 본다.
스레드 덤프에서 데드락을 잡아본 경험이 있다면 그 추적 과정과 연결할 수 있다
락 순서를 표준화해서 장애 빈도가 줄었던 사례를 운영 신뢰도 개선과 엮을 수 있다
tryLock 타임아웃 값을 어떻게 정했는지 자기 서비스 트래픽 특성과 연결할 수 있다
아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.