읽은 책 정리/쉽게 배우는 운영체제

[정리] 06 교착 상태

포포015 2022. 9. 26. 16:43

목차

  • 1. 교착 상태의 개요
  • 2. 교착 상태 필요조건
  • 3. 교착 상태 해결 방법

 

1. 교착 상태의 개요

1.1 교착 상태의 정의

- 2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기까지 기다리며, 작업을 더이상 진행하지 못하는 상태

( 여러 프로세스가 작업을 진행하다보니 자연적으로 일어나는 문제이다. )

 

* 아사현상 - 운영체제가 잘못된 정책을 사용해, 특정 프로세스의 작업이 지연 되는 문제

   (최단 작업 우선 스케줄링 알고리즘에서 작업 시간이 긴 프로세스가 작업시간 짧은 프로세스 때문에 작업이 진행 X)

1.2 교착 상태의 발생

- 교착상태는 시스템 자원, 공유변수(또는파일), 응용 프로그램등을 사용할때 발생 할수 있다.

  • 시스템자원 - 한 프로세스가 임계구역으로 보호되는 프린터나,스캐너 등을 할당받아 사용하고 있을경우
  • 공유변수 - 한 공유변수를 여러개의 프로세스가 같이 사용할경우 발생 할수 있다.
  • 응용프로그램 - DB 같은 프로그램의 경우 데이터 저장시 Lock을 걸어 작업한다. 이럴경우 발생할수 있다.

 

2. 교착 상태 필요조건

2.1 교착 상태 필요조건

- 상호배제 (mutual exclusion) , 비선점(non-preemption), 점유와 대기(hold and wait), 원형대기(circular wait)
모두 충족 해야 발생한다. 단 하나라도 충족하지 않으면 교착 상태 발생 X

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

* 사용하는 자원을 동시에 공유할 수도 없고 중간에 빼앗을수도 없다면 자원을 가진 프로세스가 자원을 반환할때 까지 

무작정 기다리는 교착 상태가 발생한다.

 

 

3. 교착 상태 해결 방법

3.1 교착 상태 해결 방법

- 1. 예방 2. 회피 3. 검출 4. 검출 후 회복

 

해결방법 특징
교착 상태 예방 교착 상태를 유발하는 네가지 조건을 무력화 시킨다.
교착 상태 회피 교착 상태가 발생하지 않는 수준으로 자원을 할당 한다.
교착 상태 검출 자원 할당 그래프를 사용하여 교착 상태를 발견 한다.
교착 상태 회복 교착 상태를 검출한 후 해결한다.

 

3.1.1 교착 상태 예방

1) 상호 배제 예방

- 독점적으로 사용할 수 있는 자원을 없애 버리는 방법. 

- 시스템 내의 모든 자원을 공유 할수 있다면 교착 상태 발생 X ( 그러나 모든 자원을 공유 할수없으므로 현실적으로 불가)

 

2) 비 선점 예방

- 모든 자원을 빼앗을 수 있도록 만드는 방법.

- 어떤 자원을 빼앗을수 할지라도, 기준과 빼앗은 시간중 얼마나 사용할지 결정하기 어렵다.

 

3) 점유와 대기 예방

- 프로세스는 시작 초기에 자신이 사용하려는 모든 자원을 한꺼번에 점유하거나, 그렇지 못할경우 모두 반납

- 자원의 활용성이 떨어지므로 실용성이 내려간다.

- 일괄 작업 방식으로 동작하기때문에, 실질적으로 여러 프로세스가 작업 될경우 시스템 효율이 떨어진다.

 

4) 원형 대기 예방

- 점유와 대기를 하는 프로세스들이 원형을 이루지 못하도록 막는 방법.

- 자원을 한 방향으로만 사용하도록 설정

- 프로세스 작업 진행에 유연성이 떨어지고, 자원의 순서를 어떤식으로 부여할지 애매 하다.

 

3.1.2 교착 상태 회피

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

그 수준이하로 자원을 나누어 주는 방법.

 

* 자원의 총수와 현재 할당된 자원의 수를 기준으로 시스템을 안정 상태불안정 상태로 나누고, 

 시스템이 안정 상태를 유지 하도록 자원을 할당.

 

1) 은행원 알고리즘

- 교착 상태를 회피하는 방법은 여러가지인데 그중 대표적인 방법.

- 최악의 경우를 기준으로 함으로써 문제 상황을 철저히 피하여 교착 상태를 막는다.

- 장점보단, 단점이 더 많아서 실질적으로 많이 활용되지않는다

 

3.1.3 교착 상태 검출

- 운영체제가 프로세스의 작업을 관찰하면서 교착 상태 발생여부를 계속 주시하는 방식.

- 크게 타임아웃을 이용하는 방법(가벼운 교착 상태 검출)자원할당 그래프(무거운 교착 상태 검출 )를 이용하는 방법이 있다.

 

1) 타임아웃을 이용하는 방법

- 윈도우에서 '프로그램이 응답이 없어 종료합니다' 같은 경우가 대표적인 예시이다.

- 타임아웃으로 데이터 일관성이 깨지는 문제를 해결하기 위해 스냅숏과 롤백을 이용해 운영체제를 복원 시킨다.

 

2) 자원 할당 그래프를 이용한 교착 상태 검출

- 프로세스의 작업 방식을 제한하지 않으면서 교착 상태를 정확하게 파악 할수 있다는게 장점.

 

3.1.4 교착 상태 회복

- 교착 상태가 검출되면 교착 상태를 푸는 후속 작업을 하는데, 이를 교착 상태 회복이라한다.

 

교착 상태 회복의 시나리오
1. 교착 상태를 유발한 프로스세스 종료

2. 강제 종료된 프로세스가 실행되기전 시스템 복구작업을 진행한다.

(단, 시스템 복구는 체크포인트를 만들어 최근 검사시점으로 돌아가는 식으로 동작하는데,

이 방법은 시스템에 부하를 주기때문에 선택적으로 사용해서 진행해야한다.)