文章

63

粉丝

0

获赞

0

访问

3.2k

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

semaphore Aempty = 0;
semaphore Bempty = 0;
semaphore Afull = M;
semaphore Bfull = N;

Aempty为信箱A的初始邮件数;Bempty为信箱B的初始邮件数;Afull为信箱A的初始剩余邮件数;Bfull为信箱B的初始剩余邮件数

    A{
        while(true){
            p(Aempty);
            //从A中的信箱中取一个邮件
            v(Afull);
            //回答问题并提出一个新问题
            p(Bfull);
            //将新邮件放入B的信箱
            v(Bempty);
        }
    }
    B{
        while(true){
            p(Bempty);
            //从B中的信箱中取一个邮件
            v(Bfull);
            //回答问题并提出一个新问题
            p(Afull);
            //将新邮件放入A的信箱
            v(Aempty);
        }
    }

评分及理由

(1)信号量定义及初值(满分2分)

得分:0分

理由:学生定义了4个信号量,但初值设置完全错误。Aempty和Bempty初值应为x和y(表示初始邮件数),但学生设为0;Afull和Bfull初值应为M-x和N-y(表示剩余容量),但学生设为M和N。信号量含义描述也存在混淆。

(2)互斥操作(满分2分)

得分:0分

理由:学生完全没有定义和使用互斥信号量,无法保证对信箱操作的互斥访问,这是一个严重的逻辑错误。

(3)同步操作(满分5分)

得分:1分

理由:学生基本理解了同步逻辑框架(P操作在操作前,V操作在操作后),但具体实现存在严重问题:①信号量初值错误导致同步逻辑错误;②缺少互斥保护;③取邮件和放邮件的同步信号量使用顺序与标准答案思路不符。只能给予基本思路分。

题目总分:0+0+1=1分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发