[시스템 소프트웨어] 05-3 deadlock detection

yesman·2022년 1월 6일
0

시스템 소프트웨어

목록 보기
17/23

1가지 타입의 리소스

데드락을 감지한다. 데드락을 예방하지 않고 탐지하면 그때 복구하는 방식이다.
자원할당 그래프와 비슷한 wait-for graph를 사용한다. 리소스 노드들에 있는 edge들을 제거하면서 프로세스들 간의 edge 하나로 합친다.

Pi -> Pj : Pi가 필요한 리소스를 release하기를 기다림.

Pi -> PjPi -> Rq & Rq -> Pj 는 같다. 전자는 wait-for이고 후자는 자원할당이다.

만약 wait-for그래프에서 cycle를 형성하게 되면 데드락이 발생한다.

여러 타입의 리소스

여러개의 자원에서는 wait-for 그래프 전략이 적용되지 않는다.

따라서 detection algorithm를 사용한다. 전체 작업이 완료되는 프로세스의 모든 가능한 할당 순서를 확인한다.

avoidance와 마찬가지로 사용가능한 자원의 개수와 프로세스가 요청하는 자원의 개수를 따져서 끝낼 수 있는 프로세스를 찾는다.

safe sequence는 <P0, P2, P3, P1, P4> 이다.

만약 프로세스 P2가 자원 각각 0, 0, 1개를 요청한다면 데드락이 발생한다. P0이 끝나면 진행이 되지 않기 때문이다.

profile
유니티

0개의 댓글