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

回答
共1条回复-
semaphore S={2}; 盘子 盘子开始可以放两只水果 开始可以放两只水果 semaphore Mutex={1}; 互斥使用盘子 semaphore S1={0}; 是否有苹果 semaphore S2={0}; 是否有橘子 Father() { while(1) { wait(S); wait(mutex); put Apple; signal(mutex); signal(S1) ; } } Mother() { while(1) { wait (S); wait(mutex); put Orange; signal (mutex); signal (S2) ; } } Son() { while(1) { wait (S2); wait(mutex); get Orange; signal (mutex); signal (S) ; } } Son() { while(1) { wait (S1); wait(mutex); get Apple; signal (mutex); signal (S) ; } }
