2017년 4월 23일 일요일

12. 교착상태(Deadlock)3


2-2) 교착상태 회피(Deadlock Avoidance)
    * 프로세스들은 여러 자원을 필요로 한다. 프로세스가 자원을 사용 하기 위해서는 O/S에게 요청을 해야하고 O/S는 이를 승인하고 할당해 주어어야 하며 회수도 해야 한다. 따라서 교착상태란 O/S가 자원의 할당을 잘 못 했기 때문에 발생한다고 전제한다.
    * 교착상태 회피(avoidance) 기법은
      :  교착상태 방지(Prevention)에 비해 소극적이며 시스템의 효율을 높이는데 목적을 두고 있다.
      : 현재 가용자원을 프로세스 요청시 바로 할당해 줄 것인지(안정 상태), 기다리게 할 것인지(불안전 상태)를 결정하는 문제와 같다.
       - 안전 상태(safe state): 시스템이 교착상태를 일으키지 않으면서 각 프로세스가 요구한 최대 요구량만큼 필요한 자원을 할당해 줄 수 있는 상태이다.
       - 불안전 상태(unsafe state): 안정 상태와 달리 프로세스의 자원 할당 및 해제의 순서가 불명확하여 교착상태의 발생가능성이 있다

Deadlock Avoidance

Deadlock Avoidance

   * Banker's Algorithm(은행가 알고리즘)
     : 교착상태 회피 알고리즘
     : 프로세스가 자원을 요구할 때 시스템은 자원을 할당한 후에도 안정 상태로 남아있게
되는 지를 사전에 검사하여 교착상태의 발생을 회피하는 기법
      (마치 은행이 대출을 시행한 후에 파산하지 않고 정상 유지되지는를 검사하여 안전하다고 판단될 때만 대출을 시행하는 것과 같은 개념)
     : 각 프로세스가 실행되기 전에 필요로 하는 모든 자원 형태들의 최대수를 알아야 함.
     : 프로세스가 자원을 요구할 때 시스템은 자원을 할당한 후에도 안정 상태로 남아있게 되는지 검사.
     : 안정 상태에 있으면 자원을 할당, 그렇지 않으면 다른 프로세스들이 자원을 해제할 때까지 대기.

   * Banker's Algorithm(은행가 알고리즘)의 문제점
      : 할당할 수 있는 자원의 일정량을 상시 필요로 한다.
     : 사용자가 최대 필요량을 미리 알려주도록 요구하지만 자원 할당 방법이 점점 동적으로 변함에 따라 사용자의 최대 필요량을 파악하기 어려워 짐.
     : 교착상태 회피 알고리즘을 실행하면 시스템 과부하가 증가함.
     : 항상 불안정상태를 방지해야 함으로 자원 이용률이 낮아짐.

댓글 없음:

댓글 쓰기