文章

59

粉丝

0

获赞

1

访问

12.1k

头像
2014年计算机学科专业基础综合试题 - 第47题回答
操作系统
发布于2025年7月25日 12:41
阅读数 148

Semaphore buf=1000//缓冲区剩余大小

Semaphore now =0//当前产品数量

Semaphore a=1//消费者互斥取产品

Semaphore b=1//生产者互斥生产产品

While(1) //生产者进程

Producer

{

p(buf);

p(b);

生产产品;

v(now);

v(b);

}

while(1) //消费者进程

Consumer

{

p(a);

for(int i=0;i<10;i++)

{

p(now);取产品;v(buf)

v(a);
}


评分及理由

(1)信号量的初值和含义(满分2分)

得分:1分

理由:学生定义了四个信号量buf、now、a、b,但含义描述不够清晰。buf和now的初值正确(1000和0),但a和b的含义描述不明确(应明确是互斥信号量)。扣1分。

(2)生产者之间的互斥操作(满分1分)

得分:1分

理由:生产者通过信号量b实现了互斥访问缓冲区,操作正确,不扣分。

(3)生产者与消费者之间的同步操作(满分2分)

得分:1分

理由:学生使用了buf和now实现同步,但未完全正确体现缓冲区空和满的条件(缺少对缓冲区满的判断)。扣1分。

(4)消费者之间互斥操作(满分1分)

得分:1分

理由:消费者通过信号量a实现了互斥连续取10件产品,操作正确,不扣分。

(5)控制消费者连续取产品数量(满分2分)

得分:2分

理由:学生通过for循环和信号量a实现了连续取10件产品的逻辑,完全正确,不扣分。

题目总分:1+1+1+1+2=6分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发