본문 바로가기

C.E/OS

DeadLock - DeadLock Prevention

DeadLock Prevention은 DeadLock을 전혀 일으키지 않도록 함으로써

 

DeadLock을 방지하는 방법이다. 그 방법은 DeadLock의 필요조건 4가지 중에서

 

한 가지라도 없앰으로써 원천봉쇄하는 것이다.

 

DeadLock의 필요조건 4가지는 아래의 글을 읽어보길 바란다.

 

http://blog.naver.com/darknata/70085988586

 

이 4가지 조건을 없애는 데에는 다양한 방법들이 존재하고 있다. 그런 방법들을 일일이

 

나열 할 수는 없기 때문에 가장 대표적인 방법 한가지 씩을 나열하겠다.

 

- Mutual Exclusion : 이 조건은 자원의 속성에 따른 조건이기에 일반적인 해결방법은 없다.

 

- Hold and Wait : 이 조건은 프로세스가 실행되기 전애 자신이 일을 마치기 위해서 필요한 총 자원의

                    양을 미리 할당 받음 으로써 없앨 수 있다. 단 이 방식은 자원의 효율이 낮아 지고

프로세스가 Starvation(기아) 상태에 빠질 수 있다.

 

- No Preemption : 만일 Pn이 R1을 가지고 있고 R2를 요청할 때 만일 R2를 할당 받을 수 없다면 가지고

                                    있는 R1도 반환 시킴으로써 없앨 수 있다. 또한 이 방식은 Hold and Wait 조건의 방안으로도

                                    사용 될 수 있다. 단 이 방법은 RollBack가능성이 있는데 만일 5000K의 메모리의 작업을하던

                      프로세스가 100K의 메모리를 요청을 한다고 가정을 하자. 만일 요청이 거부된다면

           이 프로세스는 자신이 작업을 해오던 5000K의 메모리를 반환해야만 한다.

 

- Circular Wait : 모든 리소스에 번호를 매기고 높은 번호를 가진 리소스를 할당 받은 프로세스는 그보다

                         낮은 번호의 리소스를 요청할 수 없게 함으로 이 조건은 해결된다. 예를 들어 프로세스가

                          R2를 가지고 있다면 R1은 신청 할 수 없다. 즉 프로세스는 필요한 모든 R1을 얻은 후에만

R2를 얻을 수 있는 것이다.

 

 

 

'C.E > OS' 카테고리의 다른 글

운영체제란?? - Batch System  (0) 2013.11.15
운영체제란?? - 정의와 목적  (0) 2013.11.15
DeadLock - Methods of Handling  (0) 2013.11.15
DeadLock - Resource Allocation Graph  (0) 2013.11.15
DeadLock - DeadLock이란?  (0) 2013.11.15