1. 设T1、T2、T3,是如下的三个事务,设A的初值为0。
    T1:A:=A+2;
    T2:A:=A2:
    T3:A:=A**2; (即 A←A^2)
    (1)若这三个事务允许并发执行,则有多少种可能的正确结果?请一一列举出来。
    (2)请给出一个可串行化的调度,并给出执行结果。
    (3)请给出一个非串行化的调度,并给出执行结果。
    (4)若这三个事务都遵守两段锁协议,请给出一一个不产生死锁的可串行化调度。
    (5)若这三个事务都遵守两段锁协议。请给出一个产生死锁的调度.
    答:
    设T1、T2、T3,是如下的三个事务,设A的初值为0。
    T1:A:=A+2;
    T2:A:=A
    2;
    T3:A:=A*A;(A←A^2)
    ①若这三个事务允许并行执行,则有多少可能的正确结果,请一以列举出来
    答:
    A的最终结果可能有2、4、8、16。
    因为串行执行次序有T1T2T3;T1T3T2;T2T1T3;T2T3T1;T3T1T2;T3T2T1。对应的执行结果是16;8:4;2;4;2。
    ②请给出一个可串行化的调度4井给出执行结果
    答:
T1T2T3
Slock A
Y=A=0
Unlock A Xlock A
A=Y+2 Slock A
写回A(=2) 等待
Unlock A 等待
等待
Y=A=2
Unlock A
Xlock A
Slock A
A=Y*2等待
写回A(=4)等待
Unlock A等待
Y=A=4
Unlock A
Xlock A
A=Y*Y
写回A(=16)
Unlock A

最后结果A为16,是可串行化的调度。

(3)请给出一个非串行化的调度,并给出执行结果。
答:

T1T2T3
Slock A
Y=A=0
Unlock A
Slock A
Xlock A
等待 Unlock A
A=Y+2 等待
写回A(=2) Slock A
Unlock A 等待
Y=A=2
Unlock A
Xlock A
Xlock A
等待 Y=Y**2
等待 写回A(=4)
等待 Unlock A
A=Y*2
写回A(=0)
Unlock A

最后结果A为0,是非可串行化的调度。

4)若这三个事务都遵守两段锁协议,请给出一个不产生死锁的可串行化调度。
答:

T1T2T3
Slock A
Y=A=0
Xlock A
A=Y+2 Slock A
写回A(=2) 等待
Unlock A 等待
Y=A=2
Xlock A
Unlock A 等待 Slock A
A=Y*2等待
写回A(=4)等待
Unlock A等待
Y=A=4
Unlock A
Xlock A
A=Y**2
写回A(=16)
Unlock A
Unlock A

(5)若这三个事务都遵守两段锁协议,请给出一个产生死锁的调度。

T1T2T3
Slock A
Y=A=0
Slock A
Y=A=0
Xlock A
等待
Xlock A
等待
Slock A
Y=A=0
Xlock A
等待
  1. 今有三个事务的一个调度r3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A),该调度是冲突可串行化的调度吗?为什么?
    答:
    是冲突可串行化的调度。
    Scl=r3(B) r1(A) w3(B) r2(B) r2(A) w2(B) r1(B) w1(A),交换r1(A)和w3(B),得到
    r3(B) w3(B) r1(A) r2(B) r2(A) w2(B) r1(B) w1(A)
    再交换r1(A)和r2(B) r2(A) w2(B),得到
    Sc2=r3(B) w3(B) r2(B) r2(A) w2(B) r1(A) r1(B) w1(A)
    由于Sc2是串行的,而且两次交换都是基于不冲突操作的,所以
    Sc1=r3(B) r1(A) w3(B) r2(B) r2(A) w2(B) r1(B) w1(A)
    是冲突可串行化的调度。

  2. 考虑T1和T2两个事务。
    T1: R(A); R(B);B=A+B; W(B) T2:R(B); R(A);A=A+B; W(A)
    (1)改写T1和T2,增加加锁操作和解锁操作, 并要求遵循两阶段封锁协议。
    (2)说明T1和T2的执行是否会引起死锁,给出T1和T2的一个调度并说明之。
    答:
    (1)

T1T2
Slock A Slock B
R(A) R(B)
Xlock B Xlock A
R(B) R(A)
B=A+B A=A+B
W(B) W(A)
Unlock A Unlock B
Unlock B Unlock A

(2)

T1T2
Slock A
R(A)
Slock B
R(B)
Xlock A
Xlock B
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