본문 바로가기

전공지식/운영체제

[운영체제] 교착상태

1. 교착상태

1.1 교착상태

- 한 프로세스가 자원을 요청했을 때, 자원을 사용할 수 없는 경우가 발생할 수 있고, 그 경우에는 프로세스는 대기상태로 들어간다. 이처럼 대기 중인 프로세스들이 그들이 요청한 자원들이 다른 프로세스에 의해서 점유되고 있고, 그들도 다 대기상태에 있으면, 결코 다시는 그 상태를 변경시킬수 없는 상황.

[그림1 교착 상태]

그림1에서 P1프로세스는 P2 프로세스가 사용중인 자원 R1을 할당받기 위해서 기다리고 있고 P2 프로세스는 P1 프로세스가 사용중인 자원 R2를 할당받기 위해서 기다리고 있는데, 이와 같이 교착상태(DeadLock)이 발생하면 작업이 중지되고 프로세스들이 사용할 자원을 기다리게 된다.


1.2 교착상태 처리방법

1.2.1 예방 or 회피

시스템이 결코 교착상태가 되지않도록 보장하기 위하여 교착상태를 예방하거나 회피하는 프로토콜을 사용한다.

- 예방

[표1 교착상태 예방]


교착 상태는 다음 4가지 조건이 모두 성립할 때 발생한다.

※ 상호배제 : 자원이 최소 하나 이상 비공유 (한번에 한 프로세스만 자원을 할당)
※ 점유대기 : 최소 하나의 자원을 보유하면서 다른 프로세스에 할당된 자원을 대기
※ 비선점    : 다른 프로세스의 자원을 뺏을 수 없음.
※ 순환대기 : 상대방이 가진 자원을 서로 대기.

=> 이들 조건 중에서 최소한 하나가 성립하지 않도록 보장함으로써, 교착상태의 발생을 예방.

하지만 자원의 낭비가 심하다는 단점이 있다.


- 회피

교착 상태가가 발생하면 피해나가는 방법이다. ex) 은행원 알고리즘(Banker's algorithm)

E,J,Dijkstra가 제안한 방법으로 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는 데서 유래한 기법이다. 프로세스가 자원을 요구할 때 시스템은 자원을 할당한 후에도 안정 상태로 남아있게 되는지를 사전에 검사하여 교착상태를 회피하는 기법이다. 안정상태에 있으면 자원을 할당하고, 그렇지 않으면 다른 프로세스들이 자원을 해지할때까지 대기한다.

[그림2. 교착상태 회피]

1.2.2 회복

시스템이 교착상태가 되도록 허용한 다음에 교착 상태를 일으킨 프로세스를 종료하거나, 할당된 자원을 해제함으로써 회복하는 것을 의미한다.

a) 프로세스를 종료하는 방법

1) 교착상태의 프로세스를 모두 중지.
2) 교착상태가 제거될 때 까지 한 프로세스씩 중지.

b) 자원을 선점하는 방법

1) 교착상태의 프로세스가 점유하고 있는 자원을 선점하여 다른 프로세스에게 할당하며, 해당 프로세스를 일시정지 시키는 방법.
2) 우선 순위가 낮은 프로세스, 수행된 횟수가 적은 프로세스 등을 위주로 프로세스의 자원을 선점한다.


1.2.3 무시 (대부분의 운영체제가 사용하는 방법)

문제를 무시하고, 교착상태가 시스템에서 결코 발생하지 않은 척 한다.


'전공지식 > 운영체제' 카테고리의 다른 글

[운영체제] 프로세스 동기화  (0) 2017.03.09
[운영체제] 프로세스와 쓰레드  (0) 2017.03.09
5장 CPU Schedule  (0) 2016.12.18