假定系统有三个并发进程read、move和print共享缓冲器Bl和B2。进程read负责从输入设备上读信息,每读出一条记录后把它存放到缓冲器B1中。进程move从缓冲器Bl中取出一条记录,加工后存入缓冲器B2。进程print将B2中的记录取出打印输出。缓

admin2019-08-15  55

问题 假定系统有三个并发进程read、move和print共享缓冲器Bl和B2。进程read负责从输入设备上读信息,每读出一条记录后把它存放到缓冲器B1中。进程move从缓冲器Bl中取出一条记录,加工后存入缓冲器B2。进程print将B2中的记录取出打印输出。缓冲器Bl和。B2每次只能存放一条记录。要求三个进程协调完成任务,使打印出来的与读入的记录的条数,次序完全一样。请用wait和signal原语写出它们的并发程序。

选项

答案begin SR,SMl,SM2,SP:semaphore; B1,B2:record; SR:=1;SMl:=0;SM2:=1;SP:=0; cobegin process read X:record; begin R:(接收来自输入设备上一条记录) X:=接收的一条记录; wait(SR); B1:=X: signal(SMl); goto R; end. Process move, Y:record; begin M:wait(SMl) Y:=Bl: Si nal(SR) 加工Y wait(SM2); B2:=Y; signal(SP); goto M; end. Process print Z:record; begin P:wait(SP) Z:=B2; signal(SM2) 打印Z goto P; end; coend; end; =

解析
转载请注明原文地址:https://jikaoti.com/ti/YjGjFFFM
0

相关试题推荐
最新回复(0)