临界区算法:Peterson算法与Dekker算法

当时老师在课上讲的时候就没搞懂

现在要写作业了果然还是得靠自己学明白啊=_=


下面的概念都来自于《操作系统概念》这本书


首先说一下临界区问题(Critical Section Problem)

临界区的问题的解答必须满足以下三个条件:

1)     互斥:如果进程Pi在其临界区内执行,那么其他进程都不能在其临界区内执行。

2)     有空让进:如果没有进程在其临界区内执行且有进程需进入临界区,那么只有那些不在剩余区内执行的进程可参加选择,以确定谁能下一个进入临界区,且这种选择不能无限推迟。

3)     有限等待:从一个进程做出进入其临界区的请求,直到该请求允许为止,其他进程被允许进入其临界区的次数有上限。







接下来说一下

Peterson算法



Peterson算法是一个实现互斥锁的并发程序设计算法,核心就是三个标志位是怎样控制两个方法对临界区的访问,这个算法设计的想当精妙,我刚开始看的时候就被绕了一下。

算法使用两个控制变量flag与turn.

其中flag

的值为真,表示ID号为n的进程希望进入该临界区.

标量turn保存有权访问共享资源的进程的ID号.

flag[] is boolean array; and turn is an integer
flag[0]   = false;
flag[1]   = false;
turn;

当时不明白这个算法关键是其中的一句话很迷惑不知道怎么理解

while (flag[j] == true && turn == j);

恩,就是这个很坑,为什么进程j想要进去并且也轮到它了它会在一直死循环等待呢?

  • 12
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值