当前位置: 技术问答>linux和unix
系统中有5个进程共享一个变量A,则A的临界区由?个进程临界区组成。
来源: 互联网 发布时间:2014-11-18
本文导语: 题目大概这样,记不太清了。 | 今天的自考题,我选择5个相关临界区,现在想想又不敢肯定,觉得应选1个相关临界区 有三个并发进程read,move,print共享B1,B2两个缓冲区,read读出一个记录存入B1,mo...
题目大概这样,记不太清了。
|
今天的自考题,我选择5个相关临界区,现在想想又不敢肯定,觉得应选1个相关临界区
有三个并发进程read,move,print共享B1,B2两个缓冲区,read读出一个记录存入B1,move从B1取出记录处理后存入B2,print将B2中的记录取出打印.
试用PV操作完成。
走出考场才想起做错了,应该是进程的同步,这样写不知对不对
begin
B1,B2:integer;//为简便用整型
s1,s2,s3,s4:semaphore;
s1:=1,sb1:=0,s2:=1,sb2:=0;
PROCESS read
x:integer;
L1:
x:=读入的记录;
P(s1);
B1:=x;
V(s2);
goto L1
PROCESS move
y:integer;
L2: P(s2);
y:=B1;
V(s1);
处理y ;
P(s3);
B2:=y;
V(s4);
goto L2:
PROCESS print
z:integer;
L3:P(s4);
z:=B2;
V(s3);
goto L3
end
有三个并发进程read,move,print共享B1,B2两个缓冲区,read读出一个记录存入B1,move从B1取出记录处理后存入B2,print将B2中的记录取出打印.
试用PV操作完成。
走出考场才想起做错了,应该是进程的同步,这样写不知对不对
begin
B1,B2:integer;//为简便用整型
s1,s2,s3,s4:semaphore;
s1:=1,sb1:=0,s2:=1,sb2:=0;
PROCESS read
x:integer;
L1:
x:=读入的记录;
P(s1);
B1:=x;
V(s2);
goto L1
PROCESS move
y:integer;
L2: P(s2);
y:=B1;
V(s1);
处理y ;
P(s3);
B2:=y;
V(s4);
goto L2:
PROCESS print
z:integer;
L3:P(s4);
z:=B2;
V(s3);
goto L3
end