DeadLock이란 프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태를 말한다.
예를 들어가 P1과 P2가 리소스 A,B 둘 다를 얻어야 한다고 가정하자.
t1에 P1이 리소를 A를 얻고 P2가 리소스 B를 얻었다면
t2때 P1은 리소스 B를, P2는 리소스 A를 기다리게 된다.
하지만 서로 원하는 리소스가 상대방에게 할당되어 있기 때문에
이 두 프로세스는 무한정 기다리게 되는데 이러한 상태을 DeadLock상태라고 한다.
DeadLock의 필요조건은 아래의 4가지가 있다.
-Mutural Exclusion : 한 리소스는 두 개의 프로세스에게 동시에 할당될 수 없다.
-Hold and Wait : 한 프로세스가 리소스를 가지고 있고 필요한 또다른 리소스는
다른 프로세스가 가지고 있다.
-No Preemption : 할당되어 있는 리소스는 프로세스가 해제하기 전까지 강탈할 수 없다.
-Circular Wait : P0가 원하는 리소스는 P1이 가지고 있고 P1이 원하는건 P2가, ... , Pn-1이
원하는 건 Pn이, Pn이 원하는 건 다시 P0가 가지고 있다.
'C.E > OS' 카테고리의 다른 글
DeadLock - Methods of Handling (0) | 2013.11.15 |
---|---|
DeadLock - Resource Allocation Graph (0) | 2013.11.15 |
Memory Management - Overlay (0) | 2013.11.15 |
Memory Management - Dynamic Loading, Dynamic Linking (0) | 2013.11.15 |
Memory Management - MMU (0) | 2013.11.15 |