桌子上有一只盘子,每次只能放入一只水果,父亲专向盘子中放苹果,母亲专向盘子中放桔子,一个儿子专等吃桔子,一个女儿专等吃苹果。只要盘子中空,则父亲或母亲可向盘子中放一只水果,仅当盘子中有自己需要的水果时,儿子或女儿可从盘子中取出。将父亲、母亲、儿子、女儿看做四个进程,用PV操作进行管理使这四个进程能正确地并发执行。

题目
桌子上有一只盘子,每次只能放入一只水果,父亲专向盘子中放苹果,母亲专向盘子中放桔子,一个儿子专等吃桔子,一个女儿专等吃苹果。只要盘子中空,则父亲或母亲可向盘子中放一只水果,仅当盘子中有自己需要的水果时,儿子或女儿可从盘子中取出。将父亲、母亲、儿子、女儿看做四个进程,用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;
更多“桌子上有一只盘子,每次只能放入一只水果,父亲专向盘子中放苹果,母亲专向盘子中放桔子,一个儿子专等吃桔子,一个女儿专等吃苹果。只要盘子中空,则父亲或母亲可向盘子中放一只水果,仅当盘子中有自己需要的水果时,儿子或女儿可从盘子中取出。将父亲、母亲、儿子、女儿看做四个进程,用PV操作进行管理使这四个进程能正确地并发执行。 ”相关问题
  • 第1题:

    桌上有一个空的水果盘,且盘中一次只能放一个水果。爸爸专向盘中放苹果,妈妈专向盘中放桔子,一个儿子专等吃盘子中的桔子,一个女儿专等吃盘子中的苹果。固定每次当盘子空时爸爸或妈妈可向盘中放一个水果,仅当盘中有自己需要的水果时,儿子或女儿可从中取出。请给出用PV操作实现爸爸、妈妈、儿子和女儿四个进程同步的算法。


    A

  • 第2题:

    计算分析题2(15分)桌上有个能盛得下五个水果的空盘。爸爸不停地向盘中放苹果或桔子,儿子不停地从盘中取出桔子享用,女儿不停地从盘中取出苹果享用。规定三人不能同时从盘中取放水果。试用P 、 V原语实现爸爸、儿子、女儿三个并发进程的同步。


    根据公式Q1/Q=n1/n 式中:Q-泵的原流量 n-泵的原转速 Q1-改变后流量 n1-改变后转速 得:n1=Q1×n/Q=48×2940÷100≈1411(转/分) 改变流量后转速应是1411转/分。

  • 第3题:

    3、桌上有一个空盘,允许存放一个水果。爸爸可以向盘中放苹果,也可以向盘中放橘子,儿子专等吃盘中的橘子,女儿专等吃盘中的苹果。规定当盘空时一次放一个水果供吃者取用,请用P,V原语实现爸爸、儿子、女儿三个并发进程的同步。


  • 第4题:

    桌上有一空盘,可放一只水果。爸爸可向盘中放苹果,也可向盘中放桔子;儿子专等吃盘中的桔子;女儿专等吃盘中的苹果。规定一次只能放一只水果,试写出爸爸、儿子、女儿正确同步的程序。


    semaphore empty=2; //定义empty对应盘子的剩余放水果的位置个数初值为2 semaphore apple=0; //定义信号量apple对应盘子里的苹果数量初值为0 semaphore orange=0; //定义信号量orange对于盘子里的橘子数量初值为0 semaphore mutex=1: //定义信号量mutex来保护盘子被互斥地访问 father(){ //爸爸进程 while(1){ P(empty); P(mutex); 在盘子里放一个苹果 V(mutex); V(apple); } } mother(){ //妈妈进程 while(1){ P(empty); P(mutex); 在盘子里放一个橘子 V(mutex); V(orange); } } son(){ //用这段程序产生两个儿子进程 while(1){ P(orange); P(mutex); 从盘子里拿一个橘子 V(mutex); V(empty); 吃掉拿出来的橘子 } } daughter(){ //用这段程序产生两个女儿进程 while(1){ P(apple); P(mutex); 从盘子里拿出一个苹果 V(mutex); V(empty); 吃掉拿出来的苹果 } } semaphoreempty=2;//定义empty对应盘子的剩余放水果的位置个数,初值为2semaphoreapple=0;//定义信号量apple对应盘子里的苹果数量,初值为0semaphoreorange=0;//定义信号量orange对于盘子里的橘子数量,初值为0semaphoremutex=1://定义信号量mutex来保护盘子被互斥地访问father(){//爸爸进程while(1){P(empty);P(mutex);在盘子里放一个苹果V(mutex);V(apple);}}mother(){//妈妈进程while(1){P(empty);P(mutex);在盘子里放一个橘子V(mutex);V(orange);}}son(){//用这段程序产生两个儿子进程while(1){P(orange);P(mutex);从盘子里拿一个橘子V(mutex);V(empty);吃掉拿出来的橘子}}daughter(){//用这段程序产生两个女儿进程while(1){P(apple);P(mutex);从盘子里拿出一个苹果V(mutex);V(empty);吃掉拿出来的苹果}}

  • 第5题:

    4、桌上有一个空的水果盘,且盘中一次只能放一个水果。爸爸专向盘中放苹果,妈妈专向盘中放桔子,一个儿子专等吃盘子中的桔子,一个女儿专等吃盘子中的苹果。固定每次当盘子空时爸爸或妈妈可向盘中放一个水果,仅当盘中有自己需要的水果时,儿子或女儿可从中取出。请用PV操作实现爸爸、妈妈、儿子和女儿四个进程的同步。


    A