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 |