위 2개는 데드락이 생기기 전에 방지하는 방법
현대의 운영체제는 대부분 4번째 방법을 택함. 예방이나 진단에 오버헤드가 크므로 생겨도 무시함
(예: Utilization 저하, Throughput 감소, Starvation 문제 등등)
데드락의 발생조건이 형성되지 않게 만듬
1. Mutual Exxclusion: 이것은 동기화를 위해 꼭 필요한 요소이므로 제거 불능
2. Hold and Wait:
방법1: 한 프로세스가 종료될때까지 필요한 모든 리소스를 프로세스에게 다 할당해줌
방법2: 프로세스가 새로운 자원을 요청하려면 갖고 있던 모든 자원을 내려놓게 만듬
3. No preemtion
프로세스가 어떤 자원을 기다려야하는 경우 갖고 있던 자원을 다 내려놓게 함
모든 자원에 구현 불가능
CPU, Memory같이 빼앗겼다가 다시 주는 경우 하던 일을 계속 할 수 있지만 그 이외에 자원들은 하던 일을 다시 하는게 불가능 할 수도 있기 때문에
점선: 프로세스가 미래에 자원을 요청할 예정
데드락이 걸리지 않게 자원 요청의 순서를 정해줌
Banker's Algorithm