谁会操作系统的题?

2025-12-13 03:22:10
推荐回答(1个)
回答1:

13.两个并发执行的进程A和B的程序如下:
进程A
Repeat
N:=N+5;
Until false;
进程B
Repeat
打印N的值;
N:0;
Until false;
其中,N为整数,初值为4.若进程A先执行了三个循环后,进程A和进程B又并发执行了一个循环,写出可能出现的打印值.正确的打印值应该是多少?请用P、V操作进行管理,使进程A和B并发执行时不会出现与时间有关的错误.

答:因为N初值为4,若进程A先执行了三个循环,此时N的值为19。
当进程A和进程B并发执行时可能有两种执行次序
如果是先B后A,则打印19
前面那个N中的值为0,后面为5
这是错误的,即发生了与时间有关的错误。
用P、V操作进行管理,使进程A和B并发时不会出现与时间有关的错误的程序如下:(S为互斥信号量,初值为1),
进程A
Repeat
P(S);
N=N+5;
V(S);
Until false;
进程B
Repeat
P(S);
打印N的值;
N=0;
V(S);
Until false;

15.有3个并发进程R、M、P,它们共享一个缓冲器B。进程R负责从输入设备读信息,每读出一个记录后把它存放在缓冲器B中,进程M在缓冲器B中加工进程R存入的记录,进程P把加工后的记录打印输出。缓冲器B中每次只能存放一个记录,当记录被加工输出后,缓冲器B中又可存放一个新记录。请用P、V操作为同步机制写出它们并发执行时能正确工作的程序。

答:三个进程共用一个缓冲区,他们必须同步工作,可定义三个信号量:

S1:表示是否可把读人的记录放到缓冲区,初始值为1.

S2:表示是否可对缓冲区中的记录加工,初始值为0.

S3:表示记录是否加工好,可以输出,初始值也为0.

三个进程可如下设计:

begin

S1,S2,S3:semaphore;

S1:=l;S2:=S3:=0;

cobegin

process R

begin

L1:读记录;

P(S1);

记录存入缓冲区;

V(S2);

goto L1;

end;

process M

begin

L2:P(S2);

加工记录;

V(S3);

goto L2;

end;

process P

begin

L3:P(S3);

输出加工后的记录;

V(S1);

goto L3;

end;

coend;

end.