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

评分及理由
(1)得分及理由(满分4分)
学生给出的基本设计思想是采用两层循环遍历,对于每个A[i],通过内层循环计算A[i]与所有A[j](j从0到n-1)乘积的最大值。虽然这种方法在功能上能够正确计算出结果,但题目要求“时间和空间上尽可能高效的算法”,而该算法的时间复杂度为O(n²),并非高效解法。标准答案中给出了O(n)的线性扫描方法,更为高效。因此,学生的设计思想虽然正确但效率较低,根据评分要求“思路正确不扣分”,但考虑到题目明确要求“尽可能高效”,而学生未达到该要求,此处扣1分。得分为3分。
(2)得分及理由(满分7分)
学生给出的代码实现了两层循环遍历,对于每个i,内层循环j从0到n-1(实际应为j从i到n-1,因为题目要求0≤i≤j≤n-1,但学生代码中j从0开始,这会导致计算了i>j的情况,属于逻辑错误)。此外,代码中使用了未定义的常量“-INF”,应使用标准库中的INT_MIN或类似的最小值定义。由于存在逻辑错误(j的起始条件错误)和代码不完整(未定义INF),根据打分要求“逻辑错误扣分”,此处扣3分。得分为4分。
(3)得分及理由(满分2分)
学生正确分析了算法的时间复杂度为O(n²)和空间复杂度为O(1),与代码实现一致。虽然该复杂度并非最优,但分析正确,因此不扣分。得分为2分。
题目总分:3+4+2=9分

评分及理由
(1)得分及理由(满分3分)
学生答案:最短时间12,关键活动a、e、m、n。与标准答案完全一致。得3分。
(2)得分及理由(满分3分)
学生答案:与活动e同时进行的有c、d、b。与标准答案“b、c、d”一致(顺序无关)。得3分。
(3)得分及理由(满分2分)
学生答案:时间余量最大的为j,余量为6。与标准答案完全一致。得2分。
(4)得分及理由(满分2分)
学生答案第一部分:“b的持续时间为3”。标准答案为“b的持续时间最多是4”。学生答案错误。该问包含两个小问,第一小问错误,扣1分。
学生答案第二部分:“压缩k的持续时间可以保证不延期”。与标准答案一致。第二小问正确,得1分。
本小题总计得1分。
题目总分:3+3+2+1=9分

评分及理由
(1)得分及理由(满分3分)
学生答案:主存地址中cache组号占6位,块内地址也占6位。VA中cache组号可做为索引。
标准答案:Cache组号字段为6位,块内地址字段为6位。虚拟地址中VA₁₁~VA₆可作为Cache索引。
评分分析:学生正确回答了主存地址中Cache组号和块内地址的位数(各6位),得2分。对于虚拟地址中哪些位可作为Cache索引,学生回答“VA中cache组号可做为索引”,表述模糊,未明确指出是虚拟地址的低12位中的哪几位(即VA₁₁~VA₆)。考虑到题目要求虚拟地址中哪些位可作为索引,学生答案未达到精确要求,扣1分。
得分:2分
(2)得分及理由(满分2分)
学生答案:d[100]的VA = 01800020H + 100×4 = 018001B0H,cache组号为6。
标准答案:d[100]的虚拟地址为0180 01B0H,Cache组号是06H。
评分分析:学生正确计算了d[100]的虚拟地址(018001B0H),得1分。对于Cache组号,学生答案为“6”,标准答案为“06H”。在数值上“6”与“06H”等价,且题目未要求必须用十六进制表示,因此不扣分。学生答案正确。
得分:2分
(3)得分及理由(满分5分)
学生答案:偏移量为16 B,缺失129次,一共访问了4096次。P(缺失率) = 129/4096×100%。访问时间 = [(1 - P)×2 + P×200]×4096 = 33734个时钟周期。
标准答案:d[0]在其所在主存块内的偏移量是20H。Cache缺失率≈ 3.15%;平均访问时间=2+200p=8.3个时钟周期。
评分分析:
1. 偏移量:学生答案为“16 B”,标准答案为“20H”。20H(十六进制)= 32(十进制),即32字节。由于主存块大小为64B,块内地址占6位,可寻址0-63字节。d[0]的虚拟地址为0180 0020H,低6位(块内偏移)为20H(即32)。学生答案“16 B”错误,扣1分。
2. 缺失率:学生正确识别出缺失次数为129次,总访问次数为2048次读+2048次写=4096次,并给出了缺失率计算公式129/4096×100%,思路正确。但未计算出百分比数值(3.15%)。题目要求“计算结果要求用百分比表示,保留两位小数”,学生未给出计算结果,扣1分。
3. 平均访问时间:学生计算了总访问时间(33734个时钟周期),但题目问的是“数组元素的平均访问时间”,即每次访存的平均时间。学生用总时间除以总访问次数(33734/4096≈8.24)可得到平均时间,与标准答案(8.3)接近,但表述为“访问时间 = ... = 33734个时钟周期”不符合题目所问。扣1分。
此外,学生未区分“平均访问时间”与“总访问时间”,且计算过程未体现平均访问时间公式(2+200p),存在逻辑表述不完整的问题。
得分:2分(缺失次数和总访问次数正确得1分,缺失率公式正确得1分,其余部分有误)
(4)得分及理由(满分2分)
学生答案:d分布在3个页中,访问d所引起的缺页次数为3次。
标准答案:数组d分布在3个页中,缺页次数为3次。
评分分析:学生答案完全正确。
得分:2分
题目总分:2+2+2+2=8分

