DeadLock 특징들

운영체제 2016. 8. 19. 22:29
반응형
SMALL

이번시간엔 교착상태에 대해서 설명해 보려고한다. 사실 os에서 가장 중요하다고 봐도 과언이 아니다. 학교 시험이나 나중에 대학원 컴퓨터공학과 구술면접때도 교착상태에 대해서 단골로 질문하곤 한다고 한다. 그만큼 중요하니깐 질문하는것이겠지..ㅎㅎ 





1. DeadLock(교착상태)란?

어떤 집합 내에 있는 모든 프로세스가 대기상태이며, 이 집합내에 있는 프로세스가 이 집합내에 다른 프로세스가 가지고 있는 자원을 기다리고 있는 현상을 교착상태라고 한다. 한마디로 이야기해서  두개이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있고 아무런 작업도 하지 못한채 계속 무한정 대기하는 상태이다. 



사진출저: google



2. 교착상태가 일어나기 위한 조건


① 상호배제: 프로세스들이 필요로하는 자원에 대해 배타적인 통제권을 요구한다.

② 점유대기: 프로세스가 할당한 자원을 가진 상태에서 다른자원을 기다린다.

③ 비선점: 프로세스가 어떤 자원의 사용을 끝낼 때까지 그 자원을 뺏을 수 없다.

순환대기; 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다.


--> 이 조건을 모두 만족해야 교착상태가 일어난다. 


3. 교착상태의 예방조건


  • 상호배제 조건의 제거
교착 상태는 두 개 이상의 프로세스가 공유 불가능한 자원을 사용하니 발생하는 것이므로 공유 불가능한, 즉사 상호 배제 조건을 제거하면 교착 상태를 해결할 수 있다.

  • 점유와 대기 조건의 제거
한 프로세스에 수행되기 전에 모든 자원을 할당시키고 나서 점유하지 않을 때에는 다른 프로세스가 자원을 요구하도록 하는 방법이다. 자원 과다 사용으로 인한 효율성, 프로세스가 요구하는 자원을 파악하는 데에 대한 비용, 자원에 대한 내용을 저장 및 복원하기 위한 비용, 기아상태, 무한 대기 등의 문제점이 있다.

  • 비선점 조건의 제거
 비선점 프로세스에 대해 선점 가능한 프로토콜을 만들어 준다.

  • 환형 대기 조건의 제거
 자원 유형에 따라 순서를 매긴다.

이 교착 상태의 해결 방법들은 자원 사용의 효율성이 떨어지고 비용이 많이 드는 문제점이 있다.

출저: Lael's World

4. 교착상태 회피

-> 교착상태 발생시 피해나가는 방법. 은행원 알고리즘이 가장 대표적이다.

※ 은행원 알고리즘

E,J,Dijkstra가 제안한 방법으로, 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는 데서 유래한 기법이다

프로세스가 자원을 요구할 때 시스템은 자원을 할당한 후에도 상태로 남아있게 되는지를 사전에 검사하여 교착 상태를 회피하는 기법

안정 상태에 있으면 자원을 할당하그렇지 않으면 다른 프로세스들이 자원을 해지할 때까지 대기함


출저: #include <stdio.h>


5. 교착상태 회복법??

- 교착상태를 일으킨 프로세스를 종료하거나, 할당된 자원을 해제함으로써 회복하는 것을 말한다.

- 프로세스 종료법

1. 교착상태의 프로세스를 모두 중지

2. 교착상태가 제거될 때까지 한 프로세스씩 중지

- 자원선점법

1. 교착상태의 프로세스가 점유하고 있는 자원을 선점해 다른프로세스에게 할당하며, 해당프로세스를 일으킬 시 정지시키는 방법

2. 우선순위가 낮은 프로세스등을 위주로 프로세스의 자원을 선점한다.

출저: #include <stdio.h>



반응형
LIST

'운영체제 ' 카테고리의 다른 글

이중동작모드(Dual-Mode operation)  (0) 2017.01.15
멀티프로세싱(Multi Processing)이란?  (0) 2016.09.20
임계구역(Critical section)  (0) 2016.09.11
Context Switching  (0) 2016.09.08
가상메모리  (0) 2016.08.10
블로그 이미지

만년필석사

,