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

评分及理由
(1)得分及理由(满分4分)
得0分。学生的基本设计思想是采用双重循环遍历所有i和j(0≤i≤j≤n-1)的组合,计算A[i]与A[j]的乘积并取最大值存入res[i]。虽然思路正确,但题目要求“时间和空间上尽可能高效的算法”,而双重循环的时间复杂度为O(n²),不符合高效要求。标准答案给出了O(n)的线性算法,因此学生的设计思想在效率上不满足题目要求,故扣4分。
(2)得分及理由(满分7分)
得2分。学生的代码实现了双重循环,逻辑上可以计算出正确结果,但存在以下问题:
1. 代码中使用了“×”符号(可能是识别错误,实际应为“*”),但根据禁止扣分规则,字符识别错误不扣分。
2. 内层循环j从0开始,但题目要求j≥i,学生的代码计算了所有j(包括j
3. 代码没有处理空数组或n=0的情况,但题目未明确要求,不扣分。
由于算法效率低下,不符合“尽可能高效”的要求,扣5分。
(3)得分及理由(满分2分)
得2分。学生正确分析了算法的时间复杂度为O(n²),空间复杂度为O(1),与代码实现一致,因此得满分。
题目总分:0+2+2=4分

评分及理由
(1)得分及理由(满分3分)
学生答案中给出了最短时间为12,关键活动为a、e、m、n,与标准答案完全一致。尽管学生列出了顶点和活动的最早最晚时间表,但这是解题过程的一部分,且最终结论正确。根据评分要求,思路正确不扣分,额外分析不扣分。因此本题得3分。
(2)得分及理由(满分3分)
学生答案指出与活动e同时进行的活动可能为b、c、d,与标准答案完全一致。因此本题得3分。
(3)得分及理由(满分2分)
学生答案指出时间余量最大的活动是j,余量为6,与标准答案完全一致。因此本题得2分。
(4)得分及理由(满分2分)
学生答案给出了b的持续时间最多为4,以及可以压缩活动k的持续时间,这两个要点均与标准答案一致。因此本题得2分。
题目总分:3+3+2+2=10分

评分及理由
(1)得分及理由(满分3分)
学生答案正确给出了块内地址6位、Cache组号6位,以及虚拟地址VA11~VA6可作为Cache索引。与标准答案完全一致。得3分。
(2)得分及理由(满分2分)
学生正确计算了d[100]的虚拟地址为0180 01B0H。对于Cache组号,学生答案为“6”,标准答案为“06H”,两者数值一致,只是表示形式不同,不扣分。得2分。
(3)得分及理由(满分5分)
本题分三小问:偏移量、缺失率、平均访问时间。
① 偏移量:学生答案为“20H”,正确。得1分。
② 缺失率:学生分析思路正确(识别出129次缺失,4096次访问),计算结果为3.12%,与标准答案3.15%的微小差异可能源于四舍五入,且其计算过程(129/4096)正确,因此不扣分。得2分。
③ 平均访问时间:学生计算了总时钟周期数33734,但题目要求的是“数组元素的平均访问时间”,即每次访问的平均时间。标准答案为8.3个时钟周期。学生答案“33734个时钟”是总时间,不符合问题要求,属于逻辑错误。应扣1分。
本小题总计得分:1+2+0 = 3分。
(4)得分及理由(满分2分)
学生正确回答了数组d分布在3页中,缺页次数为3次。与标准答案一致。得2分。
题目总分:3+2+3+2=10分

评分及理由
(1)得分及理由(满分6分)
学生答案中:
- R初始值:给出0x87654321,标准答案为0xffffffff。错误。根据补码除法(如不恢复余数法)的初始化规则,对于被除数d[i]=0x87654321(负数),其双倍字长扩展应为符号扩展,即高32位应为全1(0xffffffff),学生答案直接用了原数,属于逻辑错误。
- Q初始值:给出0x87654321,标准答案为0x87654321。正确。
- Y初始值:给出0x000000ff,标准答案为0xfffffffe。错误。除数x=0xff,为补码正数,但在补码除法器中,除数通常需要符号扩展并与被除数位数对齐(32位),且根据图示结构,Y初始值应为除数左移一位(或符号扩展后左移)?标准答案给出0xfffffffe,即0xff符号扩展为32位0x000000ff再左移一位?此处需明确:若除数为32位,Y初始值应为除数符号扩展后左移一位(n位除法左移n位),但常见教材中补码除法初始化时Y为除数(符号扩展至与被除数高位部分等长),标准答案0xfffffffe可能是将0xff(000000FF)符号扩展为32位后视为-1的补码(FFFFFFFF)再左移一位得FFFFFFFE。学生答案0x000000ff未进行正确符号扩展和移位,逻辑错误。
- 计数器位置:学生答“控制器CU中包含计数器”,与标准答案“b中的控制逻辑包含计数器”基本一致,正确。
- ALU运算种类:学生答“有移位运算,除法运算”,标准答案为“加法和减法”。ALUop控制的是算术逻辑单元的运算,在补码除法器中主要是加/减操作,移位通常由移位器完成。学生答案混淆了ALU运算和除法器整体操作,逻辑错误。
扣分:R、Y初始值错误各扣1分,ALU运算种类错误扣1分,其余部分正确。本小题满分6分,扣3分,得3分。
(2)得分及理由(满分5分)
学生答案中:
- 除法异常情况:只提到“当X=0H时”,即除数为0异常,正确。但未提及溢出异常(被除数为-2^31且除数为-1的情况),遗漏一种情况。
- CPU响应操作:给出“关中断,保存断点,中断服务程序寻址”,与标准答案“关中断,修改CPU状态为内核态,保存断点(PC和PSWR中的值),跳转到异常处理程序”基本一致,但缺少“修改CPU状态为内核态”,不过核心操作已涵盖,可不扣分。
扣分:遗漏溢出异常情况,扣2分。本小题满分5分,扣2分,得3分。
题目总分:3+3=6分

评分及理由
(1)信号量定义及初值(满分约2分)
得分:1分。理由:学生定义了三个信号量TQ(铁锹互斥)、mutex(互斥锁)、NeedWater(通知浇水),以及一个整型变量empty(坑的数量)。其中TQ和mutex的初值正确,NeedWater初值正确。但存在以下问题:1. 题目要求“定义尽可能少的信号量”,使用整型变量empty不符合信号量同步的常规做法,且对empty的访问未用信号量保护(虽然用了mutex,但empty本身应设计为信号量以实现同步)。标准答案使用sk和empty两个信号量分别控制可挖坑数量和可用坑数量,更为规范。2. 缺少控制“树坑数量小于3时甲才可以挖树坑”的同步信号量(标准答案中的sk),学生用if(empty < 3)判断,但empty是共享变量,在多线程环境下需严格同步,且if判断无法阻塞等待,不符合PV操作原语。因此扣1分。
(2)甲进程同步逻辑(满分约2分)
得分:0.5分。理由:甲进程中,先通过mutex保护对empty的判断,若empty<3则申请铁锹(TQ)。但这里存在严重逻辑错误:1. if(empty < 3)判断后,无论条件是否成立都会执行signal(mutex)并继续执行“挖树坑”,这违反了“当树坑数量小于3时,甲才可以挖树坑”的约束(当empty>=3时甲不应挖坑)。2. 挖坑后直接signal(TQ)释放铁锹,但挖坑前可能并未成功申请到铁锹(当empty>=3时不会wait(TQ)),导致释放未持有的信号量错误。3. empty++操作用mutex保护正确,但未通知乙有坑可用(缺少类似signal(empty)的操作)。因此扣1.5分。
(3)乙进程同步逻辑(满分约2分)
得分:1分。理由:乙进程中,先判断empty>0,然后通过mutex保护empty--,之后放树苗、申请铁锹填土、释放铁锹、通知丙浇水。基本流程正确,且通知丙的信号量使用正确。但存在以下问题:1. if(empty>0)判断同样存在同步问题,应用wait操作阻塞等待。2. 缺少对“填土”前铁锹互斥的保护(已有wait(TQ)正确)。3. 乙完成后未释放“可挖坑数量”资源(即未通知甲可以继续挖坑)。因此扣1分。
(4)丙进程同步逻辑(满分约1分)
得分:1分。理由:丙进程正确等待NeedWater信号量后浇水,逻辑正确。未提及水桶互斥,但题目中水桶只有一个,理论上也需互斥,不过标准答案也未对水桶设互斥(浇水未用信号量保护),因此不扣分。
题目总分:1+0.5+1+1=3.5分

评分及理由
(1)得分及理由(满分2分)
学生答案:PCB位于内核区,处于阻塞态。
标准答案:PCB位于内核区,执行scanf()时进程处于阻塞态。
分析:学生答案与标准答案完全一致,正确指出了进程控制块的位置和进程在等待I/O时的状态。
得分:2分。
(2)得分及理由(满分3分)
学生答案:位于只读代码区,scanf和printf需要执行驱动。
标准答案:main()函数的代码位于只读代码段(.text),其直接调用的scanf()和printf()需要执行驱动程序。
分析:学生答案正确指出了main()函数代码的位置以及需要驱动程序实现的函数。答案完整且正确。
得分:3分。
(3)得分及理由(满分3分)
学生答案:ptr分配在可读写数据区中,length会被分配在用户栈中,ptr指向的字符串位于运行时堆中。
标准答案:ptr位于读/写数据段,length位于用户栈段,ptr指向的内存单元位于堆区。
分析:学生答案与标准答案在核心逻辑上完全一致。表述上“可读写数据区”即“读/写数据段”,“用户栈”即“用户栈段”,“运行时堆”即“堆区”。所有要点均正确。
得分:3分。
题目总分:2+3+3=8分

评分及理由
(1)得分及理由(满分3分)
学生答案中单向传播时延计算正确(0.24 s = 240 ms),最大吞吐量正确(200 kb/s),文件传输最少时间计算正确(0.4 s = 400 ms)。虽然公式书写时在传播时延计算中未明确体现“2×”的来源(即信号需上行至卫星再下行至地面,总路径为2倍轨道高度),但数值结果正确。文件传输时间计算中,学生使用了“4000B / 200kb/s + 0.24s”,这与标准答案“240×10^{-3} + (4000×8)/(200×10^3)”本质相同(注意学生写法中“4000B / 200kb/s”隐含了单位转换,因为1B=8b,所以4000B对应32000b,除以200kb/s即得0.16s,加上0.24s得0.4s)。因此,本题答案完全正确,得3分。
(2)得分及理由(满分3分)
学生正确计算了发送窗口至少为8,帧序号至少为4位。计算过程清晰:先求帧传输时间T0=0.06s,然后利用信道利用率公式(发送窗口×T0)/(T0+2×传播时延)≥80%,解得x≥7.2,取整得8。对于GBN协议,发送窗口W_s与序号位数k满足2^k ≥ W_s+1,代入W_s=8得2^k ≥9,故k≥4。答案与标准答案一致,得3分。
(3)得分及理由(满分3分)
学生给出的三个子网CIDR地址分别为:作业区10.10.10.0/26,管理区10.10.10.64/26,生活区10.10.10.128/25。标准答案为:作业区10.10.10.64/26,管理区10.10.10.0/26,生活区10.10.10.128/25。学生将作业区和管理区的子网地址互换,但题目要求“作业区子网和管理区子网可分配IP地址数均不少于60个”,两者规模相同,子网划分方案可以互换,只要满足生活区子网(≥120个地址)使用/25,其余两个子网使用/26即可。因此,学生的划分方案在逻辑上是正确的,只是子网命名与标准答案不同,但题目并未指定哪个子网必须对应哪个具体地址块,只要划分合理即正确。故得3分。
题目总分:3+3+3=9分