临界区域问题
2012-05-21 10:27
127 查看
问题:
教材:operating system concepts [sixth edition]的汉化版,高等教育出版社原著:Abraham Silberschatz
问题:临界区域问题(7章2小节)
描述:书中对解决两个进程的临界区域问题提出以下这样1个解决方案,并给出
评述,在下关键对评述不理解。
解决方案:让两个进程共享一个 普通变量turn,其初值为0或1。如果
turn == i,那么进程Pi(i为0或1)允许在其临界区内执行。进程Pi的
结构如下:
do{
while (turn != i);
临界区
turn = j;
剩余区
}while(1)
评注说这一方案确保了每一个时刻只有一个进程处于临界区域。然而,它
不满足前进要求(按书就是有空让进的意思),因为它要求进程在临界区中
执行时要严格交替。例如,如果turn == 0且P1就绪要进入其临界区,那么
尽管P0可能在其 剩余区段 ,P1并不能这样做 。 (哪样做啊,是指P1不能
进入自己的 临界区吗?这又怎么可能,不是有turn = j 吗 ,另一个进程肯
定可以检测到这一改变,马上进入相应临界区,根本不会管这个进程在不在
剩余区,又怎么会不能呢?)
解答:
这个关键是要理解文中所说的:"执行时要严格交替",
也就是说P1不能连续执行两次临界区,
比如,对于P1而言:
while (turn != 1);
临界区
turn = 0; //turn被赋了0后,P0还在长期执行于其剩余区中,可是P1要继续下走
剩余区
while (turn != 1); //这个时刻就是所谓的"P1并不能这样做"的状态
临界区
turn = 0;
剩余区
相关文章推荐
- 进程同步之临界区域问题及Peterson算法
- (转)进程同步之临界区域问题及Peterson算法
- 进程同步之临界区域问题及Peterson算法
- 临界区域问题【2】
- 进程同步之临界区域问题及Peterson算法
- iPhoneX页面安全区域与内容重叠问题
- 求二维数组矩形区域最大和问题
- jvm 运行时数据区域问题
- 二值图像区域边界问题
- BZOJ2831(小强的金字塔系列问题--区域整点数求法)
- 分别使用静态数组与动态数组建立一个区域 - 回复 "老A123" 的问题
- AWS中国(北京)区域发布的常见问题回答
- 贪心之区域覆盖问题
- moment.js时间区域问题 昨天、上月、上季度、去年
- 如何生成不规则形状的mask,以解决对图像不规则区域设置ROI的问题
- cocos2d js v3.10 sprite点击事件的区域问题
- 【数码管识别】感兴趣区域提取和缩放的顺序问题
- 【转】分平面的最大区域数 (分割问题)
- 如何生成不规则形状的mask,以解决对图像不规则区域设置ROI的问题
- 待解——窗体移动 焦点模型 无效区域 刷新问题