假定有二三个进程P1、P2、P3共享一个缓冲器A,而A中每次只能存放一个数。当缓冲器中无数时,进程P1可将从输入设备上读入的数存放到缓冲器A中。若存放到缓冲器中的是奇数,则允许进程P2将其取出打印;若存放到缓冲器中的是偶数,则允许进程P2将其取出打印。同时

admin2012-10-31  43

问题 假定有二三个进程P1、P2、P3共享一个缓冲器A,而A中每次只能存放一个数。当缓冲器中无数时,进程P1可将从输入设备上读入的数存放到缓冲器A中。若存放到缓冲器中的是奇数,则允许进程P2将其取出打印;若存放到缓冲器中的是偶数,则允许进程P2将其取出打印。同时规定:进程P1必须等缓冲器中的数被取出打印后才能再存放一个数;进程P1或P2对每次存人缓冲器中的数只能打印一次;P1和P2都不能从空的缓冲器中取数。
    试填空使下列程序完整。
    begin
       B:integer:
       S,SO,SE:semaphore;
       S:=1;SO:=0;SE:=0;
    cobegin
       process P1
       x:integer:
    begin
    L1:从输入设备读一个数;
    x:=读入的数;
    P(s);
    B:=x:
    if B=奇数then
    (1)__________
    else
    (2)__________
    goto L1
    end;
    process P1
    y:integer;
    begin
    L2:__________(3)
    y:=B;
    (4)__________
    打印y中的数;
goto L2
end;
  process P2
  Z:integer;
  begin
  L3:__________(5)
  z:=B:
  (6)__________
  打印z中的数;
  goto L3;
  end;
coend;
end;

选项

答案(1)V(SO); (2)V(SE); (3)P(S0); (4)V(S); (5)P(SE); (6)V(S);

解析 本题中重点应把握三个信号量的作用:s表示是否可以把数存人缓冲器,由于缓冲器每次只能放一个数,所以它的初值取为“1”。SO表示缓冲器中是否有奇数,初值为“0”,表示无奇数。SE表示缓冲器中是否有偶数,初值为“0”,表示无偶数。
转载请注明原文地址:https://jikaoti.com/ti/2PEaFFFM
本试题收录于: 操作系统题库理工类分类
0

最新回复(0)