카테고리 없음

[Chapter 4] 개념 이해를 위한 운영체제 [교착상태 - 교착상태 원인]

devrabbit22 2025. 2. 26. 10:21

교착상태는 다중 프로그래밍 환경에서 효율적인 자원 관리를 위해 자원을 공유하면서 병행적으로 실행하기 때문에 발생한다. 일반적으로 프로세스는 다음과 같은 순서로 자원으로 사용한다.

  1. 요청(request)
    • 프로세스는 시스템 호출을 통하여 사용하고자 하는 자원 할당을 운영체제에게 요청한다. 운영체제는 가능한 자원을 요청한 프로세스에게 할당해 준다.
    • 만약 요청한 자원이 다른 프로세스에 의해 사용중일 경우 프로세스는 대기 상태에서 기다리게 된다.
  2. 사용(usage)
    • 프로세스는 할당받은 자원을 사용한다.
  3. 해제(release)
    • 프로세스는 자원을 사용한 후 시스템 호출을 통하여 운영체제에게 자원 해제를 요청한다.

프로세스의 교착상태가 발생하는 근본적인 원인은 다중 프로그래밍을 지원하는 운영체제에서 네 가지 조건을 동시에 만족시키면서 자원을 관리하기 때문이다. 따라서 운영체제에서 이 중에 한 가지 조건이라도 만족되지 않게 자원을 관리할 경우에는 교착상태는 절대로 발생하지 않을 것임을 의미한다.

 

(조건-1) : 상호 배제(mutual exclusion)

  • 프로세스는 그들이 필요로 하는 자원을 상호 배제적으로 사용한다.

(조건-2) : 점유 및 대기(hold and wait)

  • 프로세스는 그들에게 이미 할당된 자원을 점유하면서 필요로 하는 자원을 요청한다.

(조건-3) : 비선점(no preemption)

  • 프로세스는 다른 프로세스에게 이미 할당된 자원을 선점하지 못한다.

(조건-4) : 환형 대기(circular wait)

  • 조건 2의 특수한 경우로서, N개의 프로세스{P0, P1, ... ,Pn-1}가 대기상태에 있을 때, P0는 P1이 점유하고 있는 자원을, P1은 P2가 점유하고 있는 자원을 , Pn-1은 P0가 점유하고 있는 자원을 각각 요청한다.

Reference

개념이해를 위한 운영체제