有三个并发进程A、B和C,共享一个缓冲器F。F中每次只能存放一个数。进程A每次产生一个随机数R,将其存人F中。若存放到F中的数是5的倍数,则由进程B将其取出并打印,否则由进程C将被5除后的余数打印出来。为防止数的丢失和重复取同一个数,现用PV操作进行管理。

admin2012-10-31  22

问题 有三个并发进程A、B和C,共享一个缓冲器F。F中每次只能存放一个数。进程A每次产生一个随机数R,将其存人F中。若存放到F中的数是5的倍数,则由进程B将其取出并打印,否则由进程C将被5除后的余数打印出来。为防止数的丢失和重复取同一个数,现用PV操作进行管理。请在下面程序的空格中填上合适的操作,以达到上述要求。
begin S1,S2,S3:semaphore;
    F:integer;
    S1:=1;S2:=0;S3:=0;
cobegin
  process A process B process C
  begin    begin    begin
    L1:{产生随机数R};L2:⑤___________;    L3:P(s3)
    ①___________;    x::⑥___________;   y:=F;
    F:=②___________;⑦___________;        ⑧___________;
    if R mod 5=0 then  print x;              y:=⑨___________;
    ③___________      goto L2;              print y;
    else④___________;end;                  goto L3

选项

答案①P(S1)②R③V(S2)④V(S3)⑤P(S2)⑥F⑦V(S1) ⑧V(S1)⑨y mod 5

解析 本题主要把握进程2和进程3与进程1之间存在同步问题,而进程2与进程3之间不存在同步问题。所以在进程2和进程3巾释放资源都应该是给S1,而进程S1进行V操作时要视具体情况释放资源给S2或S3。
转载请注明原文地址:https://kaotiyun.com/show/WuNx777K
本试题收录于: 操作系统题库理工类分类
0

最新回复(0)