ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 교착상태(Deadlock) 란?
    OS 2020. 10. 29. 18:32
    반응형

    프로세스 / 스레드란?에서 교착상태에 대한 설명이 잠깐 나온다.

    그렇다면 교착상태를 해결하기 위한 방법은 무엇일까?

    교착상태의 정의를 다시 알아보고 해결 방법을 알아보자.

     

     


     

     

    교착상태(Deadlock) 란?

     

     

    출처 : https://includestdio.tistory.com/12

     

    교착상태는 스레드끼리 한정된 자원을 공유하기 때문에 발생하는 현상으로 두 개 이상의 작업이 하나씩 자원을 소지(hold)하고 있으면서 상대방이 가진 자원을 서로 원하고(need) 있는 상태입니다.

    그래서 어떤 작업도 실행되지 못하고 상대방의 작업이 끝나기 만을 기다리는 무한정 대기상태를 의미합니다.

     

     

     

     

     

    교착상태(Deadlock) 발생 조건

     

    교착 상태는 한 시스템 내에서 다음의 네 가지 조건이 동시에 성립할 때 발생합니다.

    따라서, 네 가지 조건 중 하나라도 성립하지 않도록 만든다면 교착 상태를 해결할 수 있습니다.

     

    발생 조건 내용
    상호 배제 (Mutual exclusion) 자원은 한번에 한 프로세스만이 사용할 수 있어야 합니다. 즉, 한 자원에 대한 여러 프로세스의 동시 접근이 불가합니다.
    점유 대기 (Hold and wait) 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 합니다. 
    비선점 (No preemption) 다른 프로세스에 할당된 자원을 사용이 끝날 때까지 강제로 빼앗을 수 없어야 합니다.
    순환 대기 (Circular wait) 각 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있어야 합니다.

     

     

     

     

     

    교착상태(Deadlock) 해결 방법

     

    이러한 교착상태를 해결하는 방법을 알아보겠습니다.

     

     

    1. 교착상태 예방 (Prevention)

    교착상태 발생 조건은 위에서 알아본 것처럼 네 가지가 있습니다. 이러한 발생 조건 중 하나를 제거함으로써 교착상태를 해결하는 방법으로 자원의 낭비가 심합니다.

     

     

    예방 종류 내용
    상호 배제 (Mutual exclusion) 부정 여러 개의 프로세스가 공유 자원을 사용할 수 있도록 합니다.
    점유 대기 (Hold and wait) 부정 프로세스가 실행되기 전 필요한 모든 자원을 할당합니다.
    비선점 (No preemption) 부정 자원을 점유하고 있는 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원을 반납하고, 요구한 자원을 사용하기 위해 기다리게 합니다. 프로세스의 비정상종료와 재시작 문제성이 있으며, 최악의 경우 작업했던 것들이 무효가 되어 낭비가 심합니다.
    순환 대기 (Circular wait) 부정 자원에 고유한 번호를 할당하고, 번호 순서대로 자원을 요구하도록 합니다.

     

     

     

    2. 교착상태 회피 (Avoidance)

    교착상태의 발생 조건을 없애기보다는 발생하지 않도록 알고리즘을 적용하는 방법으로, 자원 할당 그래프 알고리즘과 은행원 알고리즘가 있습니다. 

     

     

    3. 교착상태 탐지 및 회복 (Detection & Recovery)

    교착상태가 발생하는 것을 아예 막지 않고, 발생하면 교착상태 탐지 알고리즘이나 자원 할당 그래프를 이용해 교착상태를 확인하고 교착상태를 일으킨 프로세스를 종료하거나, 할당된 자원을 해제함으로써 회복하는 방법입니다.

     

     

    4. 교착상태 무시 (Ignore)

    교착상태를 해결할 때 성능에 큰 영향을 미치게 되는데, 해결로 인한 성능 저하가 교착상태 발생으로 인한 성능 저하보다 클 경우 교착상태에 대한 처리를 무시합니다.

     

     

     

     

     

     

    References

     

    - https://wisetrue.tistory.com/155

    - https://junsday.tistory.com/32

     

     

     

     

     

     

     

     

    728x90

    'OS' 카테고리의 다른 글

    프로세스의 상태  (0) 2020.10.26
    프로세스 / 스레드란?  (0) 2020.10.21

    댓글

Designed by Tistory.