본문 바로가기
컴퓨터과학/운영체제

[운영체제] 교착상태 (Deadlocks)

by 윤호 2021. 1. 20.

Deadlocks

교착 상태

  • 프로세스나 스레드가 결코 일어날 수 없는 특정 이벤트를 기타리는 것
  • 대부분의 교착 상태는 전용 자원을 차지하려는 경쟁에서 발생
  • 순환 대기는 교착 상태에 있는 시스템의 특징
  • 교착 상태 성립 조건
    • 상호 배제 조건 : 자원은 한 번에 한 프로세스에서만 배타적으로 점유
    • 대기 조건 : 자원을 최소 1개 갖고있으면서 다른 자원을 기다리는 상태
    • 비선점 조건 : 시스템이 프로세스의 제어를 빼앗을 수 없음
    • 순환 대기 조건
      • 두 프로세스 이상이 순환 고리 상태
      • 각 프로세스는 고리 안에 있는 다음 프로세스가 점유하고 있는 자원을 대기

교착 상태 해결책

  • 교착 상태 방지

    • 대기 조건 거부
      • 자원을 요청할 땐 어느 자원도 소유하고 있지 않아야함
      • 단점 : 자원의 낭비
    • 비선점 조건 거부
      • 하나 이상의 자원을 소유하고 있고 다른 프로세스가 소유한 다른 자원을 요청한다면
      • 소유하고 있는 모든 자원을 반납하게 함
      • 단점 : 프로세스가 재 시작 되어야하는 추가적인 부하
    • 순환 대기 조건 거부
      • 자원에 대한 선형 순서 사용 (프로세스가 자원을 돌아가면서 사용)
      • 단점 : 자원의 요구에 대해 동적이거나 유연하지 못함
  • 교착 상태 회피

  • 교착 상태 탐지

    • 순환 대기 존재 여부에 초점
    • 실행 시 심각한 부담을 줌
    • 자원 할당 그래프 소거
      • 실행을 완료할 수 있는 그래프가 있는지 확인
      • 자원 요청을 허용할 수 있다면 그래프 소거
      • 그래프가 모든 ㅡ로세스에 대해 소거될 수 있으면 교착 상태 없음
  • 교착 상태 복구

    • 일시정지/재시작 메커니즘
    • 체크 포인트/롤백

댓글