OS | DeadLock

yeonk·2022년 6월 29일
0

computer science

목록 보기
2/3
post-thumbnail

1. 교착상태


교착상태(DeadLock, 데드락): 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 가리킨다.

  • 교착상태는 빈번하게 일어나진 않는다.

  • 현재 대부분의 OS에서 교착 상태를 막는 것은 불가능





2. 필요 조건


교착 상태가 일어날 수도 있는 필요조건은 상호배제, 점유대기, 비선점, 순환대기(환형대기) 로 총 4가지 이다.
이 4가지 조건 중 하나라도 만족하지 않으면 교착 상태가 발생하지 않는다.

  • 상호 배제(Mutual exclusion): 프로세스가 필요로 하는 자원에 대한 배타적인 통제권 요구

  • 점유 대기(Hold and wait): 프로세스가 필요로하는 일부 자원을 점유한 상태에서 필요로하는 다른 자원에 대해서는 대기하는 것

  • 비선점(No preemption): 강제로 사용 중인 자원을 선점할 수 없으며, 다른 프로세스가 해당 자원의 사용을 끝날 때 까지 대기해야 함

  • 순환대기(Circular wait): 각 프로세스들이 다음 프로세스가 요구하는 자원을 가지고 있어 순환적인 형태를 이루는 것(자원 할당도에서 원이 만들어짐)





3. 처리 방법


교착 상태를 관리하는 방법으로는 예방, 회피, 무시, 탐지 및 회복으로 총 4가지 접근 방식이 있다.



(1) 교착 상태 예방

  • 상호 배타

    • 자원 공유를 가능하게 함

  • 보유 및 대기

    • 한 프로세스에 수행되기 전에 모든 자원을 할당시키고 나서 점유하지 않을 때에는 다른 프로세스가 자원을 요구하도록 하는 방법

    • (예) 일부 자원만 사용 가능할 때 보유한 자원을 모두 포기하고 모든 자원이 사용 가능할 때까지 대기한다.

    • 자원 활용률 저하, 기아 상태, 무한 대기 등의 문제를 야기할 수 있음


  • 비선점

    • 비선점 프로세스에 대해 선점 가능한 프로토콜을 만들어줌

  • 환형대기(순환 대기)

    • 자원 유형에 따라 순서를 매긴다.

    • 자원 활용률 저하



(2) 교착 상태 회피

  • 지원이 요청에 대한 추가 정보를 제공하도록 요구하는 것으로 순환 대기가 발생하지 않도록 자원 할당 상태를 검사하는 것

  • 안전 할당과 불안정 할당

    • 안전 할당(Safe allocation): 가용 자원, 각 작업의 점유 자원 정보, 작업 필요 자원 최대량과 현재 요청한 자원 정보가 주어졌을 때 요청을 모두 이뤄줄 수 있는 상태

    • 불안전한 할당(Unsafe allocation): 안전 할당의 반대 개념으로, 정보가 주어졌을 때 요청을 모두 이뤄줄 수 없는 상태


  • 회피 알고리즘
    • 자원 할당 그래프 알고리즘 (Resource Allocation Graph Algorithm)
    • 은행원 알고리즘 (Banker's algorithm)



(3) 교착 상태 무시

  • 예방 또는 회피 기법을 사용하면 성능에 영향이 있을 수 있음으로 교착 상태의 발생 확률이 적은 경우 조치를 취하지 않음



(4) 교착 상태 탐지 및 회복

  • 교착 상태가 일어나는 것을 허용함

  • 교착 상태가 발생하는지 주기적으로 검사

  • 교착 상태 발생 시 복구 진행

  • 검사에 따른 계산 및 메모리 사용으로 추가 부담이 있으며, 복구 시에도 이전 상태를 보존해야하기 때문에 메모리를 사용하여 비용이 많이 드는 문제





4. 참고 자료


tech-interview-for-developer

교착 상태

운영체제 정리 🦖 ch07. 교착상태

0개의 댓글