Post

Chapter.13 - 교착 상태

모든 이미지의 저작권은 [혼자 공부하는 컴퓨터 구조 + 운영체제] 도서의 저자 강민철님에게 있습니다.

교착 상태

일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상

13-1.png

교착 상태의 표현

교착 상태는 자원 할당 그래프를 통해 표현할 수 있다.

자원 할당 그래프는 어떤 프로세스가 어떤 자원을 사용하고 있고, 또 어떤 프로세스가 어떤 자원을 기다리고 있는지를 표현하는 그래프이다.

13-2.png

교착 상태 발생 조건

교착 상태는 상호 배제 / 점유와 대기 / 비선점 / 원형 대기 를 모두 만족할 때 발생할 가능성이 있다.

  • 상호 배제 : 하나의 자원은 하나의 프로세스만 접근이 가능
  • 점유와 대기 : 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상태
  • 비선점 : 자원을 뺏지 않고 자원을 할당받은 프로세스의 작업이 끝나기를 마냥 기다리는 것
  • 원형 대기 : A자원을 할당받은 A프로세스가 B자원을 기다리고 B자원을 할당받은 B프로세스가 A자원을 기다리는 것처럼 그래프가 원형을 이루는 것

교착 상태 예방

교착 상태 예방은 교착 상태 발생 조건을 하나씩 충족하지 못하게 하는 것

* 상호 배제 조건을 충족하지 못하게 하기

프린터와 같이 하나의 자원에 하나의 프로세스가 접근해야만 하는 경우가 있기에 현실적으로 적합하지 않다.

13-3.png

* 점유와 대기를 충족하지 못하게 하기

점유와 대기를 없애면 운영체제는 한 프로세스에 필요한 자원을 몰아주고 그 다음에 다른 프로세스에 필요한 자원을 몰아주는 식으로 배분하는데 이러면 자원이 필요해도 기다릴 수 밖에 없는 프로세스와 사용되지 않으면서 오랫동안 할당되는 자원을 다수 양산하기 때문에 자원의 활용률이 낮아진다.

또한, 자원을 적게 사용하는 프로세스에 비해 자원을 많이 사용하는 프로세스가 자원을 할당받는 순간이 적기 때문에 무한정 기다리게 되는 기아 현상을 야기할 우려가 있다.

* 비선점 조건을 충족하지 못하게 하기

프린터와 같이 한 프로세스의 작업이 끝날 때까지 다른 프로세스가 기다려야 하는 자원도 있기 때문에 현실적으로 적합하지 않다.

* 원형 대기 조건을 충족하지 못하게 하기

모든 자원에 번호를 붙이고 오름차순으로 자원을 할당하면 원형 대기는 발생하지 않지만 수많은 자원에 번호를 붙이는 일은 간단한 작업이 아니며 각 자원에 어떤 번호를 붙이는지에 따라 특정 자원의 활용률이 떨어질 수 있다.

교착 상태 회피

프로세스들에 배분할 수 있는 자원의 양을 고려하여 교착 상태가 발생하지 않을 정도의 양만큼만 자원을 배분하는 방법

  • 안전 순서열 : 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서를 의미
  • 안전 상태 : 안전 순서열대로 프로세스들에 자원을 배분하여 교착 상태가 발생하지 않는 상태
  • 불안전 상태 : 안전 순서열이 없어 교착 상태가 발생할 수도 있는 상태

결론 : 항시 안전 상태를 유지하도록 자원을 할당하는 방식

교착 상태 검출 후 회복

이 방식에서 운영체제는 프로세스가 요구하는 자원을 그때그때 모두 할당하고 교착 상태 발생 여부를 주기적으로 검사한다. 그리고 교착 상태가 검출되면 다음의 방식으로 회복한다.

* 선점을 통한 회복

교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식

* 프로세스 강제 종료를 통한 회복

교착 상태에 놓인 프로세스를 모두 강제 종료하거나 교착 상태가 없어질 때까지 한 프로세스씩 강제 종료한다.

전자는 많은 프로세스가 작업 내역을 잃게될 수 있고 후자는 교착 상태가 없어졌는지 확인하는 과정에서 오버헤드가 발생할 수 있다.

This post is licensed under CC BY 4.0 by the author.