[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 |