
상호배제에 의해 나타나는 문제점.
둘 이상의 프로세스들이 각각 자원을 점유한 상태에서, 서로 다른 프로세스가 점유하고 잇는 자원을 요구하며 서로의 작업이 끝나기만을 기다리는 교착상태를 의미
선행조건을 하나 이상 위반하도록 설계
: 가능한 경우 자원을 공유 가능하게 만든다.
예를 들어, 읽기 전용 데이터는 여러 프로세스가 동시에 접근할 수 있도록 허용 가능
: 자원을 요청하는 시점에서 다른 어떤 자원도 가지고 있지 않아야한다.
1. 프로세스 시작 시 필요한 모든 자원을 할당(종료시 모두 반납)
2. 자원이 필요한 경우 보유 자원을 모두 놓고 다시 요청
: 어떤 프로세스가 자원을 점유하고 있을 때 다른 프로세스가 그 자원을 요구하면, 첫번째 프로세스가 자원을 강제로 해제하도록 한다. 주로 선점 가능한 자원에만 적용
: 자원에 일련의 순서를 부여하고, 프로세스가 자원을 요청할 때 반드시 특정 순서에 따라 요청하도록 한다.
이를 통해 사이클이 형성 되는것을 방지
ex. 자원 A,B,C 가 있고 순서대로 번호 1,2,3을 부여한다면 프로세스는 자원 A 를 점유하고 있을 때, B와 C를 요청할 수 있지만, 자원 C를 점유하고 있는 상태에서 자원 A나 B를 요청 불가하다.
데드락 상태로 들어가지 않도록 실시간 자원 할당
데드락 발견시 회복
교착상태를 방지하는 것 보다는 발생한 후 해결하는 것
: 자원 할당 그래프를 통해 교착 상태 탐지
자원 요청시, 탐지 알고리즘을 실행시켜 그에 대한 오버헤드 발생
:교착상태를 일으킨 프로세스를 종료하거나, 할당된 자원을 해제시켜 회복시키는 방법
데드락이 매우 드물게 발생하므로 데드락에 대한 조치 자체가 더 큰 오버헤드일 수 있다.
데드락 발생시 직접 프로세스를 죽이는 방법으로 대처