文章
78
粉丝
0
获赞
0
访问
3.7k
semaphore empty = 1000 //缓冲区容量
semaphore full=0 //产品数量
semaphore mutex = 1 // 互斥访问缓冲区
process Producer i{
while(True){
生产产品;
p(empty);
p(mutex);
放入产品;
v(mutex);
v(full)
}
}
process Consumer i{
while(True){
p(mutex);
for(int i=0;i<10;i++){
p(full);
取出产品;
v(empty);
}
v(mutex);
}
}
评分及理由
(1)信号量的初值和含义(满分2分)
得分:2分
理由:信号量的定义和初值正确,empty、full、mutex的含义和初值均符合题目要求。
(2)生产者之间的互斥操作(满分1分)
得分:1分
理由:生产者进程中的互斥操作正确,使用了mutex信号量来保证互斥访问缓冲区。
(3)生产者与消费者之间的同步操作(满分2分)
得分:2分
理由:生产者与消费者之间的同步操作正确,使用了empty和full信号量来保证同步。
(4)消费者之间互斥操作(满分1分)
得分:0分
理由:消费者进程中的互斥操作不正确,mutex信号量的使用方式无法保证一个消费者进程连续取出10件产品后其他消费者才能取产品,缺少对连续取10件产品的控制信号量。
(5)控制消费者连续取产品数量(满分2分)
得分:0分
理由:消费者进程中的逻辑无法保证一个消费者进程连续取出10件产品后其他消费者才能取产品,缺少对连续取10件产品的控制信号量。
题目总分:2+1+2+0+0=5分
登录后发布评论
暂无评论,来抢沙发