2017년 4월 23일 일요일

12. 교착상태(Deadlock)1


1) 교착상태의 발생조건

Deadlock

 * 교착상태(Deadlock)이란?
   : 프로세스들이 자원의 사용을 위해 대안 없이 무한정 기다리게 되는 상태

 * 교착상태의 발생 현상
   : 프로세스의 자원 사용 절차
     O/S에 요청(Request) => 점유, 사용(Use) => O/S에 반납(Release)
   : 어떤 프로세스가 특정 자원을 점유하고 있으면서 다른 프로세스가 점유하고 있는 다른 자원을 사용하기 위해 무한정 기다리게 됨으로써 교착상태가 발생하게 된다.

 * 교착상태의 발생 조건(필요조건,Necessary Conditions)
   : 항상 발생하는 것은 아니며 아래 4조건이 만족할 경우 발생할 수도 있게 된다.
  (1) 상호 배타(Mutual exclusion)
  (2) 점유와 대기(Hold and Wait)
  (3) 비선점 (No Preemptive)
  (4) 순환대기(Circular wait)

Deadlock
  예제) 식사하는 철학자 문제
  -- 상호배타 : 포크는 공유될 수 없다.
  -- 점유와 대기 : 모든 철학자들이 왼쪽의 포크를 쥐고 우측의 포크를 기다린다.
  -- 비선점 : 다른 철학자가 잡고 있는 포크를 강제로 빼앗을 수 없다.
  -- 순환대기 : 점유와 대기가 반시계 방향으로 순환되고 있다.
Deadlock

  * 자원할 당도(Resource Allocation Graph)
   : 어떤 자원이 어떤 프로세스에게 할당되어져 있는가?
   : 어떤 프로세스가 어떤 자원을 할당 받으려고 기다리고있는가?
   : 자원할당도를 통해 교착상태가 일어날지 아닐지를 알 수 있다.

Resource Allocation Graph


Resource Allocation Graph

Resource Allocation Graph
< 식사하는 철학자 문제: 자원할당 그래프 => 교착상태 >
모든 철학자들이 왼쪽 포크를 할당 받고(점유하고) 오른쪽 포크를 기다리고 있음(요청중).

댓글 없음:

댓글 쓰기