경쟁 상태와 교착 상태

경쟁 상태

공유 자원을 둘 이상의 프로세스 또는 스레드가 동시에 읽거나 쓰는 상황.

경쟁상태를 방지하는 조건

  • 상호 배제(Mutual exclusion): 한 시점에 한 프로세스만 자원을 사용할 수 있다.
  • 진행(Progress): 공유 자원이 사용되고 있지 않으면, 해당 자원을 요구하는 프로세스 중 하나는 자원을 사용할 수 있다. 이때 프로세스끼리 방해하지 않는다. 자원이 효율적으로 사용되도록 한다.
  • 한정 대기(Bounded waiting): 모든 프로세스가 공유 자원에 접근하기 위해 대기하는 시간이 한정되어 있다. 특정 프로세스가 영원히 대기하는 것을 방지하는 목적.

교착 상태

두 개 이상의 프로세스가 서로가 가진 자원을 기다리며 중단된 상태.

교착상태의 필요조건

  • 상호 배제(Mutual exclusion): 한 시점에 한 프로세스만 자원을 사용할 수 있다.
  • 비선점(No preemption): 다른 프로세스의 자원을 강제적으로 가져올 수 없다.
  • 점유 대기(Hold and wait): 프로세스가 자원을 할당 받은 채로 자원을 요청하며 대기한다.
  • 순환 대기(Circular wait): 여러 프로세스가 순환하는 형태로 점유 대기한다.