admin管理员组文章数量:1794759
农夫
前言
农夫-猎人问题和苹果-桔子问题非常类似,也是操作系统中的经典问题
农夫-猎人问题
1. 问题描述
有一个铁笼子,每次只能放入一个动物。猎手向笼中放入老虎,农夫向笼中放入 羊;动物园等待取笼中的老虎,饭店等待取笼中的羊。
2. 问题分析
和苹果-桔子问题类似,有4个进程,笼子是互斥量,猎手和动物园是同步关系,农夫和饭店也是同步关系。
3. P、V操作
semaphore cage = 1; // 互斥信号量,笼子只允许放入一只动物
semaphore tiger = 0; // 笼子里没有老虎
semaphore sheep = 0; // 笼子里没有羊cobegin
process hunter() {while(true) {......P(cage);{将虎放入笼子};V(tiger);}
}process zoo() {while(true) {P(tiger);{将虎取出笼子};V(cage);......}
}process peasant() {while(true) {......P(cage);{将羊放入笼子};V(sheep);}
}process hotel() {while(true) {P(sheep);{将羊取出笼子};V(cage);......}
}
coend
d=====( ̄▽ ̄*)b
本文标签: 农夫
版权声明:本文标题:农夫 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1705523798a504036.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论