设进程P、Q共享一台打印机,打印机任一时刻只能被一个进程所使用,而不能同时使用。P、Q进程程序如下:
begin
busy:boolean;
busy:=false;
cobegin
processP
begin
L:ifbusythengotoL
busy:=true;
进程P使用打印机;
busy:=false;
gotoL:
end:
proce

欢迎免费使用小程序搜题/刷题/查看解析,提升学历,成考自考报名,论文代写、论文查重请加客服微信skr-web

设进程P、Q共享一台打印机,打印机任一时刻只能被一个进程所使用,而不能同时使用。P、Q进程程序如下:
begin
busy:boolean;
busy:=false;
cobegin
processP
begin
L:ifbusythengotoL
busy:=true;
进程P使用打印机;
busy:=false;
gotoL:
end:
processQ
N:ifbusythengotoN
busy:=true;
进程Q使用打印机;
busy:=false;
gotoN;
end;
coend;
end.
(1)上面的并发程序段能保证同一时刻只有一个进程使用打印机吗?为什么?
(2)上面程序不利于充分发挥处理器的效率,为什么?
(3)试用一同步机制重新编写上述程序,使之既能发挥处理器的效率,又能保证两个进程不同时使用打印机。

(1)不能保证同一时刻只有一个进程使用打印机。因为当进程P检测到打印机不忙后,刚准备执行busy:=true语句时,如果出现中断(如时间片到)而让Q进程执行,此时busy的值是FALSE,进程Q就能使用打印机,而在此过程中Q也可能被中断, 而使得P可以从刚才的断点处继续执行,进程P执行busy:=true,也使用打印机,这样,两个进程就会同时使用了打印机。
(2)因为进程P和Q测试打印机忙时仍然不停地循环测试,占用CPU,因而降低了处理器的效率,用来作忙等待,当测试打印机忙时,该进程应当处于等待状态,让出处理器。
(3)利用PV操作可以保证两个进程不同时使用打印机,又能充分发挥处理器的效率:
begin
   S:semaphore;
   S:=1;
  cobegin
  process P                  process Q 
     begin                        begin
        L1:P(s);                 L2:P(s);
           进程P使用打印机;    进程Q使用打印机;
           V(s);                          V(s);
           goto L1;                    goto L2;
           end;                          end;
  coend;
end.

访客
邮箱
网址

通用的占位符缩略图

人工智能机器人,扫码免费帮你完成工作


  • 自动写文案
  • 自动写小说
  • 马上扫码让Ai帮你完成工作
通用的占位符缩略图

人工智能机器人,扫码免费帮你完成工作

  • 自动写论文
  • 自动写软件
  • 我不是人,但是我比人更聪明,我是强大的Ai
Top