스레드의 교착상태(Deadlock)와 기아상태(Starvation)에 대해서 알아보자.
교착 상태
- 무한 대기 상태: 두 개 이상의 작업이 서로 다른 작업이 끝나기를 기다리면서, 다음 단계로 진행하지 못하는 상태
- 스레드 1
- lock.acquire(1) -> locking
- lock.release(1)
- 스레드 2
- lock.acquire(2)
- lock.release(2)
교착상태 발생 조건
교착상태는 다음 4가지 조건이 모두 성립될 때 발생하기 때문에 4가지 조건 중 한 가지만 성립되지 않도록 하면 교착상태 문제를 해결 할 수 있다.
기아상태(starvation)
- 특정 프로세스의 우선 순위가 낮아서 원하는 자원을 계속 할당 받지 못하는 상태
- 교착 상태와 기아 상태
- 교착 상태는 여러 프로세스가 동일 자원 점유를 요청할 때 발생함
- 기아 상태는 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁하면서, 특정 프로세스는 자원 할당이 안되는 경우를 주로 의미