교착상태
발생 조건
- 상호 배제 - 하나의 자원은 하나의 프로세스에 의해서만 사용된다.
- 점유와 대기 - 하나의 자원을 점유한 상태로 추가 자원 요청
- 비선점 - 점유된 자원에 대해 경쟁할 수 없다.
- 환형 대기 - 자원의 점유와 대기가 원형을 구성한 상태
해결 방법
- 예방 - 상호 배제를 제외한 나머지 발생 조건을 부정하는 방법
* 점유 자원 해제 후 새 자원 요청
* 이미 점유된 자원 경쟁 가능
* 원형 구성이 안되도록 하나의 프로세스 요청을 먼저 다 처리하기
- 회피 - 데드락이 발생하지 않도록 어떻게든 알고리즘을 잘 짜라 (예방보다 덜 엄격한 제한)
* 은행가 알고리즘
- 발견, 복구 - 알고리즘으로 교착 상태를 감지하고 해결한다.
* 자원할당 그래프 (발견)
* 프로세스 kill (복구) - 프로세스를 순차적으로 kill하여 제거한다. 희생자를 선택해야 하고 기아 상태가 발생한다.
* 자원선점 (복구) - 프로세스에 할당된 자원을 선점(경쟁)해서 교착 상태를 해결할 때 까지 다른 프로세스에 할당한다.
참고 자료
https://chanhuiseok.github.io/posts/cs-2/
'CS,네트워크' 카테고리의 다른 글
Stomp protocol (0) | 2024.01.02 |
---|---|
stack/heap memory (0) | 2023.09.16 |
TCP/UDP Socket Protocol, Programming (0) | 2023.09.15 |