进程同步 读操作系统概念第六版

临界区问题的解答

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

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

3:有限等待:在一个进程做出进入其临界区的请求被允许期间,其他进程被允许进入其临界区的次数存在一个上限。

下图,进程Pi的结构:

个人理解:1,进入临界区flag[i]=true,出临界区flag[i]=false;

                  2,进入临界区时判断进程j是否在临界区,用flag[j]==true判断。

具体流程介绍:

首先进入,falg[i]和flag[j]都设为了true,但是turn只能设为i或j,若为i,则Pi进程进入临界区,Pj等待。Pi出临界区,进入剩余区,flag[i]=false,Pj通过判断语句进入临界区。分两种情况,1:Pi早早执行完剩余区,等待Pj出临界区,设置flag[j]=false,Pi进入临界区,后面基本相同;2:Pj出了临界区,执行完剩余区,但是Pi还在剩余区(则flag[i]=false),则Pj循环判断,flag[i]=false,则Pi不在临界区,Pj在进入临界区操作。情况1满足了互斥,情况2满足了前进(有空让进)。

例子介绍:生产者和消费者,上面情况1:生产者制造产品时,消费者不能取产品;而消费者取产品,生产者不能制造产品;上面情况2:消费者取了产品去干其他事(相当于剩余区),生产者可以不停制造;

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值