用PV操作实现进程同步示例(精品).ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《用PV操作实现进程同步示例(精品).ppt》由会员分享,可在线阅读,更多相关《用PV操作实现进程同步示例(精品).ppt(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、用用PV操作实现进程同步的示例操作实现进程同步的示例示例示例1 1设有设有n个整数环形缓冲区和一个无穷整数序列。进个整数环形缓冲区和一个无穷整数序列。进程程A逐个地把整数写入环形缓冲区,进程逐个地把整数写入环形缓冲区,进程B则逐则逐个地把缓冲区中的整数读出。请回答:个地把缓冲区中的整数读出。请回答:(1)叙述)叙述A、B进程间的具体制约关系;进程间的具体制约关系;(2)若信号量)若信号量S1的初值为的初值为0,信号量,信号量S2的值是的值是n-1,则下图用则下图用PV操作描述的算法有何错误?操作描述的算法有何错误?V(S1);进程进程A一个整数写入缓冲区一个整数写入缓冲区;P(S2);P(S1
2、);进程进程B从缓冲区中取出一个整数从缓冲区中取出一个整数;V(S2);2解答:(1)进程)进程A和进程和进程B是合作进程,必须同步。进程是合作进程,必须同步。进程A应该超前进程应该超前进程B,但不能超前进程但不能超前进程Bn个缓冲单元;个缓冲单元;进程进程B不能超前进程不能超前进程A。(2)进程进程A中中V(S1)操作放在操作放在“整数写入缓冲区整数写入缓冲区”之之前有逻辑错。因为可能进程前有逻辑错。因为可能进程A执行执行V(S1)后,在后,在“整整数写入缓冲区数写入缓冲区”之前,进程之前,进程A被被中断而调度进程中断而调度进程B执行,进程执行,进程B将通过将通过P(S1),从而从缓冲区中读
3、取尚从而从缓冲区中读取尚未写入的整数,造成错误。未写入的整数,造成错误。3P(S2);进程进程A一个整数写入缓冲区一个整数写入缓冲区;V(S1);P(S1);进程进程B从缓冲区中取出一个整数从缓冲区中取出一个整数;V(S2);正确解决方法:正确解决方法:设置同步信号量设置同步信号量S1,表示开始时缓表示开始时缓冲区中没有数据可供进程冲区中没有数据可供进程B读的整数,初值为读的整数,初值为0;设;设置同步信号量置同步信号量S2,表示开始时缓冲区中有表示开始时缓冲区中有n个空位个空位置可供进程置可供进程A送送n个整数,初值为个整数,初值为n。4示例示例2 2生产围棋的工人不小心把相等数量的黑子和白
4、子混生产围棋的工人不小心把相等数量的黑子和白子混装在一个箱子里,现要用自动分拣系统把黑子和装在一个箱子里,现要用自动分拣系统把黑子和白子分开,该系统由两个并发执行的进程组成,白子分开,该系统由两个并发执行的进程组成,系统功能如下:系统功能如下:(1)进程)进程A专门拣黑子,进程专门拣黑子,进程B专门拣白子;专门拣白子;(2)每个进程每次只拣一个子,当一个进程在拣)每个进程每次只拣一个子,当一个进程在拣子时不允许另一个进程去拣子;子时不允许另一个进程去拣子;(3)当一个进程拣了一个子(黑子或白子)以后,)当一个进程拣了一个子(黑子或白子)以后,必让另一个进程拣一个子(白子或黑子);必让另一个进程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PV 操作 实现 进程 同步 示例 精品
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内