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

评分及理由
(1)得分及理由(满分4分)
得分:0分
理由:学生的基本设计思想是使用两层循环遍历所有i和j的组合,并试图通过维护一个“min”变量来找到A[i]与A[j]乘积的最大值。然而,这里存在严重的逻辑错误:题目要求计算A[i]与A[j](i≤j)乘积的最大值,但学生的思路是寻找乘积的最小值(因为变量名为min,且比较条件是A[i]*A[j] < min时更新min)。这与题目要求完全相反。因此,该设计思想不能正确解决问题,属于逻辑错误,扣4分。
(2)得分及理由(满分7分)
得分:0分
理由:根据设计思想实现的代码同样存在逻辑错误。代码中变量名为`min`,初始化为一个极大值(2³²-1),但在内层循环中,它被用来存储A[i]*A[j]的最小值(因为更新条件是`if(A[i]*A[j] < min)`)。最终将`min`赋值给`res[i]`,这导致`res[i]`存储的是A[i]与后续元素乘积的最小值,而非题目要求的最大值。因此,代码无法实现题目功能,属于核心逻辑错误,扣7分。此外,代码中`2³²`的写法在C/C++中是非法的(应为`INT_MAX`或类似常量),但根据“禁止扣分”原则,这属于识别或书写问题,不额外扣分。
(3)得分及理由(满分2分)
得分:2分
理由:学生正确分析了自己所设计算法的时间复杂度为O(n²)和空间复杂度为O(1)。尽管算法本身是错误的,但复杂度分析是基于其给出的代码逻辑进行的,且分析正确。根据评分要求,此部分不因算法整体错误而扣分,故给满分2分。
题目总分:0+0+2=2分

