Deadlock : 둘 이상의 프로세스가 서로 상대방에 의해 충족될 수 있는 event를 무한히 기다리는 현상
Starvation : indefinite blocking. 프로세스가 suspend된 이유에 해당하는 세마포어 큐에서 빠져나갈 수 없는 현상
철학자는 생각과 식사 만 함. 공유 데이터는 젓가락.
모든 철학자가 동시에 배가 고파져 왼쪽 젓가락을 집어버리는 경우, 아무도 먹지 못하고 Deadlock의 가능성.
동시 수행중인 프로세스 사이에서 abstract data type의 안전한 공유를 보장하기 위한 high-level synchronization construct.
condition x,y;
x.wait();
x.signal();
Deadlock은 자원의 부족으로 발생.
Deadlock이 발생하기 위한 4가지 조건. 모두 충족해야 발생.
위의 두 가지는 deadlock을 미연에 방지하는 방법.
아래 두 가지는 deadlock이 생기도록 놔둠.
위로 갈수록 강한 방법.
자원의 instance가 하나밖에 없는 상황