问题 问答题

对下图中的事务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)

解析: 此题考查了两阶段锁协议和可串行化调度的内容。两阶段锁协议将每个事务的执行过程分为加锁阶段和解锁阶段。在加锁阶段,事务可以申请获得数据项上的任何类型的锁,但不允许释放任何锁。在解锁阶段,事务可以释放任何数据项上的任何类型的锁,但不能再申请任何锁。每个事务开始执行后就进入了加锁阶段。当第一次释放锁后,即转入解锁阶段。如果一个并发调度冲突等价于某个串行调度,则该并发调度是冲突可串行的。

问答题
单项选择题