패스잇
CS 기초 · 심화

분산 시스템 또는 복잡한 마이크로서비스 환경에서 발생할 수 있는 교착 상태(deadlock)를 예방하거나 탐지하기 위한 고급 전략에는 어떤 것들이 있으며, 각 전략의 구현 복잡도와 실제 적용 시의 고려사항은 무엇인지 설명해 주십시오.

힌트 · 자원 할당 순서 지정, 타임아웃 및 재시도, 데드락 탐지 알고리즘(예: 데드락 그래프) 등이 있습니다. 분산 환경에서는 분산 트랜잭션 관리나 분산 락 매니저를 활용할 수 있습니다.

교착 상태 회피타임아웃분산 잠금리소스 할당 그래프순환 대기 탐지

모범답안

분산 시스템에서 교착 상태는 심각한 문제죠. 이를 예방하거나 탐지하기 위한 고급 전략으로는 크게 두 가지 접근 방식이 있습니다.

첫째, 교착 상태 회피입니다. 가장 대표적인 방법은 자원 할당 순서 지정입니다. 모든 프로세스가 자원을 요청할 때 미리 정해진 순서대로 요청하도록 강제하는 거죠. 이렇게 하면 순환 대기 조건을 원천적으로 방지할 수 있습니다. 구현은 비교적 간단하지만, 모든 자원에 대한 전역적인 순서를 정의하기 어렵거나 성능 저하를 야기할 수 있다는 단점이 있습니다.

둘째, 교착 상태 탐지 및 복구입니다. 시스템에서 주기적으로 자원 할당 그래프를 생성하고 순환 대기를 탐지하는 알고리즘을 사용합니다. 분산 환경에서는 분산 잠금 관리자를 통해 잠금 상태를 중앙에서 관리하거나, 타임아웃 및 재시도 메커니즘을 활용하여 특정 시간 내에 응답이 없으면 잠금을 해제하고 재시도하는 방식도 많이 사용됩니다. 타임아웃은 구현이 쉽지만, 실제 교착 상태가 아닌 경우에도 불필요한 재시도를 유발할 수 있습니다. 분산 잠금 관리자는 복잡성이 높고 단일 실패 지점이 될 수 있다는 점을 고려해야 합니다.

실제 적용 시에는 시스템의 특성, 성능 요구사항, 복잡성 등을 종합적으로 고려하여 적절한 전략을 조합하는 것이 중요합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 동시성 / 멀티스레딩 면접 질문

← 동시성 / 멀티스레딩 면접 질문 전체 보기