Related to: Operating System

참조

https://cocoon1787.tistory.com/858

교착상태란?

  • 두 개 이상의 프로세스가 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며, 서로의 작업을 끝나기만을 기다리며 둘 다 영원히 끝나지 않는 상황

발생 조건

교착상태는 아래의 4가지 조건이 모두 만족되는 경우(필요충분조건)에 발생할 가능성이 있으며,

하나라도 만족하지 않으면 교착상태가 발생하지 않습니다.

  1. 상호 배제(Mutual Exclusion)
    1. 한 번에 한 개의 프로세스만이 공유자원을 사용할 수 있음
  2. 점유 대기(Hold and Wait)
    1. 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다림
  3. 비선점(No Preemption)
    1. 프로세스가 작업을 마친 후 자원을 자발적으로 반환할 때까지 기다림(이미 할당된 자원을 강제적으로 빼앗을 수 없음)
  4. 순환 대기(Circular Wait)
    1. 프로세스의 자원 점유 및 점유된 자원의 요구 관계가 원형을 이루면서 대기하는 조건.각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있음

예방 방법

교착상태 발생조건을 방지해서 데드락을 예방하는 방법은 시스템 처리량이나 자원 사용의 효율성을 떨어트리는 단점이 있습니다

  1. 상호 배제 부정

    1. 여러 개의 프로세스가 동시에 공유자원을 사용할 수 있음
  2. 점유 대기 부정

    1. 프로세스가 실행되기 전에 필요한 모든 자원을 할당하여 프로세스 대기를 없애거나, 자원이 점유되지 않은 상태에서만 자원 요청을 받도록 함
  3. 비선점 부정

    1. 모든 자원에 대한 선점을 허용
  4. 순환 대기 부정

    1. 자원을 선형으로 분류하여 고유 번호를 할당하고, 각 프로세스는 현재 점유한 자원의 고유번호보다 앞이나 뒤 한쪽 방향으로만 자원을 요구하도록 함