CS

데드락(DeadLock)

남생이야 2024. 5. 14. 04:26

 

데드락이란?

 교착상태라고도 하며  두 개 이상의 프로세스나 쓰레드가 서로 자원을 얻지 못해서 처리를 못하여 결과적으로 아무 일도 처리를 못하는 상태를 말한다. 

 

데드락의 발생 조건

 

1. 상호 배제

  •   자원에는 한 번에 한 프로세스만 사용할 수 있다.

2. 점유 대기

  •  자원을 최소한 하나를 보유하고, 다른 프로세스에 할당된 자원을 점유하기 위해 대기하는 프로세스가 존재한다.

3. 비선점

  •  이미 할당된 자원을 강제로 뺏을 수 없다. 

4. 순환 대기 

  •  각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다. 

 

 

데드락 예방 방법

 

1. 상호 배제 조건 제거 

  •  여러 프로세스가 자원을 사용할 수 있도록 한다. 

2. 점유와 대기의 조건 제거

  •  한 프로세스에 수행되기 전에 모든 자원을 할당시키고 나서 점유하지 않을 때에는 다른 프로세스가 자원을 요구하도록 하는 방법. 

3. 비선점 조건 제거

  •  비선점 프로세스에 대해 선점 가능한 프로토콜을 만들어준다. 

4. 순환 대기 조건 제거

  •  자원 유형에 따라 순서를 메긴다.