Deadlock Detection - Banker’s 알고리즘에서 safe state 판단 방식 #24
-
@LEEHYUNDONG @minseongkim97 @annie1004619
Deadlock Detection의 Banker’s 알고리즘에서 safe state을 판단하는 과정을 모르겠습니다.. 알려주세요! 스터디원! |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 2 replies
-
@guswns3371 정보
detection의 경우 ! 제가 이해한 포인트는
그러면 적어놓으신 표를 보고 하나씩 살펴보면 이런식으로 찾아가다보면 <P2, P0, P3, P1, P4> 의 순서로 자원을 할당하면 deadlock이 발생하지 않을 거같아요. 글을 너무 빠르게 적어서 뭔가 두서 없지만 제가 이해한 것은 여기까지 입니다! |
Beta Was this translation helpful? Give feedback.
-
제 생각에는 deadlock avoidance가 약간 질문에서 말씀하시는거랑 비슷한거 같은데, detection에서는 최대 가용 자원을 합해서 계산 하는게 아닌 현재 시점에서의 가용자원만 보는거 같아요
네. available만 보는 거로 알고 있습니다. allocation은 이미 할당 된 자원이고 request는 현재 시점에서 프로세스가 요청하는 자원이기 때문에 돌려받는 자원(=allocation)과 available로 남은 순서를 찾는 방식인거 같습니다.
위에 답변에서 말한 것 처럼 allocation은 이미 시스템에서 특정 프로세스에 할당한 자원이기 때문에 request만 보면 되는거 같아요!
위에 답변을 보시면 이부분은 해결될거 같아요. 가용자원이 초기 (0, 0, 0)이면 애초에 P0 request = (0, 1,0)이기 때문에 할당이 불가하고 P2부터 수행한 뒤에 (3, 0, 3)을 돌려 받아서 가용자원이 (0, 0, 0)+(3, 0, 3) = (3, 0, 3)이 되는거 같습니다.
이걸 보면 현재 available (0, 0, 0)이기 때문에 request 중에서 request만 응할 수 있습니다. 그래서 P2가 끝나고 available = 원래상태 (0, 0, 0) + P2가 반납한 자원(3, 0, 3) = (3, 0, 3) |
Beta Was this translation helpful? Give feedback.
@guswns3371
안녕하세요. 현준님 오늘 만나긴 하지만? 글을 보게되어 제가 이해한 것을 토대로 한 번 떠들어 보겠슴다!
정보
detection의 경우 ! 제가 이해한 포인트는
그러면 적어놓으신 표를 보고 하나씩 살펴보면
우선 available이 (0, 0, 0)입니다.
request에 (0, 0, 0)인 프로세스가 없으면 무조건 데드락 상태를 유발합니다.
하지만 프로세스 P0, P2는 request가 (0, 0, 0)이네요 그럼 순서를 P0 -> P2 or P2 -> P0로 해볼 수 있습니다.
그럼 자원을 P0, P2를 모두 수행하고 반환된 자원들로 인하여 available 상태는 (3, 1, 3)이 됩니다.
이후에 가용자원(available) (3, 1, 3) 보다 작은 쌍을 가지고 있는 프로세스는 P3가 있습니다. P1도 있구요.
이런식으로 찾아가다보면 <P2, P0, P3, P1, P4> 의 순서로 자원을 할당하면 deadlock이 발생하지 않을 거같아요.
그래서 detection은 safe한 seq를 보장하는 프로세스를 detect하면서 deadl…