인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

취업깡패님의 프로필 이미지
취업깡패

작성한 질문수

기출로 대비하는 개발자 전공면접 [CS 완전정복]

Q. Deadlock이란 무엇인지 설명해 주세요. (외 1문제)

회피 기법에서 timestamp 사용

작성

·

488

3

자원을 할당할 때 timestamp를 사용하여 어떻게 deadlock이 일어나지 않도록 하는지 추가 설명이 궁금합니다!

답변 1

1

개발남노씨님의 프로필 이미지
개발남노씨
지식공유자

timestamp를 이용한 deadlock 예방기법은 사실 면접에서 물어보질 않아서 깊게 설명을 드리진 않았습니다. 또한 전공과목을 배울 때도 엄청 자세히 중요하게 살펴보는 내용은 아니라서, 공부했을 당시에는 깊게 공부했더라도 현재는 저 또한 timestamp를 이용해서 예방하는 구나 정도만 인지하고 있습니다. 하지만 한번 깊은 이해를 해두면 좋을 수 있으니 적당한 깊이로 추가 설명드리겠습니다 ㅎㅎ

 

deadlock을 예방하기 위해 트랜잭션이 시작된 시간을 timestamp로 삼고, 이를 기준으로 크게 두 방식으로 처리합니다.

1. Wait-die

 T1, T2 두 개의 transaction이 있다고 해볼게요. T2가 선점하고 있는 data에 T1이 접근을 요청합니다.  T1의 timestamp가 T2의 timestamp보다 더 older일 경우에는 wait 할 수 있습니다. 그렇지 않은 경우에 T1은 그냥 die 합니다. (roll back)

2. Wound-wait

 T1, T2 두 개의 transaction이 있다고 해볼게요. T2가 선점하고 있는 data에 T1이 접근을 요청합니다. T1의 timestamp가 T2의 timestamp보다 더 younger일 경우에는 wait 할 수 있습니다. 그렇지 않은 경우 에 T2는 그냥 die 합니다(roll back)

 

 

 

 

취업깡패님의 프로필 이미지
취업깡패
질문자

답변 감사합니다.

단순히 생각하기에 wound-wait가 wait-die에 비해 roll back이 덜 일어날 것 같은데 그러면 실제로는 wound-wait 방식의 구현이 대부분인가요?

취업깡패님의 프로필 이미지
취업깡패

작성한 질문수

질문하기