CS
데드락(DeadLock)
남생이야
2024. 5. 14. 04:26
데드락이란?
교착상태라고도 하며 두 개 이상의 프로세스나 쓰레드가 서로 자원을 얻지 못해서 처리를 못하여 결과적으로 아무 일도 처리를 못하는 상태를 말한다.
데드락의 발생 조건
1. 상호 배제
- 자원에는 한 번에 한 프로세스만 사용할 수 있다.
2. 점유 대기
- 자원을 최소한 하나를 보유하고, 다른 프로세스에 할당된 자원을 점유하기 위해 대기하는 프로세스가 존재한다.
3. 비선점
- 이미 할당된 자원을 강제로 뺏을 수 없다.
4. 순환 대기
- 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다.
데드락 예방 방법
1. 상호 배제 조건 제거
- 여러 프로세스가 자원을 사용할 수 있도록 한다.
2. 점유와 대기의 조건 제거
- 한 프로세스에 수행되기 전에 모든 자원을 할당시키고 나서 점유하지 않을 때에는 다른 프로세스가 자원을 요구하도록 하는 방법.
3. 비선점 조건 제거
- 비선점 프로세스에 대해 선점 가능한 프로토콜을 만들어준다.
4. 순환 대기 조건 제거
- 자원 유형에 따라 순서를 메긴다.