8.1. 시스템 모델

데드락 (deadlock)

한 프로세스의 집합 내의 모든 스레드그 집합 내의 다른 스레드에 의해서만 일어날 수 있는 event를 기다리는 상태

즉, 어떤 스레드 (or 프로세스)가 필요로 하는 자원을 다른 waiting 스레드에서 점유하고 있는 상태

(모든 프로세스가 waiting 상태 ⇒ waiting 상태가 영원히 끝나지 않는다.)

시스템을 고려해보자

시스템은 경쟁하는 스레드들 사이에 분배 되어야 할 유한한 수의 자원들로 구성된다.

이러한 자원들은 하나의 **타입 (type)**으로 분할된다..

→ 여러 개의 identical instance를 하나의 Resource type으로 정의한다.

ex) 한 시스템이 4개의 CPU를 가진다면, Recource type CPU는 4개의 인스턴스를 가진다.

만약 스레드가 어떤 Resource type의 한 인스턴스를 요청하면, 동일한 Resource type의 “임의의” 인스턴스를 할당함으로써 요청이 충족된다.

스레드는 주로 **요청 (request) - 사용 (use) - 반납 (release)**의 순서로 자원을 사용하는데, '사용' 단계에서 한 번에 여러 자원을 사용할 수 있다.

8.2. 다중 스레드 응용에서의 교착 상태