- 1
- 0
- 约9.46千字
- 约 61页
- 2016-11-21 发布于贵州
- 举报
假定系统有3个并发进程get 、copy 和put共享缓冲器B1和B2。进程get负责从输入设备上读信息,每读出一条记录后放到B1中。进程copy从缓冲器B1中取出一条记录拷贝后存入B2。进程put取出B2中的记录打印输出。B1和B2每次只能存放一条记录。要求3个进程协调完成任务,使打印出来的与读入的记录个数、次序完全一样。请用记录型信号量写出并发程序。(北大1990年试题) 解: 设置4个信号量,其中empty1对应空闲的缓冲区1,其初值为1;full1对应缓冲区1中的记录,其初值为0; empty2对应空闲的缓冲区2,其初值为1;full2对应缓冲区2中的记录,其初值为0。相应进程描述为: get( ){ while(1){ 从输入设备读入一条记录; P(empty1); 将记录存入缓冲区1; V(full1); } } copy( ){ while(1){ P(full1); 从缓冲区1中取出一条记录; V(empty1); P(empty2); 将取出的记录存入缓冲区2 ; V(full2); } } put( ){ while(1){ P(full2); 从缓冲区2中取出一条记录; V(empty2); 将取出的记录打印出来; } } Main( )
原创力文档

文档评论(0)