운영체제 수업 + Operating System Concepts 10E 정리 내용
Operating System Ch08 : Deadlock
Deadlock Problems
1. Deadlock
- deadlock
- lock 상태를 해결하지 못하고 절대 빠져나오지 못하는 상황
- 대기 중인 프로세스 중 하나로 인해 발생할 수 있는 이벤트를 두개 혹은 더 많은 프로세스가 무한정 기다리는 상태
2. Simple example
- p0와 p1 프로세스가 존재하고 S와 Q라는 semaphore를 각각 wait하려고 하는 상황에서 deadlock이 발생한다.
Deadlock Characterization
1. Deadlock 발생 조건
- 아래의 네개의 동작이 동시에 발생하면 deadlock 상황이 일어날 수 있다.
- Mutual exclusion
한번에 하나의 프로세스만 공유자원에 접근할 수 있다.
- Hold and wait
공유자원이 여러 개가 있는 상황에서 하나를 점유한 상태에서 다른 공유자원을 기다리는 상황
- No preemption
공유자원을 가지고 내려놓지 않는 상황 (스스로 공유자원을 내려놓지 못하는 상황)
- Circular wait
생각하는 철학자의 문제(모든 철학자가 자신의 왼쪽의 젓가락을 들면 오른쪽 젓가락이 없어서 무한정 기다리는 상황)와 유사한 상황
2. Handling Deadlocks
- 개발자의 능력
- Deadlock prevention:
위에서 언급한 문제가 모두 발생하지 않도록 막기
- OS의 개입
- Deadlock avoidance:
deadlock이 발생할 것 같은 상황을 확인하고 막아준다.
- Deadlock detection and recovery:
OS가 모니터링 하면서 deadlock 조건이 만족되면 발견 후 후속 조치를 한다.
- Deadlock ignorance:
deadlock이 발생하여도 무시한다.
- Deadlock을 피하기 위해서는 스케줄링 이슈, deadlock의 원인 파악 등으로 인해서 OS에 매우 큰 overhead가 발생한다.
- OS가 개입하는 방식은 overhead로 인해서 사용하지 않고 실제로는 개발자의 능력을 통해 방지하는 방식만 사용한다.
3. example