본문 바로가기
기술면접/운영체제

운영체제 8장 정리 데드락 DeadLock 교착상태

by illlilillil 2022. 1. 19.

Dead Lock 교착상태

교착 상태란 다른 프로세스가 자원을 계속 해서 점유하고 기다리는 프로세스가 자원을 요구하는 과정에서 무한정으로 대기하는 것을 말합니다.

 

데드락 충족 조건

1. 상호 배제

  • 자원을 여러 프로세스가 이용하려 할 때

2. 점유 대기

  • 프로세스가 하나의 자원을 점유하면서도 다른 프로세스에 할당된 자원을 점유하려 할 때 대기를 안 할때

3. 비선점

  • 다른 프로세스가 자원을 선점해서 빼았지 않을 때

4. 순환 대기

  • 점유 대기 상태의 프로세스가 서로가 될 때

데드락의 해결 방법

1. 데드락 예방

  • 상호 배제 - 하나의 자원은 하나의 프로세스만 이용하게 한다.
  • 점유 대기 - 선점 스케줄링 방식의 프로세스가 자원 할당을 요청할 때 어떤 것이라도 자원을 놓을 수 있어야 한다.
  • 비선점 - 공유 자원을 프로세스가 있더라도 선점이 가능하게 해야 한다.
  • 환형 대기 - 자원마다 번호를 매겨 시간이 지날수록 우선순위를 높어 자원 요청을 하게 한다.

2. 데드락 회피

이론상의 가정으로는 4개의 조건을 만족해야 한다.

  • 프로세스의 개수 고정
  • 자원의 종류, 수가 고정
  • 프로세스의 요구 자원 수 알아야 한다.
  • 프로세스는 자원 사용 후 반드시 반납해야 한다.

그러나 실시간 환경에서 적용하기는 절대적으로 어렵다. 다른 알고리즘을 적용해야 한다.

  1. Safe State 알고리즘
      • safe한 상태가 존재해 모든 프로세스가 교착상태 없이 안전하게 종료할 수 있는 상태를 말한다.
      • unsafe 상태에는 데드락 발생 확률이 있기 때문에 안전하게 종료를 할 수 없다
  2. 자원 할당 그래프 알고리즘 - 자원 유형에 인스턴스가 하나만 있는 경우 그래프 알고리즘으로 교착상태를 회피한다.
  3. 은행원 알고리즘 - 자원 유형에 인스턴스가 많을 경우 적용하는 방법

3. 데드락 탐지

  1. 대기 그래프 - 자원 할당 그래프를 변형한 그래프로 사이클이 존재하게 되면 교착 상태로 판단한다.
  2. 은행원 알고리즘 - 각 자원의 요청 개수를 받고 safe state 인지 확인 후 불안정 상태일 때 데드락이라고 판단한다.

4. 데드락 복구

  1. 프로세스 종료
      • 교착 상태의 프로세스 모두 중지
      • 교착 상태 제거될 때까지만 하나씩 중지
  2. 자원 선점 - 교착 상태의 점유된 자원을 다른 프로세스가 할당 받아 교착 상태의 프로세스를 일시 정지 시킨다.
      • 희생자 선택 - 최소 피해 프로세스를 선택
      • 롤백 - 선점 프로세스를 문제 없던 상태로 롤백
      • 기아 - Aging 방식으로 우선 순위를 높이는 방법으로 복구

댓글