조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다
1. 개요
교착상태
- 2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리는 무한루프에 빠진 상태
- 여러 프로세스가 함께 작업을 수행하다 보니 자연적으로 일어나는 문제
- OS는 감시를 하다 교착상태가 발생하면 강압적으로 해결해야 함
발생
- 시스템 자원: 다른 프로세스와 공유할 수 없는 자원을 사용할 경우 (printer, recorder)
- 공유 변수: 제대로 동기화되지 않아 무한 대기 발생
- 응용 프로그램: 데이터베이스의 특정 데이터 락을 걸어 다른 트랜잭션이 접근하지 못할 경우
자원 할당 그래프
- 프로세스가 어떤 자원을 사용중이고 어떤 자원을 기다리고 있는지를 방향성이 있는 그래프로 표현한 것
2. 필요조건
상호 배제
- 한 프로세스가 사용하는 자원은 다른 프로세스와 공유할 수 없는 배타적인 자원이여야 함
- 만약 배타적인 자원을 공유해서 사용하게 된다면 교착 상태가 발생함
비선점
- 사용 중인 자원은 중간에 다른 프로세스가 빼앗을 수 없는 비선점 자원이여야 함
점유와 대기
- 프로세스가 어떤 자원을 할당받은 상태에서 다른 자원을 기다리는 상태여야 함
원형 대기
- 점유와 대기를 하는 프로세스 간의 관계가 원을 이루어야 함
- 서로 방해하는 방향이 원을 이루면 프로세스들이 서로 양보하지 않기 때문에 교착 상태에 빠짐
3. 해결 방법
예방
상호 배제 예방
- 시스템 내 독점적으로 사용할 수 있는 자원을 없애기
비선점 예방
- 모든 자원을 빼앗을 수 있도록 만드는 방법
점유와 대기 예방
- 자원을 점유한 상태에서 다른 자원을 기다리지 못하게 하는 방법
- 전부 할당하거나 아예 할당하지 않는 방식을 적용함
원형 대기 예방
- 프로세스들이 원형을 이루지 못하도록 막는 방법
- 자원을 한 방향으로만 사용하도록 설정함으로써 예방 가능
회피
- 자원을 할당할 때, 어느 수준 이상의 자원을 나누어주면 교착 상태가 발생하는지 파악
- 해당 수준 이하로 자원을 나누어주는 방식
검출
- 운영체제가 프로세스의 작업을 관찰하면서 교착 상태 발생 여부를 계속 주시하는 방식
회복
- 교착 상태가 검출되면, 교착 상태를 푸는 후속 작업을 하기
- 교착 상태를 유발한 프로세스를 강제로 종료함
'OS' 카테고리의 다른 글
[쉽게 배우는 운영체제] 8. 가상 메모리의 기초 (0) | 2024.12.12 |
---|---|
[쉽게 배우는 운영체제] 7. 물리 메모리 관리 (0) | 2024.12.12 |
[쉽게 배우는 운영체제] 5-1. 프로세스 동기화 (0) | 2024.12.12 |
[쉽게 배우는 운영체제] 4-2. CPU 스케줄링: 인터럽트 처리 (0) | 2024.12.12 |
[쉽게 배우는 운영체제] 4-1. CPU 스케줄링 (0) | 2024.12.12 |