패스잇
CS 기초 · 기초

'데드락(Deadlock)'이란 무엇이며, 데드락이 발생하기 위한 4가지 필수 조건을 설명해 주세요.

힌트 · 데드락은 두 개 이상의 스레드가 서로의 자원을 기다리며 무한히 블록되는 상태입니다. 상호 배제, 점유 및 대기, 비선점, 순환 대기가 필수 조건입니다.

상호 배제점유 대기비선점순환 대기자원 할당 그래프

모범답안

데드락은 두 개 이상의 스레드 또는 프로세스가 서로가 점유하고 있는 자원을 기다리면서 무한정 멈춰있는 상태를 말합니다. 마치 교착 상태에 빠진 것과 같죠.

데드락이 발생하려면 네 가지 필수 조건이 모두 충족되어야 합니다.

첫째, 상호 배제(Mutual Exclusion)입니다. 자원은 한 번에 하나의 스레드만 사용할 수 있어야 합니다.

둘째, 점유 및 대기(Hold and Wait)입니다. 스레드가 이미 자원을 점유한 상태에서 다른 자원을 기다려야 합니다.

셋째, 비선점(No Preemption)입니다. 스레드가 점유한 자원은 강제로 뺏을 수 없어야 합니다.

넷째, 순환 대기(Circular Wait)입니다. 스레드들이 자원을 서로 순환적으로 기다리는 관계가 형성되어야 합니다. 예를 들어, 스레드 A는 스레드 B가 가진 자원을 기다리고, 스레드 B는 스레드 A가 가진 자원을 기다리는 상황입니다.

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

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

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

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