科目组合
计算机: 数据结构 、计算机组成原理 、操作系统 、计算机网络

评分及理由
(1)得分及理由(满分4分)
学生给出的边依次为:A→D、D→E、E→C、C→B。这些边与标准答案(A,D)、(D,E)、(C,E)、(B,C)完全一致,且顺序正确。虽然学生使用了箭头符号(→)而标准答案使用逗号分隔,但这不影响逻辑正确性。因此得4分。
(2)得分及理由(满分2分)
学生回答"唯一",与标准答案"图G的MST是唯一的"一致。因此得2分。
(3)得分及理由(满分2分)
学生回答"当权值互不相同时",这虽然表述简洁,但准确表达了"任意一个环中所包含的边的权值均不相同"的核心含义。在Prim算法和MST唯一性的语境下,这个回答是正确的。因此得2分。
题目总分:4+2+2=8分

评分及理由
(1)得分及理由(满分4分)
学生回答中,第一问认为“不会”出现死循环,这与标准答案不符,标准答案指出当n=0时会出现死循环。但学生正确解释了若改为int型则不会死循环的原因(n-1为负数,条件不满足),因此部分正确。第一问扣2分,第二问得2分,本小题总得分2分。
(2)得分及理由(满分3分)
学生正确指出f1(23)和f2(23)返回值相等,并给出了f1(23)的机器数为00FFFFFFH(标准答案为00FFFFFFH,学生写作00 FF FFFFH,可视为正确),f2(23)的机器数为4B7FFFFFH(标准答案为4B7FFFFFH,学生写作4B7FFFFFH,正确)。但学生将f1(23)误写为“+1(23)”,f2(23)误写为“-1(23)”,可能是识别错误,根据规则不扣分。本小题得3分。
(3)得分及理由(满分1分)
学生回答中f1(24)和f2(24)的具体数值(251和241)错误,但正确提到了f2(24)因IEEE 754标准尾数舍入导致精度缺失,与标准答案思路一致。核心逻辑正确,但数值错误可能为识别问题,根据规则不扣分。本小题得1分。
(4)得分及理由(满分2分)
学生正确解释了f1(31)返回-1的原因(int型溢出,高位被斩),并给出最大n为30,与标准答案一致。本小题得2分。
(5)得分及理由(满分3分)
学生回答f2(127)对应的值为2^128(标准答案为+∞),错误;但正确给出了不溢出的最大n为126和精确的最大n为23。第一问扣1分,后两问各得1分,本小题总得分2分。
题目总分:2+3+1+2+2=10分

评分及理由
(1)得分及理由(满分2分)
学生回答正确指出计算机M为CISC,并正确说明理由(指令不定长,而RISC指令定长)。与标准答案一致,得2分。
(2)得分及理由(满分2分)
学生计算过程为0040107FH - 00401020H = 5FH = 95字节。但正确计算应为末地址减首地址再加1,即0040107FH - 00401020H + 1 = 60H = 96字节。学生未加1导致结果错误,扣1分。得1分。
(3)得分及理由(满分3分)
学生正确得出CF=1,计算过程中提到"i-(n-1)"时写成了"00000004H - FFFFFFFFH",这可能是识别错误(应为00000000H)。但后续计算"00000000H + 00000001H = 00000001H"正确,且正确应用CF = 1⊕0 = 1的逻辑。核心逻辑正确,不扣分。得3分。
(4)得分及理由(满分3分)
学生正确回答"不能",并指出f2中power是float型,float的阶码表示大小,不能通过左移实现乘2操作。理由与标准答案一致,得3分。
题目总分:2+1+3+3=9分

