僵局可能是一个虚拟的劣势,可能会在合作或竞争性程序社区中的某个时候浮出水面。僵局是一种状态,在这种状态下,由于需要固定流程的每项技术,一组方法的阻塞,其头痛所需的资源以及由于同等组织而预期通过使用其他人而持有的最终资产的释放,因此无法任何继续进行的方法。
死锁涉及以下元素:
1.资源:
在死锁情况下,可能需要使用操作工具和有用的资源管理器系统。系统内部市场上出售的资产数量有限,这些资源分布在多种竞争方法中。
- 可重复使用的资源–
可重复使用的辅助工具是可以一次使用最方便的一种方法正确使用的辅助工具,并且不会因使用而耗尽。流程会积累援助单位,这些援助单位以后会通过不同的策略加以利用。
可重用源的示例包括处理器,I / O通道,I / O设备,第一和辅助存储器,文件,数据库,信号灯等。 - 消耗性资源–
消耗性援助是可以创造和销毁的一种。对特定种类的消耗性资产的数量没有限制。消耗性资源的样本包括中断,指示符消息和I / O缓冲区方面的专业知识。一种技术应在牺牲资源之前先请求资源,一旦牺牲它就需要释放有用的资源。所请求的资产数量不会超过小工具中市场上的全部资产。
2.要求:
请求可以理解为任何处理器请求使用任何资源的时间。如果不能实时授予请求,则请求技术必须等待,直到它积累了源。
3.使用:
当资源分配给处理器时,会出现此状态。
4.发布:
执行所需的操作后,资源将设置为空闲状态,这可能与资源的释放有关。
分布式死锁检测算法:
每当遇到僵局的压力时,算法程序都会在每种情况下启动。该算法程序可以通过使用方法的本机网站或通过使用定位任意位置的方法等待程序来启动。通过拍摄设备快照并检查其是否为僵局,可以检测到分布式情况。
分布式死锁检测算法程序可以分为以下四类:
- 路径推入–
路径信息-分派给等待节点到阻塞节点。 - 边缘追逐–
探测消息区域单元在图形边缘上调度。 - 扩散计算–
在图边缘上分派的回音消息定位单元。 - 全球国家检测–
清除和清除WFG的创建和减少。
边缘追逐算法:
- 边缘追逐算法在每种情况下都使用唯一的消息,僵局检测是由过程P i发起的,它的里程是通过方式P i的房屋网站发送到过程P k的房屋网站的。
- 探测消息沿世界范围TWF图的边缘传播。如果探测消息返回到其启动过程,则检测到僵局。
笔记 –
保持布尔数组,该数组依赖于每种技术P i 。如果P j知道P i依赖于它,则从属(j)准备成立。否则,这是错误的。
示例:设想一个如图所示的系统。如果方法P 1启动情况检测,则它将探测(1、3、4)发送到S 2 。由于P 6正在等待P 8且P 7正在等待P 10 。 S 2将探针(1、6、8)和( 1、7、10)发送到S 3 ,S 3依次将探针(1、9、1)发送到S 1 。在接收探针( 1、9、1)时,S 1声明P 1被阻塞(死锁)。
If Pi is locally dependent on itself then declare deadlock
Else for all Pj and Pk such that
Pi is locally dependent upon Pj, and
Pj is waiting on Pk, and
Pj and Pk are on totally different sites
Send probe(i,j,k) to home site of Pk
接收到探针(i,j,k)后,定位将执行后续操作。
If
Pk is blocked, and
dependentk(i) is false. and
Pk has not replied to any or all requests of Pj
then
begin
dependentk(i)= true;
if k = i then declare that Pi is under deadlock
else for all Pm and Pn such that
Pk is locally dependent upon Pm, and
Pm is waiting on Pn and
Pm and Pn are on totally different sites,
send Prob(I,m,n) to house sites of Pn
end
使用边缘追踪算法的给定示例的解决方案:
- 开始时,P 6要求P 8提供其公开标签,并将其自己的2更改为3。
- P 3询问P 4并将其公共标签1更改为3。
- P 9询问P 1并找到其自己的公共标签3,然后检测情况。
- P 1 →P 2 →P 3 →P 4 →P 5 →P 6 →P 8 →P 9 →P 1 。