操作系统综合题之“用记录型信号量机制的wait操作和signal操作写出三个进程的同步代码(水果进箱问题-代码补充)”

1.问题:假设一个水果赛选系统由三个进程A、B、C组成。进程A每次取一个水果,之后存放在货架F上,F的容量为每次只能存放一个水果。若货架上存放的是苹果则让进程B取出,并存放到苹果箱中;若货架上存放的是菠萝则让进程C取出后,将其存放到菠萝框中

(1)列出所需的信号量并初始化

(2)请用记录型信号量机制的wait操作和signal操作写出三个进程的同步代码

2.答案

答:

(1)var e,e1,e2:semaphore;

e.value = 1;

e1.value = 0 ;

e2.value = 0;

(2)

A:

Begin

  Repeat

    wait(e);

    去一个水果,存放在货架F上;

    signal(e1) or signal(e2);

  Until false;

End

--------------------------------------------------------

B:

Begin

  Repeat

    wait(e1);

    从货架上取出苹果,并存放到苹果箱中;

    signal(e);

  Until false;

End

---------------------------------------------------------

C:

Begin

  Repeat

    wait(e2);

    从货架上取出菠萝,并存放到菠萝箱中;

    signal(e);

  Unitl false;

End

posted @ 2024-03-22 15:32  骚哥  阅读(25)  评论(0编辑  收藏  举报