文章

13

粉丝

0

获赞

0

访问

1.2k

头像
2009年计算机学科专业基础综合试题 - 第45题回答
操作系统
发布于2025年9月10日 11:19
阅读数 18

semaphore odd = 0;

semaphore even = 0;

semaphore empty = N;

semaphore mutex = 1;

P1(){

while(True){

  x = produce();

P(empty);

P(mutex);

put();

V(mutex);

if(x%2==0)

 V(even)

else

 V(odd)

}

}

P2(){

while(True){

P(odd);

P(mutex);

getodd();

V(mutex);

V(empty);

countodd();

}

}

P3(){

while(True){

P(even);

P(mutex);

geteven();

V(mutex);

V(empty);

counteven();

}

}


评分及理由

(1)信号量定义(满分1分)

得分:1分。理由:学生正确定义了四个信号量(odd、even、empty、mutex),含义与标准答案一致,且初始值正确(odd=0, even=0, empty=N, mutex=1)。

(2)P1进程伪代码(满分2分)

得分:2分。理由:P1的流程正确,包括生成数据、申请空单元(P(empty))、申请互斥锁(P(mutex))、放入数据、释放互斥锁(V(mutex))、并根据奇偶性释放对应信号量(V(odd)或V(even))。学生额外添加了while循环,但题目未明确要求循环,且不影响同步逻辑,不扣分。

(3)P2进程伪代码(满分2分)

得分:2分。理由:P2的流程正确,包括等待奇数信号(P(odd))、申请互斥锁(P(mutex))、取奇数、释放互斥锁(V(mutex))、释放空单元(V(empty))、统计奇数。while循环同样不扣分。

(4)P3进程伪代码(满分2分)

得分:2分。理由:P3的流程正确,包括等待偶数信号(P(even))、申请互斥锁(P(mutex))、取偶数、释放互斥锁(V(mutex))、释放空单元(V(empty))、统计偶数。wh...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发