[OS] Deadlock Handling : Deadlock 발생의 필요조건

parkheeddong·2023년 4월 17일
0

Operating System

목록 보기
28/63
post-thumbnail

📌 Deadlock이 발생하기 위한 필요조건

1) Exclusive Use of Resources : 자원에 대한 배타적 사용

✔️ 한 프로세스가 자원을 할당받고 사용중이면 다른 프로세스는 할당받지 못하기 때문에 교착 상태가 발생한다.

두 개 이상의 프로세스가 함께 사용할 수 있다면(배타적 자원이 아니라면) 기다릴 필요가 없으므로, 교착상태로 이어지지 않을 것이다.

2) Non-preemptible Resources

✔️ 선점하지 못하는 자원이 존재하기 때문에 교착 상태가 발생한다.

한 프로세스가 다른 프로세스가 사용 중이던 자원을 선점할 수 있다면 기다릴 필요가 없으므로 교착 상태로 이어지지 않을 것이다.

3) Hold and Wait (Partial Allocation)

✔️ 일부 자원을 할당 받은 상태에서 다른 자원을 추가로 요청하고 Wait하기 때문에 교착 상태가 발생한다.

p1은 r1을 할당 받고 p2가 r2를 할당받은 상태에서 p1은 r2를, p2는 r1을 요청한 상태는 교착 상태로 이어진다.

4) Circular Wait

✔️ Hold and Wait 에서 한 단계 더 나아간 것으로서, cycle을 형성하고 서로의 자원을 요청하고 있기 때문에 교착 상태가 발생한다.

➡️ 위 4가지 상태가 모두 만족되기 때문에 교착상태가 발생한다.

0개의 댓글