교착상태 Deadlock

cornpip
|2023. 9. 18. 00:13

교착상태

발생 조건

  • 상호 배제 - 하나의 자원은 하나의 프로세스에 의해서만 사용된다.
  • 점유와 대기 - 하나의 자원을 점유한 상태로 추가 자원 요청
  • 비선점 - 점유된 자원에 대해 경쟁할 수 없다.
  • 환형 대기 - 자원의 점유와 대기가 원형을 구성한 상태

해결 방법

  • 예방 - 상호 배제를 제외한 나머지 발생 조건을 부정하는 방법
    * 점유 자원 해제 후 새 자원 요청
    * 이미 점유된 자원 경쟁 가능
    * 원형 구성이 안되도록 하나의 프로세스 요청을 먼저 다 처리하기

 

  • 회피 - 데드락이 발생하지 않도록 어떻게든 알고리즘을 잘 짜라 (예방보다 덜 엄격한 제한)
    * 은행가 알고리즘

 

  • 발견, 복구 - 알고리즘으로 교착 상태를 감지하고 해결한다.
    * 자원할당 그래프 (발견)
    * 프로세스 kill (복구) - 프로세스를 순차적으로 kill하여 제거한다. 희생자를 선택해야 하고 기아 상태가 발생한다.
    * 자원선점 (복구) - 프로세스에 할당된 자원을 선점(경쟁)해서 교착 상태를 해결할 때 까지 다른 프로세스에 할당한다.

 

참고 자료

https://chanhuiseok.github.io/posts/cs-2/

 

[운영체제] 데드락(Deadlock, 교착 상태)이란?

컴퓨터/IT/알고리즘 정리 블로그

chanhuiseok.github.io

 

'CS,네트워크' 카테고리의 다른 글

Stomp protocol  (0) 2024.01.02
stack/heap memory  (0) 2023.09.16
TCP/UDP Socket Protocol, Programming  (0) 2023.09.15