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

admin2014-07-18  34

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

选项

答案begin SR,SM1,SM2,SP:semaphore; B1,B2:record; SR:=1;SM1:=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:=B1; Signal(SR) 加工Y wait(SM2); B1:=Y; signal(SP); goto M; end; Process print Z:record: Begin P:wait(SP); Z:=B1; signal(SM2) 打印Z go to P; end; Coend; end;

解析
转载请注明原文地址:https://kaotiyun.com/show/aaxi777K
0

最新回复(0)