文章

130

粉丝

0

获赞

0

访问

6.1k

头像
2024年计算机学科专业基础综合试题 - 第46题回答
操作系统
发布于2025年8月14日 22:48
阅读数 88

1):不是,临界区是访问临界资源的代码。

2):

semaphore empty=1,full=0;

p1{

    wait(empty);   // 等待缓冲区为空
    执行C1(写入数据到B);
    signal(full);  // 标记缓冲区有数据

}

p2{

wait(full);    // 等待缓冲区有数据
执行C2(从B中读出数据);
signal(empty); // 标记缓冲区为空

}

3):

semaphore mutex=1,full=1;

p1{

wait(full);    // 等待缓冲区有数据
wait(mutex);   // 互斥访问缓冲区
执行C3(修改B中的数据);
signal(mutex); // 释放缓冲区访问权
signal(full);  // 保持缓冲区有数据状态(C3不改变B的非空性)

}

p2{

wait(full);    // 等待缓冲区有数据
wait(mutex);   // 互斥访问缓冲区
执行C3(修改B中的数据);
signal(mutex); // 释放缓冲区访问权
signal(full);  // 保持缓冲区有数据状态

}


评分及理由

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

得分:0分

理由:学生回答“不是”,与标准答案“是”相矛盾。临界区确实是指访问临界资源的代码,而C1操作涉及对共享缓冲区B的写入,需要互斥访问,因此实现C1的代码应被视为临界区。学生未能正确理解临界区的定义和应用场景。

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

得分:3分

理由:学生的答案与标准答案思路一致,使用了两个信号量empty和full来同步进程P1和P2的操作。wait和signal操作的逻辑正确,确保了缓冲区B在写入和读取时的同步与互斥。虽然信号量命名与标准答案不同(empty对应mutex,full对应full),但功能和作用完全一致,因此不扣分。

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

得分:2分...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发