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

评分及理由
(1)得分及理由(满分6分)
学生答案中只给出了装填因子 α = 7/11,但没有画出散列表HT。根据题目要求,需要“画出所构造的散列表HT,并计算HT的装填因子”,因此缺少了散列表的构造过程或最终表格展示。装填因子计算正确,可得部分分数。扣分:缺少散列表,扣3分。得分:3分。
(2)得分及理由(满分2分)
学生给出的关键字比较序列为“3, 9, 14”。标准答案中比较序列是地址3、地址8、地址2,对应的关键字分别是3、9、14。学生的表述“14与3比较”、“14与9比较”、“14与14比较”虽然顺序和内容与标准答案一致,但“14与14比较”的表述不准确,应为“与地址2的关键字14比较”。不过,核心逻辑(比较的关键字顺序)正确,且最终序列“3,9,14”可以理解为比较的关键字值,与标准答案一致。因此不扣分。得分:2分。
(3)得分及理由(满分2分)
学生答案中写“不确切查找失败时的散列地址为1”,其中“不确切”可能是识别误差(如“确认”误识别为“不确切”)。答案明确给出了地址1,与标准答案一致。因此不扣分。得分:2分。
题目总分:3+2+2=7分

评分及理由
(1)得分及理由(满分2分)
学生答案中缓存组数、组索引位数、块内偏移位数计算正确,但标记位数计算有误。标准答案中标记位数为10位(仅地址中的标记部分),学生额外加上了有效位和访问位(这些是缓存行的控制位,不属于地址中的标记字段)。因此扣1分。
得分:1分
(2)得分及理由(满分2分)
学生描述了前两次不命中,之后命中,缓存内容无变化,与标准答案思路一致,且结论正确(命中情况为缺失、缺失、命中、命中、命中、命中、命中、命中)。虽然描述较为简略,但核心逻辑正确。
得分:2分
(3)得分及理由(满分2分)
学生计算命中率为75%,与标准答案一致。
得分:2分
(4)得分及理由(满分4分)
学生指出直接映射下命中率为0,结论正确。但未详细列出每次访问的命中情况(标准答案要求列出),也未说明直接映射下组数、索引位等参数的变化。考虑到问题要求“重做问题(2)和(3)”,学生仅给出了(3)的结论,缺少(2)的详细过程,因此扣2分。
得分:2分
(5)得分及理由(满分2分)
学生正确指出2路组相联命中率更高,并提到“对每一块的映射地址不相同”可能为识别或表述不准确(应为映射到同一组但可以共存),但核心原因(直接映射冲突缺失,组相联可共存)已包含在答案中。因此不扣分。
得分:2分
(6)得分及理由(满分2分)
学生正确得出命中率为0,并指出16与0、8映射到同一组。虽然给出的“缓存0组”内容表格较混乱,但结论正确,且解释了原因(三块映射到同一组,缓存只有2路)。
得分:2分
题目总分:1+2+2+2+2+2=11分

评分及理由
(1)得分及理由(满分3分)
学生正确计算了组数为256(2^8),并指出所有地址映射到第0组,命中次数为4次,总访问6次,命中率约为67%。思路与标准答案一致,计算正确。但学生答案中写为“\(\frac{4}{6}\times\frac{100}{100}\)”或“\(\frac{4}{6}\times100\%\)”,虽然表达稍显冗余,但核心逻辑正确,不扣分。得3分。
(2)得分及理由(满分3分)
学生计算平均访存时间时,使用了命中率67%和缺失率33%,但公式写为“\(\frac{67}{100}\times1+\frac{33}{100}\times(1 + 100)\)”,其中缺失部分加了命中时间(1),这实际上是“缺失时间=命中时间+缺失损失”的体现,与标准答案的“AMAT = 命中时间 + 缺失率 × 缺失损失”本质一致(因为缺失损失通常定义为缺失额外开销,不包括命中时间)。但学生计算结果是34个时钟周期,与标准答案的34.33略有差异,这是由于四舍五入导致的微小误差,且题目未要求精确小数,因此不扣分。得3分。
(3)得分及理由(满分3分)
学生正确指出直接映射下命中率为0,并解释原因为两个地址映射到同一缓存位置,交替访问导致反复换入换出。分析正确,与标准答案一致。得3分。
题目总分:3+3+3=9分

