데드락 탐지에 대해 질문드립니다.
안녕하세요
지금 영어로 수업을 듣는 상황인데 이해가 안되서...정말 정밀 미칠것 같습니다.
주제는 deadlock detection 입니다.
제가 이해할 수 있게 조금만 도와주시면 안될까요ㅠㅠ?
아래 파일 두개를 첨부했습니다.
resource.txt는 자원을 나타내고 simpledeadlock 파일은 프로세스들을 의미합니다.
교제가 똑같은 강의 자료를 찾아서 알고리즘을 아래적어보았습니다.
데드락 검출 알고리즘
1. 할당 행렬 A에서 행의 값이 모두 0인 프로세스를 우선 표시한다.
2. 임시 벡터 W 를 만든다. 그리고 현재 사용 가능한 자원의 개수(결국 가
용 벡터 V 의 값)를 벡터 W 의 초기값으로 설정한다.
3. 표시되지 않은 프로세스들 중에서 수행 완료 가능한 것이 있으면 (요청
행렬 Q에서 특정 행의 값이 모두 W보다 작은 행에 대응되는 프로세스)
이 프로세스를 표시한다. 만일 완료 가능한 프로세스가 없으면 알고리즘
을 종료한다.
4. 단계 3의 조건을 만족하는 행을 Q에서 찾으면, 할당 행렬 A에서 그 행에
대응되는 값을 임시 벡터 W에 더한다. 그리고 3 단계를 다시 수행한다.
위 알고리즘을 이해 해야 되는데 아무리 해봐도 어떻게 되는지 이해를 못해서요.
제가 첨부한 파일으로 프로세스와 자원이 존재한다고 가정하구요
퀀텀이 1인 라운드로빈 알고리즘으로 프로세스 스케쥴링이 된다고 가정할때
P1 프로세스가 8초에 자원요청을 할 때 위 알고리즘을 따라서 만들어보면요
프로스세스 표시 : None
R1, R2, R3, R4, R5
임시 벡터(W) : [3, 100, 5, 1, 1]
요청 행렬(Q)
R1 R2 R3 R4 R5
P1 0 0 0 1 0
P2 0 0 0 0 0
할당행렬(A)
R1 R2 R3 R4 R5
P1 0 0 0 0 0
P2 0 0 0 0 0
1번 할당행렬A가 P1, P2 모두 0인데 대체 어떤것을 먼저 선택해야되는지요?
모두다 0이라면 아무거나 선택해도 되는건지요?
댓글 달기