[OS] Lecture 7. Deadlock (2_5) - kibitzing/EnGrow GitHub Wiki
유튜브 링크
진구
데드락이 발생하려면 네 가지 요건이 모두 충족 되어야 함
- 자원의 종류가 non-preemptive (뺏을 수 없음)
- exclusive (누가 쓰고 있으면 다른 프로세스 못 씀
- hold and wait: 하나 잡고 다른 하나도 잡아서 하려고 함.
- circular wait: 그러다가 서로 꼬리를 물어버림 ㅎ
state transition model 재밌네.
저렇게 다 표현할 수 있으면 데드락 다 막을 수 있는걸까?
데드락이 아예 발생 안하게도 잘 만들 수 있는걸까?
세영
Deadlock Model
- Graph model
- 서로의 순환 참조 현황을 쉽게 파악할 수 있음
- State transition model
- 각 프로세스가 몇 개의 자원을 할당받았거나 요청하고 있는지에 대한 상태
- 모든 상태가 다 있기 때문에 어느 상황에서 Deadlock이 나타나는지 알 수 있음
Deadlock 필요 조건
-
상호 배제 - 비선점 - 점유 대기 - 순환 대기
- 상호 배제:
- 화장실은 한 칸에 한 사람만 사용할 수 있음
- 비선점:
- 화장실에 들어있는 사람은 강제로 끌어낼 수 없음
- 점유 대기:
- 화장실 안에 있는 사람이 휴지를 사용하기 위해 기다리고 있는 상태
- 순환 대기:
- 화장실 안에 있는 사람은 휴지가 필요한데, 화장실 대기자가 휴지를 쓰고있음
→ 화장실 안에 있는 사람은 나올 수 없고, 대기자는 들어갈 수 없음
- 상호 배제: