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

  • 17
  • 0
  • 约2.4千字
  • 约 13页
  • 2018-08-12 发布于江苏
  • 举报
用PV操作实现程同步的示例

用PV操作实现进程同步的示例 示例1 设有n个整数环形缓冲区和一个无穷整数序列。进程A逐个地把整数写入环形缓冲区,进程B则逐个地把缓冲区中的整数读出。请回答: (1)叙述A、B进程间的具体制约关系; (2)若信号量S1的初值为0,信号量S2的值是n-1,则下图用PV操作描述的算法有何错误? 解答: (1)进程A和进程B是合作进程,必须同步。进程A应该超前进程B,但不能超前进程Bn个缓冲单元;进程B不能超前进程A。 (2)进程A中V(S1)操作放在“整数写入缓冲区”之前有逻辑错。因为可能进程A执行V(S1)后,在“整数写入缓冲区”之前,进程A被中断而调度进程B执行,进程B将通过P(S1),从而从缓冲区中读取尚未写入的整数,造成错误。 示例2 生产围棋的工人不小心把相等数量的黑子和白子混装在一个箱子里,现要用自动分拣系统把黑子和白子分开,该系统由两个并发执行的进程组成,系统功能如下: (1)进程A专门拣黑子,进程B专门拣白子; (2)每个进程每次只拣一个子,当一个进程在拣子时不允许另一个进程去拣子; (3)当一个进程拣了一个子(黑子或白子)以后,必让另一个进程拣一个子(白子或黑子); 用PV操作管理这两个并发进程,使其能正确实现上述功能。 (1)应定义的信号量及初值 ; (2)在下列的程序中填上适当的P、V操作,以保证它们能正确

文档评论(0)

1亿VIP精品文档

相关文档