CH3 应用题参考答案 1、 有三个并发进程:R 负责从输入设备读入信息块,M 负责对信息块加工处理;P 负责打印输出信息块。今提供; l )一个缓冲区,可放置 K 个信息块; 2 )二个缓冲区,每个可放置 K 个信息块; 试用信号量和 P 、V 操作写出三个进程正确工作的流程。 答: 1 ) var B : array [ 0 , k-1 ] of item ; sread : semaPhore : = k ; smanage : semaPhore : = 0 ; swrite : semaphore : = 0 ; rptr : integer : = O ; mptr : integer : = O ; wptr :integer : = 0 ; x : item cobegin process reader ; process manager ; process writer ; begin begin begin LI : read a message intox ; L2 : P ( smanage ) ; L3 : P ( swnte ) ; P ( sread ) ; x:=B[mptr]; x:=B[swrite]; B[rptr]:=x; mptr:=(mptr+1) mod k; wptr:=(wptr+1) mod k; Rptr:=(rptr+1) mod k; manage the message in x; V(sread); V(smanage); B[mptr]:=x; print the message in x; Goto L1; V(swrite); goto L3; End; goto L2; end; End; coend 2 ) var A , B :array [ 0 , k -l ] of item ; sPut1 : semaphore:=k; SPut2: semaPhore:=k; sget1 : semaPhore : = 0 ; sget2 : semaphore : = 0 ; put1 :integer :=O ; put2:integer : = 0 ; get1 :integer :=O ; get2 : integer : = O ; cobegin process reader ; processn manager; process Writer ; begin begin begin Ll : read a message into x ; L2 : P ( sgetl ) ; L3 : P ( sgetZ ) ; P ( SPut1 ) ; x : = A [ get1] ; x : = B [get2]; A [put1]:=x ; get1 :(get1+1 ) mod k ; get2:=(get2 + l ) mod k ; Put1:=(put1+1) mod k; V(sput1); V(sput2); V(sget1); manage the message into x; print the message in x; Goto L1; P(sput2); goto L3; Put2:=(put2+1) mod k; V(sget2); Goto L2; End; Coend 2 设有n 个进程共享一个互斥段,如果: ( 1 )每次只允许一个进程进入互斥段; ( 2 )每次最多允许m 个进程(m 簇n )同时进入互斥段。 试问:所采用的信号量初值...