您的位置:首页 > 其它

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

2011-10-23 18:40 387 查看
临界区问题的解答

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:消费者取了产品去干其他事(相当于剩余区),生产者可以不停制造;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: