W1(A)다음 W2(A)이므로 T1 -> T2 이고 W2(B) 다음 W2(B)여서 T2 -> T1이다. Cycle이 있으므로 not serializable.
첫번째 막대기 이후는 T1이 shrinking 한다. 첫 막대 이전에 T1은 필요한 lock을 다 얻었다. 두번째 막대는 T2가 shrinking한다.
R2(A)는 Shared lock이다. 따라서 W1(A)가 블락된다. R1(A)였으면 가능했다.
첫번째 시나리오에서 T1이 S lock을 얻고 T2가 X lock을 얻기 위해 기다리고 있다. 만약 T3가 S lock을 얻고자한다고 허용하면 T2는 계속 기다려야한다. 따라서 이걸 방지하기 위해 first come first served이다.
두번째에서는 X1을 upgrade로 허용해준다.
x lock은 아무도 안기다리고 있을때 허용해준다.
s lock은 shared이다.
S1, S2, X2, S3, S1 상황에서 S1이후 S2까지는 허용되지만 X2는 허용되지 않는다.
그냥 오래된 T가 항상 우선권을 가지고 있는데 Wait-die는 younger가 앞에 older가 있으면 스스로 죽고? Wound-wait은 older가 younger를 죽이는 것 같다?
![](https://images.velog.io/images/injoon2019/post/15730e78-3d5a-49e6-8caf-7638f6e2b754/image.png