교착상태(DeadLock)은 두 개 이상의 프로세스(쓰레드)가 서로가 가지고 있는 자원을 기다리는 상황이 발생해 무한정 대기하는 상태를 의미한다. 교착상태가 발생하는 상황을 그림으로 나타내면 아래 그림과 같다.
위 그림에서 Process1
은 Resource1
- Resource2
순서로 접근하고 Process2
은 Resource2
- Resource1
한다고 하자. Process1
과 Process2
가 거의 동시에 실행된다면, 두 번째 Resource를 할당받기 위해 상대 프로세스가 가지고 있는 Resource가 할당될 때까지 기다릴 것이다.
교착상태가 발생하면 프로세스가 작동을 멈추고 서버의 경우 클라이언트의 응답을 할 수 없다.
정보처리기사책에 표기되어 있는 교착상태의 정의는 '둘 이상의 프로세스들이 자원을 점유하고 있는 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상'이다.
흔히 말하는 교착상태의 필요조건 4가지라는 것이 존재하는데 4가지는 다음과 같다.
위의 4가지 상황중 하나라도 해당하지 않는다면 교착상태가 일어나지 않는다.
교착 상태를 해결하는 기본적인 방법은 예방
, 회피
, 발견
, 회복
으로 총 4가지가 존재한다.
은행원 알고리즘은 모든 프로세스가 한 번에 요구해도 할당할 수 있는 충분한 양의 자원을 만들어 놓아 공급하는 알고리즘이다.
좋은 글 감사합니다.