교착상태와 프로세스

OS/Theory 2016. 4. 14. 09:30

<교착상태와 프로세스>

실행 중인 프로세스가 자원에 대해 취할 수 있는 행동은 두 가지가 있다.

1. 필요한 자원에 대한 요청(Request)

이때 요청된 자원의 상태에 따라 다시 두 가지의 경우가 발생

요청된 자원이 사용 가능(Available)하다면 이 자원을 할당받아 사용하면 될 것

자원이 다른 프로세스에 의해 사용 중이라면 반납되어질 때까지 대기 상태로 기다려야 할 것

2. 사용이 끝난 자원의 반납

자원에 대한 요청과 반납은 실행 중인 프로세스가 시스템 서비스를 호출(System Call)함으로써 운영체제에 의해 이루어지며, 반납된 자원으로 그 자원 때문에 대기 중인 프로세스를 깨우는 것도 운영체제임



<교착 상태의 4가지 원인>

아래의 4가지 조건들이 모두 갖춰질 때 교착 상태가 발생(한 가지 조건이라도 생기지 않도록 한다면 교착상태는 발생하지 않음)

1. 자원의 배타적인 사용

교착 상태의 발생이 시스템이 보유한 한정적인 자원에 대한 프로세스들의 사용 경쟁 때문이라고 했을 때, 만약 자원이 한정적이라도 모두 공유가 가능한 자원이라면 교착 상태는 발생할 수 없다.

시스템이 보유한 자원 중 배타적 사용이 요구되는 자원 때문에 교착상태가 발생하는 원인이 된다.

상호배제 조건(Mutual Exclusion Condition)이라고도 함


2. 자원의 부분 할당 (Partial Allocation).

각각의 프로세스는 자신의 실행 전체 과정에서 필요한 자원을 필요할 때마다 일부분씩 확보, 실행해 나가다가 어느 시점에 할당이 불가능한 자원 때문에 이미 확보한 자원들을 소유한 채 대기 상태가 되어 버리는 과정을 겪으면서 교착 상태에 빠질 가능성을 높이는 것이다.

보유와 대기(Hold & Wait) 조건이라 부르기도 함


3. 자원의 선점 불가능성

선점이 불가능한 자원을 억지로 선점이 되도록 하면 어떨까?

선점의 권한이 주어진 프로세스들은 자원 때문에 대기할 필요가 없으므로 교착 상태라는 것은 없앨 수 있다. 하지만 자신의 자원을 선점 당한 프로세스들은 정상적인 실행을 포기해야 한다. 왜냐하면 선점을 당한다는 말은 그 자원을 가지고 해왔던 지금까지의 일을 잃게 된다는 것이기 때문이다.

비선점(No Preemption) 조건이라고도 함


4. 자원에 대한 환형 대기 (Circular-Wait)

프로세스들이 자신의 자원은 보유한 채로 서로 상대방의 자원을 요청하고 결과적으로 대기 상태가 되어버리는 일련의 과정에서 교착 상태가 발생 가능하다.

 





 

 

Copyright2014 By 휴먼사이언스

 

 

posted by 경원구