评分及理由
(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的持续时间最多是4。与标准答案一致。
学生答案第二部分:“若不改变b的持续,则需压缩k至1才能保证工程不延期”。标准答案为“压缩活动k”。学生答案指出了压缩k,并给出了具体压缩至1的额外信息。根据打分要求第4条“禁止加分:对于学生做的额外分析不给予加分”,以及第5条“对于多种解题方法不要重复给分”,此额外信息不影响得分,且核心答案“压缩k”正确。因此该部分不扣分。
综上,第(4)问答案正确。得2分。
题目总分:3+3+2+2=10分

评分及理由
(1)得分及理由(满分3分)
学生答案:组号字段占6位,块内地址字段占6位,VA6~VA11可作为Cache索引。
标准答案:组号6位,块内地址6位,VA₁₁~VA₆可作为Cache索引(即VA6~VA11)。
学生答案与标准答案一致,得3分。
(2)得分及理由(满分2分)
学生答案:d[100]的虚拟地址为0180 01B0H,对应的Cache组号是6号。
标准答案:虚拟地址为0180 01B0H,Cache组号为06H(即6号)。
学生答案正确,得2分。
(3)得分及理由(满分5分)
学生答案:d[0]在主存块内的偏移量是20H;Cache缺失率为3.13%;平均访问时长为8个周期。
标准答案:偏移量20H;缺失率3.15%;平均访问时间8.3个周期。
偏移量20H正确(1分)。缺失率计算:学生给出1/32=3.13%,标准答案为129/4096≈3.15%,两者接近,且学生计算思路基本正确(将缺失次数近似为每块一次,共2048/16=128块,但实际为129块,误差很小),可视为正确,得2分。平均访问时间:学生计算为8个周期,标准答案为8.3,存在误差,但计算过程(2×96.87%+202×3.13%)逻辑正确,结果近似,扣1分。本小题得1+2+1=4分。
(4)得分及理由(满分2分)
学生答案:数组d分布在3页中;缺页次数为2次。
标准答案:分布在3页中;缺页次数为3次。
页数3正确(1分)。缺页次数:学生答2次,标准答案为3次。由于数组起始地址为0180 0020H,跨越3个页,首次访问每个页时都会发生缺页,应为3次。学生答案错误,扣1分。本小题得1分。
题目总分:3+2+4+1=10分

评分及理由
(1)得分及理由(满分6分)
学生第一次识别结果:
- “Cn包含计数器”:标准答案指出“b中的控制逻辑包含计数器”,学生答“Cn”,可能是指图中的控制逻辑(Control Logic),但表述不明确,考虑到识别误差,可以认为基本正确,不扣分。
- “ALUop控制系数和x相加”:表述模糊且不完整。标准答案指出ALU运算包含加法和减法,学生只提到“相加”,且未说明有几种运算,属于关键信息缺失和错误。
学生第二次识别结果:
- “R:0000 0000 Q:87654321 X:0000 00ff”:初始值完全错误。根据题目,d[i]=0x87654321,x=0xff,且scov指令将R1符号扩展为64位(R0:R1)。idiv指令执行{R0,R1}/R2(R2为x)。补码除法器初始化时,R应为被除数高32位(即R0,符号扩展后为0xffffffff),Q应为被除数低32位(即R1,0x87654321),Y应为除数(即R2,0xff)符号扩展为32位(0xfffffffe)。学生答案R和Y的值均错误。
- “Cn包含计数器”:同第一次,基本正确。
- “ALUop控制余数和X相加”:同第一次,表述模糊且不完整,未说明运算种类。
综合两次识别,学生对寄存器初始值的回答错误,对ALU运算种类的回答不完整且错误。因此,本小题扣分严重。
得分:1分(仅“包含计数器”部分基本正确)。
(2)得分及理由(满分5分)
学生两次识别结果均指出:
- “除数为0时会发生异常,此时x=0000 0000”:这部分正确,对应标准答案的第一种情况。
- “产生异常时,CPU进入内核态”:这部分不完整。标准答案要求列出异常响应过程中的多个操作(关中断、保存断点、跳转异常处理程序),学生只提到“进入内核态”,属于关键信息缺失。
学生未提及第二种溢出异常情况(d[i]=0x80000000, x=0xffffffff),属于答案不完整。
因此,本小题扣分。
得分:2分(答对除数为0的情况得部分分,但未答全异常情况和响应操作)。
题目总分:1+2=3分


评分及理由
(1)信号量定义及初值(满分约2分)
学生定义了三个信号量:qiao(互斥使用铁锹,初值1)、water(同步浇水,初值0)、plant(同步放树苗,初值0),并定义了一个整型变量ken(初始为0)来记录树坑数量。与标准答案相比,缺少一个专门控制可挖坑数量(小于3)的信号量,而是用if(ken<3)判断,这在多进程同步中可能因竞争条件导致错误。此外,信号量命名与标准不同但不影响逻辑。扣1分,因为缺少一个关键同步信号量(sk),且用共享变量ken判断条件未加互斥保护,存在逻辑隐患。得1分。
(2)甲进程逻辑(满分约2分)
甲在ken<3时申请铁锹挖坑,挖完后ken++并释放铁锹,然后signal(plant)通知乙。但问题在于:① if(ken<3)没有用信号量或互斥保护,多个甲可能同时进入导致坑数超过3;② 没有像标准答案那样用wait(sk)来限制可挖坑数。逻辑有错误,扣1.5分。得0.5分。
(3)乙进程逻辑(满分约2分)
乙中出现了两个wait(qiao),这会导致死锁(申请两次互斥信号量,但只释放一次)。另外,乙先wait(qiao)再wait(plant),顺序可能导致效率问题但不一定错;乙执行后ken--并signal(water)通知丙,但缺少对可挖坑数的恢复信号(如标准中的signal(sk))。逻辑有严重错误(重复wait同一互斥量),扣2分。得0分。
(4)丙进程逻辑(满分约1分)
丙正确等待water信号后浇水,没有额外操作,与标准一致。得1分。
题目总分:1+0.5+0+1=2.5分

评分及理由
(1)得分及理由(满分2分)
学生答案:PCB处于内核区;scanf()等待键盘输入时,进程处于阻塞态。
标准答案:PCB位于内核区;执行scanf()时进程处于阻塞态。
学生回答与标准答案完全一致。得2分。
(2)得分及理由(满分3分)
学生答案:main()函数的代码位于只读代码区;malloc、scanf、printf需要通过执行驱动程序。
标准答案:main()函数的代码位于只读代码段;其直接调用的scanf()和printf()需要执行驱动程序。
分析:第一问正确。第二问中,学生列出了malloc、scanf、printf。malloc是库函数,用于动态内存分配,其功能主要在用户空间的内存管理器中实现,不直接涉及驱动程序。只有涉及I/O操作的scanf和printf才需要通过执行驱动程序实现。因此,学生多答了malloc,这是一个逻辑错误。考虑到题目问的是“直接调用的哪些函数”,且malloc确实被调用,但其功能不通过驱动程序实现,此处应扣分。扣1分。得2分。
(3)得分及理由(满分3分)
学生答案:ptr被分配在运行时堆;length会被分配在可读写数据区;ptr指向的字符串位于用户栈。
标准答案:ptr位于读/写数据段;length位于用户栈段;ptr指向的字符串位于堆区。
分析:
第一问:ptr是全局变量,应位于数据段(可读写数据区),而非运行时堆。学生回答错误,扣1分。
第二问:length是main函数内的局部变量,若不在寄存器中,应位于用户栈。学生回答为“可读写数据区”,错误,扣1分。
第三问:ptr指向的字符串是malloc动态分配的内存,应位于堆区。学生回答为“用户栈”,错误,扣1分。
本小题共扣3分。得0分。
题目总分:2+2+0=4分

评分及理由
(1)得分及理由(满分3分)
学生答案中单向传播时延计算正确(240ms),最大吞吐量正确(200kb/s),文件传输最少时间计算正确(400ms)。虽然计算过程表述略有不同(如将240ms拆分为两个120ms相加),但结果与标准答案一致,思路正确。因此得3分。
(2)得分及理由(满分3分)
学生答案中计算发送窗口和序号字段的公式有误。标准答案中信道利用率公式的分母应为“2×单向传播时延+发送一帧的时间”,而学生答案的分母为“发送一帧的时间+240ms”,忽略了卫星链路双向传播时延(即RTT)应为2×240ms=480ms。因此,其计算出的发送窗口n≥4和序号字段至少为4是错误的。根据标准答案,发送窗口至少为8,序号字段至少为4位。学生答案中窗口大小错误,但序号字段位数结果碰巧正确(标准答案也是4位),然而由于核心计算逻辑错误,导致窗口大小错误,因此不能给分。得0分。
(3)得分及理由(满分3分)
学生答案中三个子网的CIDR地址形式与标准答案完全一致:管理区10.10.10.0/26,作业区10.10.10.64/26,生活区10.10.10.128/25。分配合理,符合题目要求。因此得3分。
题目总分:3+0+3=6分