评分及理由
(1)得分及理由(满分1分)
学生回答“1页”,与标准答案一致。理由:函数f1的代码段所有指令虚拟地址高20位相同,因此所有指令在同一页中,占用1页。得1分。
(2)得分及理由(满分2分)
学生回答“第1表项,第1个表项”,与标准答案“页目录的第1个表项,页表的第1个表项”完全一致。理由:push ebp指令的虚拟地址页目录号为1,页表索引为1,因此访问页目录第1表项和页表第1表项。得2分。
(3)得分及理由(满分4分)
学生回答“由运行态→阻塞态→就绪态→运行态”正确描述了进程状态变化过程,与标准答案一致;回答“会”表示CPU会进入内核态,虽然回答简略但核心意思正确。理由:进程在等待输入时从运行态变为阻塞态,输入完成被唤醒后变为就绪态,被调度后变为运行态;执行scanf()过程中涉及I/O中断处理,CPU会从用户态切换到内核态。得4分。
题目总分:1+2+4=7分

评分及理由
(1)信号量定义得分及理由(满分3分)
学生定义了两个信号量:mutex_y 和 mutex_z,分别用于对变量 y 和 z 的互斥访问。标准答案中使用了三个信号量:mutex_y1、mutex_y2 和 mutex_z,其中 mutex_y1 用于 thread1 与 thread3 对 y 的互斥,mutex_y2 用于 thread2 与 thread3 对 y 的互斥。学生只使用一个 mutex_y 会导致 thread1 和 thread2 在访问 y 时不必要的互斥,降低了并发度。因此扣1分,得2分。
(2)thread1 代码得分及理由(满分1分)
thread1 中正确使用了 P(mutex_y) 和 V(mutex_y) 来保护对 y 的访问,虽然使用的信号量名称与标准答案不同,但思路正确,不扣分。得1分。
(3)thread2 代码得分及理由(满分2分)
thread2 中先 P(mutex_y) 再 P(mutex_z),然后执行 w=add(y,z),最后 V(mutex_z) 和 V(mutex_y)。这里对 y 和 z 的互斥保护是正确的,但由于使用了单一的 mutex_y,会导致与 thread1 不必要的互斥,但逻辑上没有错误。得2分。
(4)thread3 代码得分及理由(满分2分)
thread3 中先对 z 进行互斥访问(P/V(mutex_z)),然后对 y 进行互斥访问(P/V(mutex_y))。这里的问题在于对 y 的访问只使用了一个信号量,无法实现 thread3 与 thread1、thread2 对 y 的最大程度并发。标准答案中使用了两个信号量来实现更细粒度的互斥。但学生的代码在逻辑上是正确的,只是并发度较低。扣1分,得1分。
题目总分:2+1+2+1=6分

评分及理由
(1)得分及理由(满分3分)
学生回答正确接收了3个数据帧,分别是S0,0、S1,0、S2,0,与标准答案完全一致。得3分。
(2)得分及理由(满分3分)
学生回答最多可以发送5个数据帧,数量正确。但第一个帧写为S5,4,最后一个帧写为S1,4,确认序号4错误。根据GBN协议,甲方在t₁时刻的确认序号应为2(来自乙方最新数据帧R2,2),所以第一个帧应为S5,2,最后一个帧应为S1,2。由于确认序号错误导致逻辑错误,扣1分。得2分。
(3)得分及理由(满分2分)
学生回答需要重发3个数据帧,数量正确。但重发的第一个帧写为S2,3,确认序号3错误。根据图(b),甲方在t₁时刻需要从S2开始重发,且确认序号应为3(来自乙方最新数据帧R2,3),所以第一个重发帧应为S2,3。学生答案S2,3与标准答案一致,得2分。
(4)得分及理由(满分1分)
学生计算传输时延正确(0.08ms),但利用率计算公式错误。学生使用8×0.08作为分子,而标准答案使用7×0.08(因为窗口大小为7)。分母中学生使用0.08+0.96,而标准答案使用0.96+2×0.08(考虑RTT和两个传输时延)。计算结果61.5%错误。由于计算逻辑错误,扣1分。得0分。
题目总分:3+2+2+0=7分