问答题

阅读下列说明,根据要求回答问题。
[说明]
某大中型电器商场仓库对货物的存取由多台配送车自动化完成,该仓库有多个入口和出口。当空配送车进入该仓库时,从仓库入口处由配送控制系统查询相应电器放置的货架位置(假设每台电器占用唯一的货架位置);当配送车装载货物从出口驶出时,系统将相应的货架位置标记设置为空。
假设实现电器商场仓库系统管理的伪指令如表所示。

伪指令含义
伪指令 说明
Get() 返回一个相应货物放置的货架位置。若当前相应货物放置的货架位置均为空,则返回空值NULL。
例如X=Get(),表示读取相应货物放置的货架位置到变量X中
Writ(X,0) 置相应的货架位置X状态为空
Writ(X,1) 置相应的货架位置X状态为非空

根据上述描述,在商场仓库入口处的伪代码程序如下。
x=Get();
IF x=NULL THEN return 0;
Writ(x,1);

为保证仓库入口处伪代码正确地并发执行,因此引入共享锁指令SLock(T)和独占锁指令xLock(T)对表T进行加锁;Upgrade(T)用于对表T所加的共享锁升级为独占锁;解锁指令Unlock(T)用于对表T进行解锁。
(1)请修改上述入口处的伪代码程序,使其满足2PL协议。
(2)满足2PL协议的仓库入口处的伪代码程序,在并发执行时是否会产生死锁若是,给出一个产生死锁的调度;若不是,请简要说明理由。

【参考答案】

这是一道要求读者掌握BPL协议实际应用的综合理解题,本试题的解答思路如下。
(A)BPL协议规定:读数据前加S......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)