2017년 4월 24일 월요일

12. 교착상태(Deadlock)4


2-3) 교착상태 탐지 및 복구(Deadlock Detection & Recovery)
   * 교착상태 탐지(Detection)
     : 교착상태가 발생했는지 파악하기위해 시스템을 주기적으로 검사하는 알고리즘
     : 사전에 교착상태의 발생에 대해 염려하지 않고 탐지만 하고 있다가 교착상태가 탐지되면 이를 복구하도록 한다.
     : 얼마나 자주 탐지를 위한 검사를 해야할 것인가가 문제. 자주할 수록 탐지는 수월할 수 있지만 자원 이용률이 크게 감소된다.

   * 교착상태 복구(Recovery)
     a. 프로세스 중지 방법
       - 교착상태 프로세스를 모두 중지.
        교착상태의 순환대기를 확실히 해결하지만 자원 사용과 시간 면에서 비용이 많이 듬. 즉, 오랫동안 연산했을 가능성이 있는 프로세스의 부분 결과를 폐기하여 나중에 다시 연산해야 함.
       - 한 프로세스씩 중지.
         한 프로세스가 중지될 때마다 교착상태 탐지 알고리즘을 호출하여 프로세스가 교착상태에 있는지 확인. 이는 교착상태 탐지 알고리즘 호출에 대한 부담이 큼.

     b. 자원 선점 방법
       - 프로세스의 자원을 선점하여 교착상태가 해결될 때까지 선점한 자원을 다른 프로세스에 할당하여 이용.


2-4) 교착상태 무시
   * 교착상태는 일반적으로 자주 발생되는 현상은 아니다.
      따라서 이를 해결하기 위한 노력의 비용이 너무 과하며 시스템 효율도 떨어진다.
   * 일반 PC의 경우 교착상태를 고려하기 보다는 무시하는 것이 효용가치가 높다.
   * 교착상태가 발생해서는 안될경우 무시해서는 안된다.
     예) 우주 탐사 시스템, 미사일 로켓 시스템 등등

3) 기아상태(Starvation)
  * 교착상태의 예방을 위해 자원을 할당하다 보면 기아상태가 발생할 수 있음.
  * 식사하는 철학자 문제
   항상 2명만이 식사를 할 수 있음. 동시에 5명이 식사를 하려 하면 교착상태에 빠지게 됨.
   따라서 어떤 철학자가 기아상태가 될 가능성을 항상 내포하고 있음.
  * 기아상태인 프로세스가 없도록 계속 추적 관리해야 함.
   

댓글 없음:

댓글 쓰기