• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    미해결

Deadlock detection에 대해서 질문드립니다.

21.11.04 03:58 작성 조회수 165

0

질문1

Deadlock detection을 할 때 Allocation이 0인 경우 Finish 초기화를 true로 해준다고 하셨는데요. 이것은 Dead lock avoidance 알고리즘에서도 적용할 수 있지 않나요? 자원을 차지하지 않은 스레드의 요청은 최종적으로 무조건 들어준다고 생각하면 되니까, Allocation이 0이 아닌 스레드들의 safe sequence만 찾아줘도 될 것 같은데요.

 

질문2

같은 Banker's 알고리즘을 사용해서 dead lock detection 관점에서 Finish에 false 상태가 있으면 dead lock으로 보는 것을 보면, 반대로 dead lock avoidance 관점에서는 모든 finish가 true가 아닌 상태가 당장에는 unsafe 상태지만 필연적으로 dead-lock 상태가 되는 과정으로 보면 되겠네요? Banker's 알고리즘 자체가 모든 경우의 수를 뒤져서 dead lock에 도달하지 않는 경우를 찾는 것인데, 그것에 만족하는 경우가 없다는 뜻이니까요.

 

질문3

dead lock detection 시기를 1년에 한 번 dead lock이 발생하는 프로그램을 예로 드셔서 6개월에 한 번, 1달에 한 번, 하루에 한 번 등을 예시로 드셨는데요.

일단 detection 시기가 길어지는 것과 detection 되는 cycles의 수가 많아지는 것이 무슨 관계인지 잘 모르겠습니다. dead lock에 의한 사이클 수는 시스템이 멈추는 그 순간 고정되는 것이 아닌가요?

또 예시로 드신 detection 텀이 상당히 긴대, dead lock이 걸리면 프로그램이 멈춘다는 거잖아요? 비즈니스 어플리케이션을 예로 들면 아침에 dead lock 걸렸는데 저녁에 detection 해서 Recovery하면 회사에서 난리가 날 것 같은데요. detection 텀이 정말로 예시로 들어주신 것처럼 하루, 1 달, 6개월 이렇게 되나요?

답변 2

·

답변을 작성해보세요.

3

oct_sky_out님의 프로필

oct_sky_out

2021.11.28

저는 3번 문제를 이렇게 생각해봤어요! (틀렸을 수도 있습니다.)

3번의 경우 한 프로그램에 하나의 멀티쓰레드 체인만 존재하라는 법은 없으므로, 여려개의 쓰레드 체인이 얽혀있다고 가정하는 것 같습니다.

예를 들어 10개의 멀티쓰레딩 체인이 존개한다고 치고 모든 체인들은 non-safe하다고 가정하고, 이 쓰레드 체인은 각각 완전 분리된 기능을 수행한다고 칩시다.

그리고 3일 후에 확인해보니 1개의 사이클이 발견되었었습니다.

해결 후 이번엔 기간을 좀 더 늘여 1달 후에 확인해보니 이번엔 3개의 사이클이 발견되었습니다.

즉 강의에서 나온 것 처럼 non-safe하게 되면, deadlock은 언제일어나도 이상하지않은 것은 사실입니다. 불시에 일어나는 deadlock잡기위해서  확인 시기를 잡는데. 이를 예로 들면 바퀴벌레가 나오는 집에 주기적으로 약을 쳐서 증식을 막는 역할이라고 보면 됩니다.

세스코 아저씨가 1달에 한번 와서 약을 치는 집과 1년에 한번 와서 약을 치는 집 중 어느 집이 바퀴벌레가 많을까요?

그리고 바퀴벌레가 증식하는 핵심 구역이 어디인가를 1달마다 약치는 집은 발견하기 쉬울 것이고, 1년에 한번 약치는 집은 발견하기 어려울 것이라는 생각을 하게 되네요.

마지막 질문 끝에 있는 부분은 회사 컨벤션에 따라서 다를 거 같습니다.ㅎㅎ 맨 마지막 부분의 질문은 실제로 기업인터뷰해보시면 좋은 경험이 될거같네요.

틀린부분이나 수정해야 할 부분이 있으면 댓글주세요!

@~@

1

하나의 솔루션은 제기된 문제점에 대한 해결책을 찾는 것이지,

모든 문제에 대한 해결책이 아니므로, 여기서 질문하신 내용들은 모두 다

"그렇게 생각할 수도 있겠다"가 답변이 되겠네요.

 

여기서 질문자가 떠올린 질문들을 깊이 파고 들어가보면, 

해당 문제점을 다룬 논문들이 있을 것이고,

만약 없다면, 획기적인 새로운 논문 주제를 찾은 것이 될 겁니다. ^^;

 

질문3의 detection term부분만 다시 한 번 봐주실 수 있을까요? (52분 30초 내용입니다.)

이건 제 생각이라기 보다는 강의 내용에 대한 부분이라서요.

detection 시기가 길어지면 detection 되는 cycle의 수가 어째서 많아지나요? 

dead lock 발생시 프로그램이 다운되고 그때의 snap shot이 고정되면, 이 snap shot을 일주일 뒤에 확인하는 것과, 한 달 뒤에 확인하는 것이 다를 뿐일 텐데, 늦게 확인할 수록 cycle 수가 많아져서 dead lock을 일으킨 부분을 찾기가 어렵게 된다는 내용이 이해가 가지 않습니다.