2017년 4월 23일 일요일

12. 교착상태(Deadlock)2


* 교착상태에 대한 대응 방안
  : 교착상태 방지(예방) (Deadlock Prevention)
  : 교착상태 회피 (Deadlock Avoidance)
  : 교착상태 탐지 및 복구 (Deadlock Detection & Recovery)
  : 교착상태 무시 (Don't Care)
 
2-1) 교착상태 방지기법(Deadlock Prevention)
 * 교착상태의 원인이 되는 4 가지 필요조건들 중 한 가지 이상이 발생되지 않도록 한다..
    (상호배타 / 점유와 대기 / 비선점 / 환형 대기)

 (1) 상호배타(Mutual exclusion) 방지
     : 자원을 공유 가능하게 하면 된다.
     : 문제 점 - 그러나 원천적으로 사용중인 자원을 공유하는 것은 불가능 하다.
                CPU, Memory, Print 등은 동시 공유가 불가능하다.

 (2) 점유와 대기(Hold & Wait) 방지
     : 어느 자원을 점유한 상태에서 다른 자원을 기다리지 않도록 한다. 즉, 점유하고 있는 자원이 없을 때만 요청한다.
      : 요청한 자원을 다른 프로세스가 점유하고 있다면 자신이 점유한 자원을 놓아 주도록 한다.
     : 필요한 자원을 동시에 요청하도록 한다(어느 하나만 점유 불가능).
     : 문제점 - 자원 활용률 저하, 특정 프로세스의 기아(starvation) 발생 가능성

 (3) 비선점 (No preemption) 방지
     : 자원을 선점 가능하게
     : 문제점 - 가능한 경우도 있지만 대체로 불가능 하다.
                CPU는 선점할 수 있어도 그 이외의 자원은 불가능 하다. 프린터를 사용중인데 강제로 빼앗아서 다른 인쇄물을 출력 할수는 없다.

 (4) 순환대기 (Circular wait) 방지
     : 자원에 번호를 부여하고 프로세스는 번호의 오름차순으로 자원을 요청하도록 한다.
Circular wait
< 식사하는 철학자: 순환대기 방지 > 
                         P0: R0 요청 후 R1 요청
                              P1: R1 요청 후 R2 요청
                         P2: R2 요청 후 R3 요청
                         P3: R3 요청 후 R4 요청
                         P4: R0 요청 후 R4 요청 <= 때문에 순환이 깨어짐

     : 문제점 - 자원 활용률 저하

댓글 없음:

댓글 쓰기