文章

47

粉丝

0

获赞

0

访问

1.7k

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

seamphore odd_empty = 0 ;//奇数个数,初值0

seamphore even_empty = 0; //偶数个数

seamphore mutex = 1; // 互斥访问缓冲区

seamphore full = N; //缓冲区单元个数

process p1{

p(full); //判断该缓冲区是否已满

p(mutex); //互斥使用缓冲区

num = produce();

put()

v(mutex)

}

process p2{

p(full); //判断该缓冲区是否存在正整数

p(mutex);

getodd();

countodd();

v(mutex)

v(full)

}

process P3{

p(full);

p(mutex);

geteven();

counteven();

v(mutex);

v(full);

}


评分及理由

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

得分:1分

理由:学生定义了mutex和full信号量,但缺少odd和even信号量来控制P1与P2、P1与P3之间的同步。信号量命名也存在拼写错误(seamphore应为semaphore)。

(2)P1进程实现(满分2分)

得分:1分

理由:P1进程基本实现了缓冲区的互斥访问和空单元判断,但缺少对奇偶数的判断和对应的信号量释放(V(odd)或V(even)),导致同步逻辑不完整。

(3)P2进程实现(满分1.5分)

得分:0.5分

理由:P2进程实现了缓冲区的互斥访问,但缺少对奇数信号的等待(P(odd)),且错误地使用了full信号量来判断缓冲区是否存在正整数,逻辑错误。

(4)P3进程实现(满分1.5分)

得分:0.5分

理由:P3进程实现了缓冲区的互斥访问,但缺少对偶数信号的等待(P(even)),且错误地使用了full信号量来判断缓冲区是否存在正整数,逻辑错误。

题目总分:1+1+0.5+0.5=3分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发