文章
7
粉丝
0
获赞
0
访问
264
semaphore empty_Gang = 10, full_Gang = 0, mutex_Jing = 1, num_Bucket = 3, mutex_Gang = 1; // 分别表示水缸的剩余可装水量,缸中现有水量,井的互斥锁,三个桶的互斥与同步信号量,缸的互斥量
Process Little(){ //小和尚
while(1) {
P(empty_Gang); P(num_bucket); // 先对缸中是否可以入水以及是否有空桶进行确认,都可以则进行
P(mutex_Jing); //对井进行占用,互斥访问
取水;
V(mutes_Jing); //释放对井的互斥访问
P(mutex_Gang); //对缸的互斥访问
倒水;
V(full_Gang);V(mutex_Gang); V(num_bucket);
}
}
Process Old(){ //老和尚
P(full_Gang); P(num_bucket); //想喝水先进行等待占用,均有资源后再进行
P(mutex_Gang); //得到缸的使用权
喝水;
V(empty_Gang); V(num_bucket); P(mutex_Gang);//释放
}
评分及理由
(1)得分及理由(满分8分)
1. 信号量定义正确(1分):学生正确定义了所有必要的信号量,包括empty_Gang、full_Gang、mutex_Jing、num_Bucket和mutex_Gang,与标准答案一致。
2. 小和尚进程逻辑基本正确(3分):学生的小和尚进程逻辑基本正确,包括对empty_Gang和num_bucket的P操作,以及对mutex_Jing和mutex_Gang的P/V操作。但存在以下问题:
登录后发布评论
暂无评论,来抢沙发