评分及理由
(1)得分及理由(满分2分)
学生第一次识别未给出答案,第二次识别结果为“Available=(3,3,2)”,与标准答案一致。计算正确,得2分。
(2)得分及理由(满分4分)
学生第一次识别结果“P3, P4”不完整,仅给出了部分序列,且未给出检查过程。第二次识别结果给出了完整的安全序列“P3, P0, P4, P1, P2”。
标准答案中给出的安全序列为“P1, P3, P4, P0, P2”,但安全序列不唯一。学生的序列“P3, P0, P4, P1, P2”需要验证:
学生给出的安全序列是错误的,说明其安全状态检查过程存在逻辑错误。由于未给出检查步骤,无法判断其思路是否正确,但最终结果错误。因此,本题不能给满分。考虑到学生判断了“是处于安全状态”,这一结论正确,但给出的序列错误,扣2分。得2分。
(3)得分及理由(满分2分)
学生第一次识别结果提到了“Available=(2,3,0)”和“need=(0,2,0)”,但表述不完整。第二次识别结果明确给出了“Available=(2,3,0)”、“P1的need=(0,1,0)”和“系统仍处于安全状态,故应分配给P1”。
标准答案中,分配后P1的Need应为(0,2,0),学生写成了(0,1,0),这是一个计算错误。但核心结论“系统仍处于安全状态,故应分配给P1”是正确的。根据“禁止扣分”原则,对于可能的识别错误(如将2识别为1)或误写,若核心逻辑正确则不扣分。此处学生正确判断了应该分配,且给出了关键的计算结果Available=(2,3,0),因此不因细节数字误写而扣分。得2分。
题目总分:2+2+2=6分

评分及理由
(1)得分及理由(满分2分)
学生定义了信号量,但定义不完整且存在错误。题目要求实现“写者优先”,即当有写者等待时,新读者必须等待。标准答案需要多个信号量来分别保护读者计数、写者计数、实现写者优先的入口控制以及资源互斥。学生只定义了两个信号量(metux 和 wait),其中 metux 意图是保证写者互斥,wait 意图是实现写者优先的等待队列。但信号量 wait 被读者和写者共用 P/V 操作,逻辑上会导致读者和写者无法同时进入(违背了“多个读者同时读”的要求),且无法正确实现“写者优先”(例如,无法处理多个写者等待时新读者的阻塞逻辑)。此外,缺少对读者计数的保护。因此,信号量定义不满足题目要求。扣1分,得1分。
(2)得分及理由(满分2分)
读者进程代码框架存在严重逻辑错误。学生代码中,读者在进入时执行 P(wait),这会导致任何读者或写者持有 wait 时,其他所有读者和写者都被阻塞,无法实现多个读者并发读。同时,读者没有使用任何计数器,也没有对资源信号量进行管理,因此无法保证“当有写者等待时新读者被阻塞”的写者优先策略,也无法保证写者独占访问时读者被正确排除。该框架不能正确解决同步问题。扣2分,得0分。
(3)得分及理由(满分2分)
写者进程代码框架同样存在逻辑错误。学生代码中,写者先 P(wait) 再 P(metux)。这种顺序结合读者也 P(wait) 会导致死锁或互斥过度(例如,一个写者持有 wait 后,所有读者和其他写者都无法进入)。虽然写者内部通过 metux 实现了写者间的互斥(但题目未要求写者间互斥,只要求写者与读者、其他写者互斥),但整体上 wait 信号量的使用破坏了读写者问题的正确同步。该框架不能正确实现写者优先的读写者问题。扣2分,得0分。
(4)得分及理由(满分1分)
学生作答中未包含对信号量作用和工作原理的解释部分。因此,该部分得0分。
题目总分:1+0+0+0=1分

评分及理由
(1)得分及理由(满分3分)
学生答案给出 t=0.4s 时 cwnd = 1。这与标准答案(8 MSS)不符。根据题目描述,在慢启动阶段,cwnd 会随着新 ACK 的到达而增加。计算过程应为:t=0.1s 后 cwnd=2,t=0.2s 后 cwnd=4,t=0.3s 后 cwnd=8。在 t=0.4s 触发快速重传时,cwnd 应保持为 8 MSS。学生的答案未能正确计算慢启动过程中的窗口增长,属于核心逻辑错误。得 0 分。
(2)得分及理由(满分3分)
学生答案给出 ssthresh 设为 ssthresh/2,cwnd 变为 1,即 ssthresh = 32 MSS,cwnd = 1 MSS。这里存在两处错误:
1. 对于 TCP Reno 的快速重传,ssthresh 应设置为当前拥塞窗口的一半,即 ssthresh = cwnd / 2。根据(1)问,正确的 cwnd 应为 8 MSS,因此 ssthresh 应设为 4 MSS,而非 32 MSS。
2. 对于 cwnd 的调整,在进入快速恢复阶段时,cwnd 应设置为 ssthresh + 3 MSS(因为收到了3个重复ACK),即 cwnd = 4 + 3 = 7 MSS,而非直接降为 1 MSS。
学生的答案在调整规则和计算数值上均存在逻辑错误。得 0 分。
(3)得分及理由(满分3分)
学生答案描述“每次 cwnd 窗口大小成 2 倍增加”。这描述的是慢启动阶段的行为。而题目问的是在收到新数据的 ACK(结束快速恢复)后进入的阶段及 cwnd 变化。根据 TCP Reno,此时应退出快速恢复,进入拥塞避免阶段,cwnd 按线性规律(每 RTT 增加 1 MSS)增长。学生的答案未能正确识别所处阶段,且描述的窗口增长方式与标准答案不符,属于逻辑错误。得 0 分。
题目总分:0+0+0=0分