文章

90

粉丝

0

获赞

2

访问

10.5k

头像
2024年(408)计算机学科专业基础综合试题 - 第46题回答
操作系统
发布于2025年12月3日 17:21
阅读数 7


评分及理由

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

得0分。理由:学生回答“不为临界区”,这是错误的。根据标准答案,C1操作涉及对共享缓冲区B的写入,当多个进程(P1和P2)都需要执行C1时,必须保证互斥访问,否则可能导致数据不一致。因此,实现C1的代码是临界区。学生的解释“因为为空才能执行C1,而执行后则为非空,另一进程不可操作”逻辑有误,它描述的是同步条件(缓冲区为空才能写),但并未解决两个进程同时检查并发现缓冲区为空,然后都试图写入的竞态条件问题。互斥(临界区保护)是必要的。本题核心是判断是否需要互斥,学生答案错误,故扣2分。

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

得2分。理由:学生定义了“判满信号量man”和“判空信号量kong”,并给出了正确的同步逻辑P1: P(kong); C1; V(man); P2: P(man); C2; V(kong)。这满足了“B为空时才能执行C1,B非空时才能执行C2”的同步要求,且信号量初值设置正确(kong=1, man=0)。思路与标准答案(使用mutex和full)不同,但逻辑正确,根据打分要求“思路正确不扣分”。然而,学生的方案缺少了对缓冲区B的互斥保护。C1(写)和C2(读)操作本身可能需要对缓冲区的访问进行互斥(例如,防止读操作与写操作同时进行导致数据不一致),但题目描述中并未明确要求C1和C2操作内部是原子的。在经典生产者-消费者问题中,通常需要互斥量来保护对缓冲区的访问。学生的答案只实现了同步,未实现互斥。考虑到题目要求“定义尽可能少的信号量”并描述“同步或互斥关系”,且仅涉及一次C1和一次C2,在单缓冲区且仅各执行一次的场景下,其同步逻辑可以保证顺序执行(P1先写,P2后读),不会出现并发访问冲突,因此可以认为其方案在此简化条件下是可行的。但严格来说,标准答案包含了互斥量,学生的答案缺少了对共享资源访问的互斥保护,这是一个逻辑上的不完整性。鉴于题目描述和简化场景,以及“思路正确不扣分”的原则,此处给予大部分分数,但因其方案在通用性上存在缺陷(未考虑互斥),扣1分。最终得2分。

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

得3分。理由:学生定义了一个互斥信号量huchi(初值为1),并用P/V操作包裹C3的执行。这完全正确,确保了任意时刻只有一个进程能执行C3操作对缓冲区B进行修改,满足了互斥要求。思路与标准答案一致。因此...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发