교착 상태란?

2개 이상의 작업이 동시에 이루어지는 경우, 다른 작업이 끝나기만 기다리며 작업을 더 이상 진행하지 못하는 상태이다.

 

교착 상태의 필요조건

- 교착 상태는 아래의 네 가지 조건을 동시에 만족해야만 교착 상태가 발생한다.

  • 상호 배제: 한 프로세스가 사용하는 자원은 다른 프로세스와 공유할 수 없는 배타적인 자원이어야 한다.
  • 비선점: 한 프로세스가 사용 중인 자원은 중간에 다른 프로세스가 빼앗을 수 없는 비선점 자원이어야 한다.
  • 점유와 대기: 프로세스가 어떤 자원을 할당받은 상태에서 다른 자원을 기다리는 상태여야 한다.
  • 원형 대기: 점유와 대기를 하는 프로세스 간의 관계가 원을 이루어야 한다.

교착 상태 해결 방법

교착 상태를 해결하는 방법은 예방, 회피, 검출이며, 추가적으로 교착 상태가 발견된 후에 자원을 회복하는 방법도 있다.

교착 상태 예방

교착 상태를 유발하는 네 가지 조건 중 하나라도 예방하여 교착 상태를 처리하는 방법으로 다음과 같이 네 가지 예방법이 있다.

  1. 상호 배제 예방: 시스템 내에 있는 상호 배타적인 모든 자원, 즉 독점적으로 사용할 수 있는 자원을 없애버리는 방법이다.
  2. 비선점 예방: 모든 자원을 빼앗을 수 있도록 만드는 방법이다.
  3. 점유와 대기 예방: 프로세스가 자원을 점유한 상태에서 다른 자원을 기다리지 못하게 하는 방법이다.
  4. 원형 대기 예방: 점유와 대기를 하는 프로세스들이 원형을 이루지 못하도록 막는 방법이다.
교착 상태 회피

프로세스에 자원을 할당할 때 어느 수준 이상의 자원을 나누어주면 교착 상태가 발생하는지 파악하여 그 수준 이하로 자원을 나눠주는 방법이다.

교착 상태 검출

타임아웃을 이용한 교착 상태 검출: 일정 시간 동안 작업이 진행되지 않은 프로세스를 교착 상태가 발생한 것으로 간주하여 처리하는 방법이다.

자원 할당 그래프를 이용한 교착 상태 검출: 교착 상태를 검출하는 또 다른 방법은 자원 할당 그래프를 이용하는 것이다.

  • 교착 상태가 없는 자원 할당 그래프: 사이클이 존재하지 않는 자원 할당 그래프이다.
  • 교착 상태가 있는 자원 할당 그래프: 사이클이 존재하는 자원 할당 그래프이다.
교착 상태 회복

교착 상태가 검출되면 교착 상태를 푸는 후속 작업을 하는데 이를 교착 상태 회복이라고 한다. 교착 상태 회복 단계에서는 교착 상태를 유발한 프로세스를 강제로 종료한다. 프로세스를 강제로 종료하는 방법에는 다음과 같이 두 가지가 있다.

  • 교착 상태를 일으킨 모든 프로세스를 동시에 종료한다.
  • 교착 상태를 일으킨 프로세스 중 하나를 골라 순서대로 종료한다.

'Programming > 운영체제' 카테고리의 다른 글

[운영체제]물리 메모리 관리  (0) 2023.06.06

+ Recent posts