文章

359

粉丝

0

获赞

2

访问

32.8k

头像
2024年(408)计算机学科专业基础综合试题 - 第46题回答
操作系统
发布于2025年12月17日 14:54
阅读数 2

(1)是临界区

(2)semaphore mutex=1 empty=n   full=0

P1(){

p(empty)

p(mutex)

执行C1

v(mutex)

v(full)

}

p2(){

p(full)

p(mutex)

执行C2

v(mutex)

v(empty)

}

(3)semaphore mutex=1

p1(){

p(mutex)

执行C3

v(mutex)

}

p2(){

p(mutex)

执行C3

v(mutex)

}


评分及理由

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

学生回答“是临界区”,但未给出理由。题目要求说明原因,学生仅给出结论,未进行解释。按照评分标准,应扣除部分分数。得1分。

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

学生定义了三个信号量:mutex=1, empty=n, full=0。代码逻辑基本正确,使用了生产者-消费者模型的标准结构。但存在以下问题:
1. 题目要求“定义尽可能少的信号量”。对于本题场景(缓冲区B仅存放一个数据分组),empty信号量是多余的,因为“B为空”是一个二元状态,可以用一个信号量(如full)来表示。引入empty=n(n未定义)增加了不必要的复杂度,且与题目“B用于存放一个数据分组”的描述不符(这意味着缓冲区容量为1,而非n)。
2. 信号量初始值empty=n存在逻辑错误,因为缓冲区B只能放一个分组,empty应初始化为1(表示一个空位)。学生写empty=n,n未定义,不符合题意。
基于以上逻辑错误,扣除相应分数。但学生同步互斥的思路正确,P1和P2的执行顺序能保证同步(P1先写,P2后读)。得1.5分。

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

学生定义了一个信号量mutex=1,用于实现P1和P2对C3操作的互斥访问。代码逻辑正确,符合题目“定义尽可能少的信号量”的要求,且能保证对缓冲区B的互斥修改。得3分。

题目总分:1+1.5+3=5.5分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发