← 질문 목록
#24깊이 0

데드락은 어떤 조건이 모두 모여야 생기는가?

운영체제기초동시성

네 조건이 동시에 성립할 때다. 하나만 깨도 데드락은 생기지 않는다.

조건
상호 배제자원을 한 번에 하나만 쓸 수 있다
점유하며 대기하나를 쥔 채로 다른 것을 기다린다
비선점쥔 것을 강제로 뺏을 수 없다
순환 대기기다림이 고리를 이룬다

가장 자주 깨뜨리는 조건은 순환 대기다. 자원에 순서를 매기고 항상 그 순서로만 잡게 하면 고리가 생길 수 없다. 계좌 두 개를 잠글 때 언제나 번호가 작은 쪽부터 잡는 식이다.

점유하며 대기를 깨는 방법도 있다. 필요한 자원을 한 번에 전부 잡거나, 못 잡으면 쥔 것을 놓고 처음부터 다시 한다. 다만 이쪽은 굶주림이 생길 수 있다 — 계속 실패하는 쪽이 영영 못 잡는다.

예방과 회피와 탐지는 서로 다른 대응이다. 예방은 조건을 아예 못 만들게 한다. 회피는 요청마다 안전한지 따져본다. 탐지는 생기게 두되 발견하면 푼다. 데이터베이스는 대개 마지막을 고른다 — 앞의 둘이 처리량을 너무 깎기 때문이다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

데드락은 어떤 조건이 모두 모여야 생기는가?