Dekker算法实现进程互斥

  进程互斥的软件实现:Dekker算法

接下来,我会介绍Dekker算法(1、2、3、4),并比较四种Dekker算法的特点和区别。

Dekker算法1:

伪代码如下:

特点:

1、引入turn(交替进入)

2、p1、p2无死锁

缺点:不满足公平性,即如果p1每秒100次、p2每秒1次,p1必须服从p2,只能每秒1次

Dekker算法2:

伪代码如下:

 特点:

1、引入C1、C2,用于判断对方是否在临界区(1表示不在,0表示在)

2、解决了公平

缺点:不安全,如果P1和P2同时到达并检查对方时,可能发生同时进入。

Dekker算法3:

伪代码如下:

 特点:

1、引入C1、C2(微调:先置标志)(1表示不在,0表示在)

2、保证了安全性、公平性

缺点:破坏了安全性,如果P1和P2同时到达并设置为0,导致永远无法进入

Dekker算法4:

伪代码如下:

特点:

1、引入turn、C1、C2

2、保证了安全、公平、活动

     一个进程判断对方的标志为0时,不马上认为对方已经进入,这是还要根据turn进一步判断对方是否已经进入或正想进入。

    P1、P2分别只对C1、C2赋值,唯独要对turn进行存取,因此不适合于分布式系统,适合Bakery。

综上所示:

      以上4种Dekker算法中,Dekker算法4保证了安全性、公平性和活动性。同时引入了turn、C1和C2,不仅可以判断对方是否处于临界区,并且引入的turn可以表示处于哪个进程的时间段,就可以解决同时进入临界区的问题。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值