📜  门| GATE-CS-2016(Set 1)|第61章

📅  最后修改于: 2021-06-29 01:15:57             🧑  作者: Mango

考虑以下两个锁相协议。假设事务T访问(用于读或写操作)特定对象集{O1,…,Ok}。这是通过以下方式完成的:

步骤1 。 T获得对O1的排他锁。 。 。 ,按其地址的升序排列。
第二步。执行所需的操作。
第三步。所有锁均被释放。

该协议将
(A)保证可序列化和无死锁
(B)既不保证可序列化性,也不保证无死锁
(C)保证可序列化但不死锁
(D)保证无死锁,但不能序列化答案: (A)
说明:上面的方案是保守2PL(或静态2PL)。在保守2PL协议中,事务必须在事务开始执行之前锁定它访问的所有项目。它用于避免死锁。另外,2PL是冲突可序列化的,因此可以保证可序列化。

因此,选项A

保守2PL的优点:

  • 没有死锁的可能性。
  • 确保可序列化。

保守2PL的缺点:

  • 吞吐量和资源利用率较低,因为它在事务开始执行之前就保存了资源。
  • 由于没有对解锁操作的限制,因此可能会出现饥饿。
  • 2pl是无死锁协议,但在实践中很难使用。

这个问题的测验