进程同步问题1由三个进程get,copy和put以及两个缓冲区buffer1和buffer2完成一项输入/输出操作。进程get的功能是把一张卡片上的信息从读卡机上读进buffer1;进程copy的功能是把buffer1中的信息复制到buffer2;进程put的功能是取出buffer2中的信息并从打印机上打印输出。试用P、V操作完成这三个进程间的尽可能并发正确执行的关系(用程序或框图表示),并指明信号量的作用和初值。某寺庙,有小和尚、老和尚若干。有一水缸,由小和尚提水入缸老和尚饮用。水缸可容十桶水,水取自同一井中。水井径窄,每次只能容一个桶取水。水桶总数为3个。每次入、取水仅为一桶,且不可同时进行。试给出有关取水、入水的算法描述。2345semaphoreempty=10;//表示缸中目前还能装多少桶水,初始时能装10桶水semaphorefull=0;//表示缸中有多少桶水,初始时缸中没有水semaphorebuckets=3;//表示有多少只空桶可用,初始时有3只桶可用semaphoremutex_well=1;//用于实现对井的互斥操作semaphoremutex_bigjar=1;//用于实现对缸的互斥操作young_monk(){while(1){P(empty);P(buckets);gotothewell;P(mutex_well);getwater;V(mutex_well);gotothetemple;P(mutex_bigjar);purethewaterintothebigjar;V(mutex_bigjar);V(buckets);V(full);}}6old_monk(){while(){P(full);P(buckets);P(mutex_bigjar);getwater;V(mutex_bigjar);drinkwater;V(buckets);V(empty);}}78947.系统中有多个生产者进程和多个消费者进程,共享一个能存放1000件产品的环形缓冲区(初始为空)。当缓冲区未满时,生产者进程可以放入其生产的一件产品,否则等待;当缓冲区未空时,消费者进程可以从缓冲区取走一件产品,否则等待。要求一个消费者进程从缓冲区连续取出10件产品后,其他消费者进程才可以取产品。请使用信号量P,V(wait(),signal())操作实现进程间的互斥与同步,要求写出完整的过程,并说明所用信号量的含义和初值。10semaphoremutex1=1;semaphoremutex2=1;semaphoreempty=n;semaphorefull=0;producer(){while(1){生产一个产品;P(empty);//判断缓冲区是否有空位P(mutex2);//互斥访问缓冲区把产品放入缓冲区;V(mutex2);//互斥访问缓冲区V(full);//产品的数量加1}}consumer(){while(1){P(mutex1)//连续取10次for(inti=0;i=10;++i){P(full);//判断缓冲区是否有产品P(mutex2);//互斥访问缓冲区从缓冲区取出一件产品;V(mutex2);//互斥访问缓冲区V(empty);//腾出一个空位消费这件产品;}V(mutex1)}}11