📍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의 정책에 의해 교착상태가 발생한 상태
'운영체제' 카테고리의 다른 글
[운영체제] 7. 교착상태 - (3) 교착상태 회피 (0) | 2025.05.01 |
---|---|
[운영체제] 7. 교착상태 - (2) 교착상태 해결 (0) | 2025.05.01 |
[운영체제] 4. 스레드 관리 - (5) 멀티스레딩에 관한 이슈 (0) | 2025.04.17 |
[운영체제] 4. 스레드 관리 - (4) 멀티코어와 멀티스레딩 (0) | 2025.04.17 |
[운영체제] 4. 스레드 관리 - (3) 스레드 구현 유형 (2) | 2025.04.17 |