评分及理由
(1)得分及理由(满分6分)
学生答案中:
本小题扣分点:Q和Y的初始值错误,各扣2分。其余部分正确。
得分:1(计数器)+ 1(ALU运算)= 2分。
(2)得分及理由(满分5分)
学生答案中:
本小题扣分点:异常响应操作描述不够完整,扣1分。
得分:4分。
题目总分:2+4=6分

评分及理由
(1)信号量定义及初值(满分约2分)
学生定义了四个信号量:empty=3(对应可挖坑数量)、mutex=1(铁锹互斥)、full=0(对应已挖坑未种树)、full2=0(对应已种树待浇水)。与标准答案相比,思路基本正确,但命名与标准答案不完全一致(标准答案用 sk、empty、water),这并不扣分。信号量初值设置合理,符合题意“树坑数量小于3时甲才可以挖坑”(初始 empty=3 表示最多可挖3个坑,相当于标准答案的 sk=3)。此处没有逻辑错误,但学生将 empty 用于表示可挖坑数,而标准答案中 empty 表示可使用的树坑数(即已挖坑未种树),两者含义相反但配合后续 wait/signal 使用仍能构成同步关系,属于思路正确但命名习惯不同,不扣分。因此本部分给满分2分。
(2)甲、乙、丙三人的同步互斥实现(满分约4分)
甲:正确使用 wait(empty) 限制挖坑数量不超过3,wait(mutex) 获取铁锹,挖坑后 signal(mutex) 释放铁锹,signal(full) 通知乙有坑可种。逻辑正确,得1.5分。
乙:在第一次识别中,乙的代码有错误:wait(full) 后 wait(mutex) 正确,但操作后 signal(mutex) 正确,却 signal(full) 错误(应为 signal(empty) 或类似表示坑位释放的信号,以允许甲继续挖坑),且缺少对丙的通知(应 signal(full2))。第二次识别中乙的代码修正为:wait(full)、wait(mutex)、填土、signal(mutex)、signal(full)、signal(full2)。这里 signal(full) 明显错误,因为 full 表示已挖坑未种树,乙种树后应增加可挖坑数(即 signal(empty)),而不是继续 signal(full)。这会导致同步逻辑混乱:乙种树后没有释放坑位资源,甲可能无法继续挖坑;同时乙向 full 发送信号可能导致乙自己重复执行。这是一个逻辑错误,扣1分。但乙正确使用了 mutex 保护铁锹,并正确 signal(full2) 通知丙浇水,这部分正确不扣分。
丙:第一次识别中丙的代码有严重错误:wait(full2) 后浇水,但后面有“3”和 signal(mutex)、signal(full2),明显是识别杂音或错误。第二次识别中丙的代码正确:wait(full2) 后浇水,没有多余操作,符合同步要求。根据“两次识别中只要有一次正确则不扣分”的原则,丙的实现不扣分,得1分。
此外,整体流程能体现挖坑、种树、浇水的顺序,但乙中的 signal(full) 错误影响同步正确性。因此本部分扣1分,得3分(甲1.5 + 乙0.5 + 丙1)。
(3)信号量作用说明(满分约1分)
学生没有在代码注释中完整说明每个信号量的作用,仅在 mutex 处注明“铁锹的互斥”。题目要求“说明所用信号量的作用及其初值”,学生只给出了初值,没有完整说明作用,因此扣0.5分。得0.5分。
题目总分:2+3+0.5=5.5分

评分及理由
(1)得分及理由(满分2分)
学生答案正确指出PCB位于内核区,执行scanf等待输入时进程处于阻塞态。与标准答案完全一致。得2分。
(2)得分及理由(满分3分)
学生答案存在部分错误。main()函数的代码应位于只读代码段(.text),而非“共享库的存储映射区”,此部分逻辑错误。但学生正确指出了scanf和printf需要调用系统函数(或执行驱动程序),这部分正确。因此,针对“main()函数的代码位于哪个区域?”扣1分;针对“其直接调用的哪些函数的功能需要通过执行驱动程序实现?”得2分。本小题得2分。
(3)得分及理由(满分3分)
学生答案完全正确。ptr作为全局变量位于读写数据段;length作为局部变量(若不在寄存器)位于用户栈;ptr指向的字符串由malloc分配,位于堆区。与标准答案完全一致。得3分。
题目总分:2+2+3=7分

评分及理由
(1)得分及理由(满分3分)
学生答案中:单向传播时延240ms正确;最大吞吐量200Kb/s正确(标准答案为200 kb/s,单位识别为Kb/s可视为等价);传输时延计算160ms正确;总时间400ms正确。因此该小题得满分3分。
(2)得分及理由(满分3分)
学生答案中:计算发送窗口n=8正确;但序号位数推导有误。学生写的是“序号 $2^{n}-1 = 8$ $\Rightarrow n = 4$”,这里n既代表窗口大小又代表位数,符号混用,但最终得到序号至少4位是正确的(标准答案也是4位)。虽然推导过程不严谨(GBN应满足$2^k \ge W_s+1$,学生用了$2^n-1=8$,实际$2^4-1=15$,不等于8),但最终结果正确,且题目要求“至少需要多少位”,答案正确。考虑到识别可能带来的符号混淆,且最终答案正确,不扣分。得满分3分。
(3)得分及理由(满分3分)
学生答案只给出了两个子网:作业区10.10.10.64/26和生活区10.10.10.128/25,缺少管理区子网。标准答案要求三个子网地址各1分。因此只能给2分(作业区和生活区正确)。管理区子网缺失,扣1分。
题目总分:3+3+2=8分