데드락(deadlock)은 프로그램이 만들어야 하는 적정한 progress를 만들지 못하는 현상을 말합니다. 데드락에 대한 연구는 굉장히 많이 진행되어 solution들이 다수 존재합니다. 하지만 이 solution들은 비용이 굉장히 비싸기 때문에 실제로는 거의 사용이 되지 않습니다. 데드락은 두 개 이상의 프로세스가 동작할 때 발생하며 프로세스들이 waiting state에 빠져 어떤 동작도 하지 못하게 됩니다. 왜 이런 일이 발생하냐면 서로가 서로에게 점유되어있는 리소스를 기다리기 때문입니다. 데드락 외에도 라이브락(livelock)이라는 현상이 있는데 라이브락의 경우 데드락과 다르게 CPU 사이클을 낭비하기 때문에 시스템에 주는 악영향이 더 큽니다. 라이브락은 spin lock을 통해서 발생할 수 ..