즉 일련의 프로세스들이 서로가 가진 자원을 기다리며 잠들어 있는 상태이다.
여기서 말하는 자원은 하드웨어일수도(ex. 메모리 공간) 소프트웨어일수도(ex.세마포어: 프로세스가 A,B가 서로의 자원을 획득하기를 기다리는 경우) 있다.
프로세스가 자원을 사용하는 4개의 절차가 있다. 자원을 요청하고, 자원을 획득하고, 자원을 사용하고, 자원을 반납하는 단계다.
데드락 프리벤션은 데드락을 미연에 방지한다. 데드락이 발생하는 네 가지 조건 중 하나를 원천적으로 차단한다.
먼저 자원을 공유하도록 할 수 있다. 그러나 공유해서는 안되는 자원의 경우 이는 성립시켜야 한다.
자원을 기다리는 상황에서는 자원을 보유하지 않도록 하여 보유대기 문제를 해결한다. 프로세스가 시작할때 필요한 모든 자원을 할당받게 하고 프로세스 종료 시 모두 반납하게 할 수 있다. 그러나 이 경우 매 시점마다 필요한 자원이 다른데 모두 처음에 다 받게 하면 비효율성이 생길 수 있으므로, 자원이 필요한 경우에만 그때그때 할당받게 하지만, 어떤 자원이 필요한 경우 현재 보유한 자원을 모두 뱉어내도록 한 후 기다리게 하면 된다.
다음 비선점 문제는, 자원을 선점할 수 있도록, 프로세스가 자원을 빼앗아 올 수 있도록 하여 해결한다. CPU와 메모리는 자원을 빼앗아도 괜찮은데 이는 cpu와 메모리는 자원을 뺏겨도 자원 상태를 쉽게 저장하고 자원을 다시 얻었을 때 복구하여 실행하는 것이 용이하기 때문이다. 그러나 어떤 자원은 뺏겼을 때 복구가 어렵다.
마지막은 사이클을 막는 것이다. 이를 위해서는 자원마다 번호를 매겨 순서를 정한다. 그리고 항상 낮은 번호부터 획득해야지만 높은 번호를 획득할 수 있도록, 정해진 순서대로만 자원을 할당한다. 그러면 누구는 3번 자원을 가지고 1번을 기다리고, 누구는 1번을 가지면서 3번을 기다리며 사이클이 생기는 상황을 해결할 수 있다.
데드락 프리벤션은 자원 이용률이 낮아지고 잦은 제약조건으로 시스템의 성능이 낮아지는 문제가 있다.