OS 13 - 상태

13-1 상태

교착 상태 발생 조건

아래 조건이 모두 만족될 때 교착 상태가 발생할 가능성이 생긴다.

  1. 상호 배제
  • 자원을 한 번에 하나의 프로세스만 이용 가능한 상태
  1. 점유와 대기
  • 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상태
  1. 비선점
  • 자원을 이용하는 프로세스의 작업이 끝나야만 비로소 이용할 수 있는 상태
  • 즉, 다른 프로세스의 자원을 강제로 빼앗지 못하는 상태
  1. 원형 대기
  • 자원 할당 그래프가 원의 형태로 그려진 상태

13-2 교착 상태 해결 방법

교착 상태를 해결하는 방법은 예방 / 회피 / 검출 후 회복 이 있다.

교착 상태 예방

교착 상태를 예방하는 방법은 교착 상태 발생 조건 중 하나라도 발생하지 않도록 하는 것이다.

  1. 자원의 상호 배제 없애기
  • 현실적으로 모든 자원의 상호 배제를 없애기는 어렵다.
  1. 점유와 대기 없애기
  • 자원 활용률이 낮아질 수 있다.
  • 특정 프로세스에 필요한 자원들을 몰아주면, 당장 자원이 필요해도 기다릴 수밖에 없는 프로세스와 사용되지 않으면서 오랫동안 할당되는 자원이 발생되기 때문에 자원 활용률이 낮아질 수 있다.
  • 많은 자원을 사용하는 프로세스는 불리해진다. 많은 자원을 동시에 사용할 타이밍을 확보하기가 어렵기 때문이다.
  1. 비선점 조건 없애기
  • 비선점 조건을 없애면, 자원을 이용 중인 프로세스로부터 해당 자원을 빼앗을 수 있다.
  • 이 방법은 일부 자원에 대해서 효과적이다.
    • ex(효과적) CPU : 한 프로세스가 CPU를 이용하다가 일정 시간이 지나면 작업이 끝나지 않았더라도 다른 프로세스가 CPU를 할당받아 사용할 수 있다.
    • ex(비효과적) 프린트 : 한 프로세스가 프린트를 사용하고 있다면 도중에 프린트 자원을 빼앗을 수는 없다.
  1. 원형 대기 조건 없애기
  • 모든 자원에 번호를 붙이고 오른차순으로 자원을 할당한다.
  • 시스탬 내에 존재하는 모든 자원에 번호를 붙이는 일이 간단한 작업이 아니다.
  • 어떤 번호를 붙이느냐에 따라 자원의 활용률이 떨어질 수 있다.

교착 상태의 발생 조건을 원천적으로 제거하여 교착 상태를 방지하는 예방 방식은 여러 부작용이 따른다.

교착 상태 회피

교착 상태 회피란 교착 상태가 발생하지 않을 정도로만 자원을 조심히 할당하는 방식이다.

  • 안전 상태 : 모든 프로세스가 정상적으로 자원을 할당받고 종료될 수 있는 상태
  • 불안전 상태 : 교착 상태가 발생할 수도 있는 상태
  • 안전 순서열 : 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서

즉, 교착 상태 회피란 안전 순서열에 맞춰 항시 안전 상태를 유지하도록 자원을 할당하는 방식이다.

교착 상태 검출 후 회복

교착 상태 검출 후 회복이란 교착 상태 발생을 인정하고 사후에 조치하는 방식이다.

  1. 선점을 통한 회복
  • 교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식
  1. 프로세스 강제 종료를 통한 회복
  • 교착 상태에 놓인 프로세스를 모두 강제 종료하거나, 교착 상태가 없어질 때까지 한 프로세스씩 강제 종료하는 방식