欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > PPT文档下载
 

用PV操作实现进程同步的示例.ppt

  • 资源ID:14878092       资源大小:358.50KB        全文页数:13页
  • 资源格式: PPT        下载积分:9.9积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要9.9积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

用PV操作实现进程同步的示例.ppt

用PV操作实现进程同步的示例,2,示例1,设有n个整数环形缓冲区和一个无穷整数序列。进程A逐个地把整数写入环形缓冲区,进程B则逐个地把缓冲区中的整数读出。请回答: (1)叙述A、B进程间的具体制约关系; (2)若信号量S1的初值为0,信号量S2的值是n-1,则下图用PV操作描述的算法有何错误?,V(S1);,进程A,一个整数写入缓冲区; P(S2);,P(S1);,进程B,从缓冲区中取出一个整数; V(S2);,3,解答:,(1)进程A和进程B是合作进程,必须同步。进程A应该超前进程B,但不能超前进程Bn个缓冲单元;进程B不能超前进程A。 (2)进程A中V(S1)操作放在“整数写入缓冲区”之前有逻辑错。因为可能进程A执行V(S1)后,在“整数写入缓冲区”之前,进程A被中断而调度进程B执行,进程B将通过P(S1),从而从缓冲区中读取尚未写入的整数,造成错误。,4,P(S2);,进程A,一个整数写入缓冲区; V(S1);,P(S1);,进程B,从缓冲区中取出一个整数; V(S2);,正确解决方法:设置同步信号量S1,表示开始时缓冲区中没有数据可供进程B读的整数,初值为0;设置同步信号量S2,表示开始时缓冲区中有n个空位置可供进程A送n个整数,初值为n。,5,示例2,生产围棋的工人不小心把相等数量的黑子和白子混装在一个箱子里,现要用自动分拣系统把黑子和白子分开,该系统由两个并发执行的进程组成,系统功能如下: (1)进程A专门拣黑子,进程B专门拣白子; (2)每个进程每次只拣一个子,当一个进程在拣子时不允许另一个进程去拣子; (3)当一个进程拣了一个子(黑子或白子)以后,必让另一个进程拣一个子(白子或黑子); 用PV操作管理这两个并发进程,使其能正确实现上述功能。,6,(1)应定义的信号量及初值 ; (2)在下列的程序中填上适当的P、V操作,以保证它们能正确并发工作。,Process A begin L1: ; 拣黑子; ; goto L1; end;,V(S2);,Process B begin L2: ; 拣白子; ; goto L2; end;,信号量S1(允许进程A拣黑子)、S2 (允许进程B拣白子),初值为1,0,P(S1);,P(S2);,V(S1);,7,示例3,一条小河上有一座独木桥,规定每次只允许一个人过桥,现河东、河西都有人要过桥,如果把每个过桥者都看做一个进程,为保证安全,请用PV操作管理这两个并发进程,使其能正确实现上述功能。,8,(1)应定义的信号量及初值 ; (2)在下列的程序中填上适当的P、V操作,以保证它们能正确并发工作。,Process (E-W)i (i=1,2,) begin L1: ; 过桥; ; goto L1; end;,V(S);,Process (W-E)i (i=1,2,) begin L2: ; 过 桥; ; goto L2; end;,信号量S(允许任一方向的人过桥),初值为1,P(S);,P(S);,V(S);,9,示例4,假定有3个进程R,W1,W2共享一个缓冲器B,B中每次只能存放一个整数。进程R每次启动输入设备读一个整数且把它存放到缓冲器B中。若存放到缓冲器B中的是奇数,则由进程W1将其取出打印,否则,由进程W2将其取出打印。规定进程R存入缓冲器B的数,由进程W1和W2正确无误地打印出来(即要求打印的与存入的完全一致)。要求用PV操作管理这3个并发进程,使它们能正确同步工作。,10,解答:,设3个同步信号量:empy是进程R的私有信号量,初值为1,表示开始时进程R可向缓冲器B中送一整数;SW1是进程W1的私有信号量,初值为0,表示开始时缓冲器B中无奇数可供进程W1取; SW2是进程W2的私有信号量,初值为0,表示开始时缓冲器B中无偶数可供进程W2取; 3个进程的同步并发程序如下:struct semaphore empty,SW1,SW2=1,0,0;int B;cobegin,11,void PROCESS R(void) int x; while(TRUE) 从输入设备上读一个整数到x; P(empty); B=x; if(x%2=1) V(SW1); else V(SW2); ,12,void PROCESS SW1(void) int y; while(TRUE) P(SW1); y=B; V(empty); 打印y中的数; void PROCESS SW2(void) int z; while(TRUE) P(SW2); z=B; V(empty); 打印z中的数; ,13,

注意事项

本文(用PV操作实现进程同步的示例.ppt)为本站会员(max****ui)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!