[운영체제] 스레드 - (3)

Yeongsan Son·2021년 7월 2일
0

스레드의 교착상태(Deadlock)와 기아상태(Starvation)에 대해서 알아보자.

교착 상태

  • 무한 대기 상태: 두 개 이상의 작업이 서로 다른 작업이 끝나기를 기다리면서, 다음 단계로 진행하지 못하는 상태

  • 스레드 1
    • lock.acquire(1) -> locking
      • use 1
      • lock.acquire(2)
    • lock.release(1)
  • 스레드 2
    • lock.acquire(2)
      • use 2
      • lock.acquire(2)
    • lock.release(2)

교착상태 발생 조건

  • 상호배제
  • 점유대기
  • 비선점
  • 순환대기

교착상태는 다음 4가지 조건이 모두 성립될 때 발생하기 때문에 4가지 조건 중 한 가지만 성립되지 않도록 하면 교착상태 문제를 해결 할 수 있다.

기아상태(starvation)

  • 특정 프로세스의 우선 순위가 낮아서 원하는 자원을 계속 할당 받지 못하는 상태
  • 교착 상태와 기아 상태
    • 교착 상태는 여러 프로세스가 동일 자원 점유를 요청할 때 발생함
    • 기아 상태는 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁하면서, 특정 프로세스는 자원 할당이 안되는 경우를 주로 의미
profile
매몰되지 않는 개발자가 되자

0개의 댓글