Hayden's Archive

[운영체제] 교착상태(Deadlock) 본문

Study/CS

[운영체제] 교착상태(Deadlock)

_hayden 2020. 6. 7. 12:50

참고 : 방통대 김진욱 교수 운영체제 강의

교착상태(Deadlock) : 관련된 모든 프로세스가 무한히 대기
기아상태(Starvation) : 관련된 일부 프로세스가 지속적으로 대기



* 교착상태(Deadlock)의 필요조건
(아래 4가지가 동시에 만족될 경우 교착상태가 일어날 수 있음)

1. 상호배제 조건
- 공유할 수 없고 동시에 쓸 수 없는 자원일 때 발생함.
- 하나의 자원이 있고 프로세스 A가 쓰고 있으면 프로세스 B는 쓰지 못하고 기다려야 함.

2. 점유 대기 조건
- 점유하고 있는 상태로 기다린다.
- 프로세스 A가 자원 a를 할당받아 배타적으로 점유하고 있는데 프로세스 B가 점유하고 있는 자원 b가 해제되기를 기다림

3. 비선점 조건
- 선점은 자원을 빼앗아올 수 있는 건데, 비선점은 자원을 빼앗아올 수 없음.
- 프로세스 A에게 자원 a가 할당되었으면 프로세스 A가 사용 다 하고 스스로 반환하기 전에는 다른 프로세스가 빼앗아갈 수 없음.
- 현재 자원 a를 할당 받은 프로세스 A만 해제 가능.

4. 환형 대기 조건
- 환형은 동그라미. 사이클(Cycle) 자원 점유와 요구가 환형을 이루며 대기.
- 서로가 가지고 있는 자원을 서로 요구하며 대기하는 것

 

위 그림에서 k는 단위자원의 개수를 뜻한다.