[C++] DeadLock

2024. 4. 19. 18:23언어 및 엔진/C++

DeadLock

서로가 상대방의 자원을 내놓기를 바라면서 무기한 연기 상황에 빠지는 것 


=> 교착상태


발생 조건

상호 배제, 점유 대기, 비선점, 순환 대기

상호 배제

프로세스들이 필요로 하는 자원에 대해 배타적인 통제권 요구


점유 대기

프로세스가 할당 된 자원을 가진 상태에서 다른 자원을 기다린다.

비선점

프로세스가 어떤 자원의 사용을 끝낼 때 까지 그 자원을 뺏을 수 없다


순환 대기

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

해결 방안

상호 배제 해결 : 자원은 한 번에 한 프로세스만이 사용
점유 대기 해결 : 하나의 자원을 점유하고 있으면서 다른 자원을 추가로 점유하기 위해 
대기하는 프로세스가 있어야 함
비선점 해결 : 다른 프로세스의 사용이 끝날 때까지 강제로 자원을 뺏을 수 없게 한다
순환 대기 해결 : Pn - 1은 Pn이 점유한 자원을 대기한다.마지막인 Pn은 P0이 점유한
자원을 대기한다.

회피

자원 할당 그래프 알고리즘(자원이 1개일 때) - 불안정상태(자원이 얼마 없음)
일때는 기다리게 하고, 안정상태일때는 자원을 줌

은행원 알고리즘(자원이 2개 이상일 때)

충분한 자원을 항상 확보해 놓는 것

 

'언어 및 엔진 > C++' 카테고리의 다른 글

[C++] Friend Keyword  (0) 2024.04.19
[C++] Paging  (0) 2024.04.19
[C++] Multi Process / Multi Thread  (0) 2024.04.19
[C++] Modern C++  (0) 2024.04.19
[C++] 메모리 구조와 메모리 단편화  (0) 2024.04.19