九真经之吃水果问题(南京大学)
问题描述 桌上有一空盘允许存放一只水果爸爸可向盘中放苹果也可向盘中放桔子儿子专等吃盘中的桔子女儿专等吃盘中的苹果规定当盘空时一次只能放一只水果供吃者取用请用PV原语实现爸爸儿子女儿三个并发进程的同步
问题分析 在本题中爸爸儿子女儿共用一个盘子盘中一次只能放一个水果当盘子为空时爸爸可将一个水果放入果盘中若放入果盘中的是桔子则允许儿子吃女儿必须等待若放入果盘中的是苹果则允许女儿吃儿子必须等待本题实际上是生产者消费者问题的一种变形这里生产者放入缓沖区的产品有两类消费者也有两类每类消费者只消费其中固定的一类产品
The PV code Using Pascal
在本题中应设置三个信号量SSoSa信号量S表示盘子是否为空其初值为l信号量So表示盘中是否有桔子其初值为信号量Sa表示盘中是否有苹果其初值为 同步描述如下 S=; Sa=; So=; cobegin Procedure father; /*父亲进程*/ Procedure son; /*儿子进程*/ Procedure daughter; /*女儿进程*/ coend 返回《操作系统之PV金典》 [] [] |