본문 바로가기
운영체제

[운영체제] 7. 교착상태 - (1) 교착상태 개념

by NoDapKeepGoing 2025. 5. 1.

📍1. 교착상태(deadlock)

자원을 소유한 2개 이상의 프로세스 사이에서, 각 프로세스는 다른 프로세스가 소유한 자원을 요청하여 무한정 대기하는 상태

 

 

📍2. 교착상태 발생 위치

✔️사용자가 작성한 응용 프로그램에서 주로 발생

- 정교하지 못한 코딩에서 비롯

✔️커널 내에서도 발생

- 매우 정교하게 작성되기 때문에 매우 드물게 발생

✔️교착상태 발생을 방지하는 컴퓨터 시스템은 거의 없음

- 막는데 많은 시간과 공간 비용 때문

 

 

📍3. 컴퓨터 시스템에 잠재된 교착상태 유발 요인

1️⃣공유 자원은 교착 상태의 발생지

✔️교착상태는 다중프로세스가 자원을 동시에 사용하려는 충돌이 요인

✔️소프트웨어 자원: 뮤텍스, 스핀락, 세마포, 파일, 데이터베이스, 파일 락

✔️하드웨어 자원: 프린터, 메모리, 처리기 등

2️⃣자원과 프로세스
✔️한 프로세스가 여러 자원을 동시에 필요로 하는 상황이 요인

3️⃣운영체제 공유 자원 할당 정책

✔️(1) 공유 자원에 대한 상호배재 보장

✔️(2) 할당된 공유 자원은 프로세스가 자발적으로 내놓기 전에 강제로 뺏지 못하는 정책이 요인

 

 

📍4. 교착상태 모델링

✔️자원 할당 그래프(Resource Allocation Graph, RAG)

- 노드(vertex): 프로세스(원), 자원(사각형)

- 간선(edge): 소유/요청(자원 할당 간선과 자원 요청 간선) 관계

- 사각형 내의 점의 수: 동일 자원의 개수

 

✔️프로세스와 자원 간의 할당과 요청 관계를 표시 예

 

 

✔️자원 할당 그래프 사례

 

✔️교착상태 발생 사례

 

 

📍5. 교착상태가 발생하는 필요조건

1️⃣상호 배제(Mutual Exclusion) 조건

- 한 순간에 한 프로세스만이 자원을 사용할 수 있음
- 한 프로세스에 의해 점유된 자원을 다른 프로세스들이 접근할 수 없음

2️⃣점유와 대기(Hold & Wait) 조건

- 자원을 요청하여 기다리는 프로세스가 이미 할당된 자원을 점유하고 있음

3️⃣비선점(Non-preemption) 조건

- 프로세스에 의해 점유된 자원을 다른 프로세스가 강제적으로 빼앗을 수 없음

➡️운영체제가 지향하는 합리적인 자원 관리(할당) 정책들임

 

 

📍6. 교착상태 발생 충분조건

✔️ 환형대기(Circular Wait) 조건

- 프로세스들 간에 닫힌 연결(closed chain)을 이루고, 각 프로세스가 연결의 다른 프로세스가 원하는 자원을 최소한 하나씩 가지고 있는 상태임

 

☑️ OS의 정책에 의해 교착상태가 발생한 상태