솜은 코튼

[OS] 교착 상태 해결 방법 (교착 상태 탐지) 본문

OS

[OS] 교착 상태 해결 방법 (교착 상태 탐지)

솜.코 2023. 5. 27. 18:26

2023.05.27 - [OS] - [OS] 교착 상태 해결 방법 (교착 상태 회피)

 

[OS] 교착 상태 해결 방법 (교착 상태 회피)

2023.05.27 - [OS] - [OS] 교착 상태 해결 방법 (교착 상태 예방) [OS] 교착 상태 해결 방법 (교착 상태 예방) 2023.05.27 - [OS] - [OS] 교착 상태 (자원 할당 그래프, 식사하는 철학자 문제) [OS] 교착 상태 (자원

sommda.tistory.com

 

 

3. 교착 상태 탐지

.

 

앞에서 언급한 교착 상태 예방은 실제로 구현하기 어렵고,

교착 상태 회피는 구현은 가능하지만 자원을 낭비하는 문제가 있다.

 

교착 상태 탐지는 가장 현실적인 것인 방법으로 운영체제가 프로세스의 작업을 관찰하면서

교착 상태 발생 여부를 계속 주시하는 방식이다.

만약 교착 상태가 발견되면 이를 해결하기 위해 교착 상태 회복 단계를 밟는다.

 

교착 상태 탐지는 타임아웃과 자원 할당 그래프를 이용하는 방법이 있다.

 

3.1 타임아웃을 이용한 탐지

 

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

 

이 방법엔 다음과 같은 문제가 있다.

 

엉뚱한 프로세스가 강제 종료될 수 있다.

교착 상태 외의 다른 이유로 작업이 진행되지 못하는 모든 프로세스가 강제 종료될 수 있다.

 

모든 시스템에 적용할 수 없다.

예로 분산 데이터베이스는 데이터가 여러 시스템에 나뉘어 있고 각 시스템이 네트워크로 연결되어 있다.

이 시스템에서는 응답이 없는 것이 교착 상태 때문인지, 네트워크 문제인지 알 수 없다.

 

윈도우에서 '프로그램이 응답이 없어 종료합니다'라는 메시지가 대표적인 예이다.

 

 

3.2 자원 할당 그래프를 이용한 탐지

 

자원 할당 그래프를 보면 시스템 내의 프로세스가 어떤 자원을 사용하거나 기다리는지 알 수 있다.

 

 

 

(a)에서 P1은 P2가 자원 R2를 다 사용하고 반환하기를 기다리고, P4는 P1을 P3는 P4를 기다리고 있다.

이 자원 할당 그래프에는 사이클이 존재하지 않아 P2가 작업을 마치고 R2를 반환하면 교착 상태가 발생하지 않는다.

 

운영체제는 자원을 요청하거나 할당할 때마다 그래프를 갱신하는데,

이때 사이클이 발생하면 교착 상태가 검출된 것으로 판단한다.

 

(b)는 P2가 추가로 자원 R3을 요구하는 경우인데, P1 -> P2 -> P4 -> P1로 사이클이 존재하므로

교착 상태가 발생한 것으로 판단한다.

 

 

위의 예는 단일 자원으로 사이클이 있으면 교착 상태이다.

그러나 다중 자원을 사용하는 경우에는 사이클이 있다고 모두 교착 상태는 아니다.

 

 

3.3 다중 자원과 사이클

 

 

위의 그림은 사이클이 있지만 자원 R1은 다중 자원이므로 P2가 작업을 마친 후 P1이 작업할 수 있다.

즉, 다중 자원의 경우 사이클이 있다고 모두 교착 상태가 되는 것은 아니다.

 

다중 자원이 포함된 자원 할당 그래프에서는 대기 그래프그래프 감소 방법을 이용하여 사이클을 찾는다.

 

 

3.4 대기 그래프와 그래프 감소

 

대기 그래프는 자원 할당 그래프에서 프로세스 간에 기다리는 관계만 나타낸 그래프이다.

 

그래프 감소는 대기 그래프에서 작업이 끝날 가능성이 있는 프로세스의 화살표와

관련 프로세스의 화살표를 연속적으로 지워가는 작업을 말한다.

 

작업이 끝날 가능성이 있는 프로세스란 기다리는 자원이 없는 프로세스를 말한다.

 

다중 자원이 있는 대기 그래프에서 그래프 감소를 완료한 후에도 사이클이 남아있다면

교착 상태가 발생한 것으로 판단한다.

 

 

 

  1. 작업이 끝날 수 있는 프로세스, 즉 기다리는 자원이 없는 P2에 대해 P1에서 P2로 가는 화살표를 지운다.
  2. P1이 작업을 종료할 수 있으므로 P4에서 P1로 가는 화살표를 지운다.
  3. P4가 작업을 종료할 수 있으므로 P3에서 P4로 가는 화살표를 지운다.
  4. P3이 작업을 종료할 수 있으므로 P1에서 P3로 가는 화살표를 지운다.

 

 

 

반면 위의 그림은 작업이 끝날 수 있는 즉, 기다리는 자원이 없는 프로세스가 없기 때문에

그래프 감소를 해도 사이클이 남아 있어 교착 상태가 발생한다.

 

 

즉, 단일 자원만 있는 자원 할당 그래프에서는 사이클만으로 교착 상태 검출이 가능하지만,

다중 자원을 사용할 때는 그래프 감소를 한 후 사이클이 남아 있는지 확인하여 교착 상태를 검출한다.

 

 

4. 교착 상태 회복

.

 

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

 

이 단계에서는 교착 상태를 유발하는 프로세스를 강제로 종료한다.

강제로 종료하는 방법은 두 가지가 있다.

 

교착 상태를 일으킨 모든 프로세스를 동시에 종료

이 방법은 종료된 프로세스들이 동시에 작업을 시작하면 다시 교착 상태를 일으킬 가능성이 크다.

그러므로 강제 종료 후 다시 실행할 때는 순차적으로 실행해야 하며,

이때 어떤 프로세스를 먼저 실행할 것인지 기준이 필요하다.

 

교착 상태를 일으킨 프로세스 중 하나를 골라 순서대로 종료

순서대로 종료하면서 나머지 프로세스의 상황을 파악하는 방법이다.

이때 종료시킬 프로세스의 아래와 같은 기준이 필요하다.

 

우선순위가 낮은 프로세스 먼저 종료

우선순위가 같은 경우 작업이 짧은 프로세스 먼저 종료

위의 두 조건이 같은 경우 자원을 많이 사용하는 프로세스 먼저 종료

 

이 단계에서는 강제 종료 뿐 아니라 강제 종료된 프로세스가 실행되기 전에 시스템을 복구하는 일도 한다.

시스템 복구는 가장 최근의 검사 시점으로 돌아가는 식으로 한다.

 

 

 

 

 

 

 

 

* 해당 글은 '쉽게 배우는 운영체제'와 '운영체제' 책을 참고하여 작성하였습니다. 출처: 쉽게 배우는 운영체제 (조성호), 운영체제 10판 (Abraham Silberschatz)