교착상태

1 개요[편집]

deadlock
교착상태, 데드락, 데들락 [deˈdlaˌk]
  • 두 개 이상의 작업이 서로 상대방이 끝나기를 기다리고 있어 아무것도 완료되지 못하는 상태
  • 둘 이상의 프로세스가 서로 남이 가진 자원을 요구하며 작업 수행을 할 수 없이 대기 상태가 되는 상태
  • 비유: 외나무다리에서 만난 사람들, 서로 상대방이 양보할 때까지 무한 대기
  • 다중 프로그래밍 환경에서 흔히 발생할 수 있는 문제

2 예시[편집]

320px-Process_deadlock.svg.png

→ 프로세스 1은 자원 2를 점유한 채, 자원 1을 사용하려 함
→ 프로세스 2는 자원 1을 점유한 채, 자원 2를 사용하려 함

3 필요조건[편집]

다음 4가지 조건이 충족되어야 교착상태 발생

  • 상호배제: 자원에 대한 배타적 통제권이 필요함
  • 점유대기: 자원을 점유한 상태로 다른 자원을 기다림[1]
  • 비선점: 다른 프로세스가 점유한 자원을 강제로 뺏을 수 없음
  • 순환대기: 순환적으로 다음 프로세스가 필요한 자원을 점유하고 있음

4 같이 보기[편집]

5 참고[편집]

  • 누군가 양보하는 마음으로 반납하고 좀 있다가 쓰면 해결되겠지
  • 문서 댓글 ({{ doc_comments.length }})
    {{ zf.userName }}
    {{ comment.name }} {{ comment.created | snstime }}