第1题:
桌子上有一只盘子,每次只能放入一只水果,父亲专向盘子中放苹果,母亲专向盘子中放桔子,一个儿子专等吃桔子,一个女儿专等吃苹果。只要盘子中空,则父亲或母亲可向盘子中放一只水果,仅当盘子中有自己需要的水果时,儿子或女儿可从盘子中取出。将父亲、母亲、儿子、女儿看做四个进程,用PV操作进行管理使这四个进程能正确地并发执行。
参考答案:定义信号量:S:表示是否可以向盘子中存放水果,初值为1,表示可以向盘中放一只水果。SP:表示盘子中是否有苹果,初值为0,表示无苹果。SO:表示盘子中是否有桔子,初值为0,表示无桔子。
Begin
B:integer;
S,SO,SP:semaphore;
S:=1; SO:=0; SP=0;
Cobegin
Process father
begin
Ll: have an apple;
P(S);
put an apple;
V(SP);
go to L1
end;
Process mother
begin
L2: have an orange;
P(S);
put an orange;
V(SO);
go to L2
end;
Process son
begin
L3: P(SO);
get an orange;
V(S);
eat an orange;
go to L3
end;
Process daught
begin
L2: P(SP);
get an apple;
V(S);
eat an apple
go to L4
end;
Coend;
End;