[OS] 교착상태의 개념과 조건

GonnabeAlright·2021년 11월 24일
0
post-thumbnail
post-custom-banner

교착상태(Deadlock)란 ?

  • 첫 번째 스레드는 두 번째 스레드가 들고 있는 객체의 락이 풀리기를 기다리고 있고, 두 번째 스레드 역시 첫 번째 스레드가 들고 있는 객체의 락이 풀리기를 기다리는 상황을 일컷는다.
  • 모든 스레드가 락이 풀리기를 기다리고 있기 때문에, 무한 대기 상태에 빠지게 된다. 이런 스레드를 교착상태에 빠졌다고 한다.

교착상태의 4가지 조건

1. 상호 배제(mutual exclusion)

  • 한 번에 한 프로세스만 공유 자원을 사용할 수 있다.
  • 좀 더 정확하게는, 공유 자원에 대한 접근 권한이 제한된다. 자원의 양이 제한되어 있더라도 교착상태는 발생할 수 있다.

2. 들고 기다리기(hold and wait) = 점유대기

  • 공유 자원에 대한 접근 권한을 갖고 있는 프로세스가, 그 접근 권한을 양보하지 않은 상태에서 다른 자원에 대한 접근 권한을 요구할 수 있다.

3. 선취(preemption) 불가능 = 비선점

  • 한 프로세스가 다른 프로세스의 자원 접근 권한을 강제로 취소할 수 없다.

4. 대기 상태의 사이클(circular wait) = 순환대기

  • 두 개 이상의 프로세스가 자원 접근을 기다리는데, 그 관계에 사이클이 존재한다.

교착상태 방지

  • 4가지 조건들 가운데 하나를 제거하면 된다.
  • 공유 자원 중 많은 경우가 한 번에 한 프로세스만 사용할 수 있기 때문에(예를 들어, 프린트) 1번 조건은 제거하기 어렵다.
  • 대부분의 교착상태 방지 알고리즘은 4번 조건, 즉 대기 상태의 사이클이 발생하는 일을 막는 데 초점이 맞춰져 있다.
post-custom-banner

0개의 댓글