Deadlock이라 하면 교착상태라고 해서
운영체제를 공부하다보면 심심치 않게 들을 수있다.
대표적으로 4가지 경우가 있고 etc...
그럼 설명하면...
교착상태는 동일한 자원을 공유하고 있는 두 개의 컴퓨터 프로그램들이,
상대방이 자원에 접근하는 것을 사실상 서로 방해함으로써, 두 프로그램 모두 기능이 중지되는 결과를 낳는 상황
말로 설명하면 이런데 밑의 그림을 보고 이해하면 무엇보다 편한다.
Thread1이 Resource1 코드를 실행 하기 위해서 해당 자원을 잠근다.
그리고 Thread2는 Resource2 코드를 실행 하기 위해서 해당 자원을 잠근다.
만약에 Resource1 코드에서 Resource2를 접근 하는 코드가 있을 경우
Resource2 코드에서 Resource1를 접근하는 코드가 있을 경우
서로 자원을 접근 할 수없는 상황이 발생한다.
이러한 Deadlock이 발생하는 조건은 4개가 있다
1. 상호배재 ( Mutual Exclusion ) : 프로세스들이 각각 필요 자원에 대해 배타적 통제권을 요구할 때
2. 점유와 대기 ( Wait ) : 프로세스가 다른 자원을 요구하면서 자신에게 할당된 자원을 해제하지 않을때
3. 비중단조건 ( Non-preemption ) : 프로세스에 할당된 자원을 끝날때까지 해제할 수 없을 때
4. 환형대기조건( Circular wait ) : 프로세스들이 순환을 이루어서 존재하여야 하며, 이를 구성하는 각 프로세스는 순환 내의
이전 프로세스가 요청하는 자원을 점유하고 다음 프로세스가 점유하고 있는 자원을 요구
출처 [http://barunmo.blogspot.kr/2013/06/deadlock.html]
http://egloos.zum.com/gwing/v/2202287
'학부_대학원 > 운영체제' 카테고리의 다른 글
페이지 교체 정책[Page Replacement Policy] (0) | 2016.07.29 |
---|---|
Component[컴포넌트] (0) | 2016.07.29 |
가상 메모리 to 물리 메모리[3] (0) | 2016.07.26 |
크리티컬 섹션 vs 뮤텍스 vs 세마포어 (0) | 2016.07.25 |
가상 메모리 to 물리 메모리[용어] (0) | 2016.07.25 |