文章

87

粉丝

0

获赞

1

访问

17.2k

头像
2024年计算机学科专业基础综合试题 - 第46题回答
操作系统
发布于2025年8月16日 11:23
阅读数 79

(1)为临界区,因为要求B为空时才能执行C1,意味着,P1,P2对B中生产操作必须互斥,由于缓冲区B仅存放一个数据分组,一旦有一个进程生产后B就不为空
(2)
Semaphore emptyB=1;缓冲区B是否为空

Semaphore getNum=0;//判断数据是否已被取走

进程P1:

{

wait(emptyB);

C1;

signal(getNum);
}
 

进程P2:

{

wait(getNum);

C2;

signal(emptyB);
}

(3)
Semaphore changeBuf=1;//修改锁

进程P1:
{

wait(changeBuf);

C3;

signal(changeBuf);
}

进程P2:
{

wait(emptyBuf);

C3;

signal(changeBuf);
}


评分及理由

(1)得分及理由(满分2分)

得分:2分

理由:学生正确回答了实现C1的代码是临界区,并给出了合理的解释,即P1和P2对B的生产操作必须互斥,因为缓冲区B只能存放一个数据分组。这与标准答案一致。

(2)得分及理由(满分3分)

得分:3分

理由:学生定义了正确的信号量(emptyB和getNum),并正确使用了wait和signal操作来描述进程P1和P2之间的同步关系。虽然信号量的命名与标准答案不同,但逻辑上是正确的,且满足了题目要求。

(3)得分及理由(满分3分)

得分:2分

理由:学生定义了正确的信号量(changeBuf),但在进程P2的代码中错误地使用了wait(emptyBuf)而不是wait(changeBuf),这是一个逻辑错误。因此扣1分。

题目总分:2+3+2=7分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发