교착 상태
교착 상태의 개념
- 다중 프로그래밍에서 일어나지 않을 사건을 기다리는 상태
- 작업 정지되어 명령 진행 불가한 상태
- 해결 못할 경우 외부 종료 명령으로 해결해야 함
- 하나 이상의 작업에 영향을 주어 무한 대기 , 기아 상태보다 더 심한 문제 야기
- 자원 해제 요청이 받아들일 때까지 프로세스들 작업 진행 불가
- 자원 해제 수신 때까지 현재 보유 자원 해제 불가
- 두 프로세스가 비공유 자원을 서로 기다리고 있을 때 발생

프로세스의 자원 사용 순서
- 자원 요청
- 프로세스가 필요 자원 요청
- 해당 자원을 다른 프로세스가 사용 중이면 요청 수락 때까지 대기
- 자원 사용
- 프로세스가 요청한 자원을 획득하여 사용
- 자원 해제
- 프로세스가 자원 사용 마친 후 해당 자원 되돌려(해제) 줌
교착 상태의 예
- 스풀링 시스템에서 발생하는 교착 상태
- 쉽게 교착 상태에 빠짐
- 스풀링 처리부에 공간 넉넉하면 교착 상태 발생률 감소하나 비용이 많이 듦
교착 상태 발생의 4가지 조건
상호배제
- 자원을 최소 하나 이상 비공유. 즉 한 번에 프로세스 하나만 해당 자원 사용 가능
- 사용 중인 자원을 다른 프로세스가 사용하려면 요청 자원 해제될 때까지 대기
점유와 대기
- 자원을 최소한 하나 정도 보유. 다른 프로세스에 할당된 자원을 얻으려고 대기하는 프로세스가 있어야 함
비선점
- 자원 선점 불가. 즉 자원은 강제로 빼앗을 수 없고, 자원 점유하고 있는 프로세스가 끝나야 해제
순환(환형) 대기
- 예

그래프에 있는 사이클은 교착 상태 발생의 필요 조건이지, 충분조건 아님
사이클이 있는 교착 상태의 그래프 순환을 갖더라도 빠져나갈 수 있으면 교착 상태가 아니다.
'Computer Science > Operating System' 카테고리의 다른 글
| 교착 상태 해결 - 회피 (0) | 2024.04.12 |
|---|---|
| 교착 상태 해결 - 예방 (1) | 2024.04.12 |

