패스잇
CS 기초 · 중급

교착 상태(Deadlock)의 발생 조건 4가지와 해결 방법에 대해 설명해주세요.

힌트 · 상호 배제, 점유 대기, 비선점, 순환 대기를 생각해보세요.

상호 배제점유 대기비선점순환 대기교착 상태 회피

모범답안

교착 상태는 여러 프로세스가 서로 원하는 자원을 점유하고 있어, 어느 프로세스도 작업을 진행하지 못하는 상황을 말합니다. 발생 조건은 크게 네 가지가 있습니다.

첫째, 상호 배제입니다. 자원은 한 번에 하나의 프로세스만 사용할 수 있어야 합니다. 둘째, 점유 대기입니다. 프로세스가 이미 자원을 가지고 있으면서, 다른 자원을 기다리는 상태여야 합니다. 셋째, 비선점입니다. 프로세스가 점유한 자원은 강제로 빼앗을 수 없어야 합니다. 마지막으로, 순환 대기입니다. 프로세스들이 서로 꼬리 물기 식으로 자원을 요구하는 상황이 발생해야 합니다.

교착 상태 해결 방법으로는 예방, 회피, 탐지 및 복구가 있습니다. 예방은 위 네 가지 조건 중 하나라도 발생하지 않도록 시스템을 설계하는 것이고, 회피는 안전한 상태를 유지하면서 자원을 할당하는 것입니다. 탐지 및 복구는 교착 상태를 탐지한 후, 프로세스를 종료하거나 자원을 강제로 회수하여 해결하는 방법입니다. 교착 상태 회피를 위해 은행원 알고리즘 같은 방법을 사용할 수 있습니다.

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

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

함께 보는 네트워크 면접 질문

← 네트워크 면접 질문 전체 보기