OS Deadlock (교착상태)
Source
Evernote/IFTTT Feedly/OS Deadlock.md
Summary
이 문서는 운영체제(OS)에서 발생하는 교착상태(Deadlock)의 개념, 발생 조건, 모델링, 그리고 처리 방법에 대한 개요를 설명합니다. 교착상태는 두 개 이상의 프로세스가 서로 상대방이 보유한 자원을 기다리며 진행이 멈춘 상태를 의미합니다. 교착상태 발생의 4 가지 필요 조건(상호배제, 비선점, 점유대기, 순환대기)을 제시하며, 자원 할당 그래프(Resource-Allocation Graph)를 통해 교착상태를 시각화하고 사이클(Cycle) 존재 여부에 따른 교착상태 발생 가능성을 분석합니다. 또한 교착상태 처리 전략으로 예방(Prevention), 회피(Avoidance), 탐지 및 회복(Detection & Recovery), 그리고 무시(Ignore) 방식을 소개하고, 각 방식의 특징과 한계를 간략히 기술합니다.
Key Points
- 교착상태 정의: 프로세스들이 서로 상대방의 자원 해제를 무한정 기다려 작업이 완료되지 못하는 상태
- 교착상태 발생의 4 가지 필요 조건: 상호배제(Mutual Exclusion), 비선점(No Preemption), 점유대기(Hold and Wait), 순환대기(Circular Wait)
- 자원 할당 그래프(RAG): 프로세스와 자원을 노드로, 요청/할당 관계를 간으로 표현하여 교착상태 분석에 사용
- RAG 내 사이클과 교착상태: 단일 인스턴스 자원에서는 사이클 존재 시 교착상태 발생, 다중 인스턴스에서는 교착상태 발생 가능성 존재
- 교착상태 처리 방법: 예방(조건 차단), 회피, 탐지 및 회복, 무시(예: Unix, JVM)의 4 가지 접근 방식
- 예방의 한계: 상호배제 조건은 비공유 자원에서 차단 불가, 점유대기 조건 차단은 자원 이용률 저하 및 기아(Starvation) 가능성 초래