37. 直列化可能性
37
T1 T2
READ x READ x
x = x - 1
x = x - 1
WRITE x
WRITE x
READ:読込み
WRITE:書込み
初期値:x = 5
x = 4
T1
READ x
x = x - 1
WRITE x
T2
READ x
x = x - 1
WRITE x
初期値:x = 5
T2
READ x
x = x - 1
WRITE x
T1
READ x
x = x - 1
WRITE x
or
x = 3 x = 3このスケジュールは,
直列化可能でない
38. 直列化可能な例
T1 T2
READ x
x = x - 1
WRITE x
READ x
READ y WRITE x
y = y - 1
WRITE y
READ y
y = y - 1
WRITE y
初期値:x = 5, y = 5 T1
READ x
x = x - 1
WRITE x
READ y
y = y - 1
WRITE y
or
T2
READ x
WRITE x
READ y
y = y - 1
WRITE y
T2
READ x
WRITE x
READ y
y = y - 1
WRITE y
T1
READ x
x = x - 1
WRITE x
READ y
y = y - 1
WRITE y
初期値:x = 5, y = 5
x = 4, y = 3 x = 4, y = 3x = 4, y = 3
このスケジュール
は直列化可能
47. 直列化可能性
T1 T2
LOCK x
READ x
x = x - 1
WRITE x
UNLOCK x
LOCK x
READ x
x = x - 1
WRITE x
UNLOCK x
READ:読込み
WRITE:書込み
初期値:x = 5
x = 3
T1
LOCK x
READ x
x = x - 1
WRITE x
UNLOCK x
T2
LOCK x
READ x
x = x - 1
WRITE x
UNLOCK x
初期値:x = 5
or
x = 3
LOCK:ロック
UNLOCK:アンロック
T2
LOCK x
READ x
x = x - 1
WRITE x
UNLOCK x
T1
LOCK x
READ x
x = x - 1
WRITE x
UNLOCK x
x = 3
このスケジュール
は直列化可能
50. 直列化可能性を保証するために
50
T1
LOCK X
LOCK Y
READ X
X = X - 10000
WRITE X
READ Y
Y = Y + 10000
WRITE Y
UNLOCK X
UNLOCK Y
成⻑相
縮退相
ロックをかける相
ロックを解除する相
2相ロッキング
銀⾏⼝座X
銀⾏⼝座Y
¥10,000振込み
ボブ