ecsimsw
Dead Lock 본문
Dead Lock
- P1과 P2가 각각 R1, R2 자원을 사용 중이다. P1은 t0 시점에서 R1,R2를 동시에 사용하여 작업을 처리해야하고, P2는 그보다 조금 이후인 t1에서 두 자원을 엑세스 해야한다.
- t0에서 R2를 엑세스하고자 했던 P1은 R2가 반환될 때까지 기다리고, t1에서 R1을 엑세스하고자 했던 P2 역시 P1이 작업을 처리하여 R1을 반납하기를 기다리게 되어, 둘은 무한 기다림에 빠질 것이다.
- 이런 교착 상태를 Dead Lock이라고 한다.
Dead Lock Necessary Condition
- Dead Lock은 다음의 4가지 상태를 모두 만족하는 상황에서 발생한다.
1. Mutual exclusion
2. Hold and Wait
3. No Preemption
4. Circuit wait
Solution
> Prevention
- 반대로 위 4가지 중 하나만 불만족 시킨다면 Dead Lock 문제를 예방할 수 있다.
1. mutual exclusion : 일반적으로 불가능
2. hold and wait : 자원을 갖고 있는 상황에서 다른 자원을 엑세스하지 않게 한다. 일부만 엑세스 가능할 경우 보유 자원을 모두 rellease한다. / 자원 활용률이 떨어진다.
3. No preemption : 일반적으로 불가능를 자
4. Circuit wait : 자원에 번호를 붙여 엑세스 방향을 구분한다. 오름 차순 엑세스. / 자원 활용률이 떨어진다.
> Avoidance
- 교착 상태를 프로세스의 잘못된 자원 배분이라고 생각한다.
- 자원을 할당할 때, 불안정한 할당을 미리 배제하여 처리한다.
> Dection & Recovery
- 주기적인 프로세스 상태 검사를 통해 교착 상태를 확인하고, 해당 프로세스를 강제 종료 시킨다.
- dection overhead가 발생된다.
> Don't care
- 교착 상태는 실제로 잘 일어나지 않는다고 판단한다.
'Computer Science > Operating system' 카테고리의 다른 글
Memory (0) | 2019.10.10 |
---|---|
midterm review (0) | 2019.10.10 |
Traditional synchronization example / Producer and Consumer problem (0) | 2019.10.02 |
Semaphore (0) | 2019.10.02 |
Process Synchronization (0) | 2019.09.26 |