文章

27

粉丝

0

获赞

0

访问

1.8k

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

mutex m;

signal A = x, B = y; // 表示A信箱初始有x个邮件,B信箱初始有y个邮件

signal RA = M - x, RB = N - y; // 表示A、B信箱分别还能放多少个邮件

 

A {

  while (TRUE) {

    lock(&m);

    P(A);

    V(RA);

    do something...

    P(RB);

    V(B);

    unlock(&m);

  }

}

 

B {

  while (TRUE) {

    lock(&m);

    P(B);

    V(RB);

    do something...

    P(RA);

    V(A);

    unlock(&m);

  }

}

 


评分及理由

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

得分:1分

理由:学生定义了四个信号量A、B、RA、RB,分别对应标准答案中的Full_A、Full_B、Empty_A、Empty_B,初值设置正确。但缺少对两个信箱的互斥信号量定义,只定义了一个全局互斥锁mutex m,没有按照标准答案分别定义mutex_A和mutex_B。因此扣1分。

(2)A进程同步控制(满分3.5分)

得分:1分

理由:学生使用了P(A)和V(RA)实现取邮件的同步,P(RB)和V(B)实现放邮件的同步,同步逻辑基本正确。但存在严重逻辑错误:将整个操作序列放在同一个互斥锁内,这会导致死锁。因为当A进程执行P(RB)时,如果B信箱已满,A会阻塞,但此时互斥锁m仍被A持有,B进程无法进入临界区执行V(RB)操作。此外,缺少对信箱操作的互斥保护。因此扣2.5分...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发