ecsimsw

Dead Lock 본문

Dead Lock

JinHwan Kim 2019. 10. 7. 15:05

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가지 상태를 모두 만족하는 상황에서 발생한다. 

 

Circuit wait

   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
Comments