问题
问答题
对下图中的事务Ti和Tj构造一个符合两阶段锁协议并且冲突等价于串行调度<Ti:Tj>的并发调度。
Ti | Tj |
read(C) | C:=C+1 |
write(C) | read(A) |
A:=A*2 | write(A) |
read(A) | A:=A+1 |
write(A) | read(B) |
B:=B+1 | write(B) |
答案
参考答案:
Ti Tj Lock-X(C)
read (C)
C:=C+1
write(C)
-
-
-
-
-
-
-
-
-
-
-
Lock-X(B)
read(B)
B:=B+1
write(B)
unlock(A) -
-
-
-
-
Lock-X( A)
unlock(C)
read(A)
A:=A*2
write(A)
unlock(A)
Lock-X(A)
read(A)
A:=A+1
write(A)
-
-
-
-
unlock (B)
解析: 此题考查了两阶段锁协议和可串行化调度的内容。两阶段锁协议将每个事务的执行过程分为加锁阶段和解锁阶段。在加锁阶段,事务可以申请获得数据项上的任何类型的锁,但不允许释放任何锁。在解锁阶段,事务可以释放任何数据项上的任何类型的锁,但不能再申请任何锁。每个事务开始执行后就进入了加锁阶段。当第一次释放锁后,即转入解锁阶段。如果一个并发调度冲突等价于某个串行调度,则该并发调度是冲突可串行的。