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

评分及理由
(1)得分及理由(满分4分)
学生给出的算法思想是:第一遍循环找到整个数组的最大值和最小值,第二遍循环对每个A[i]计算Max*A[i]和Min*A[i]的最大值作为res[i]。这个思路与标准答案不同,标准答案是从右向左遍历并动态维护从i到n-1的最大值和最小值,然后根据A[i]的正负选择乘最大值或最小值。学生的思路虽然也能得到结果,但存在逻辑错误:对于每个A[i],需要的是与A[j](j≥i)的乘积最大值,而学生的做法使用了整个数组的最大值和最小值,这可能导致错误(例如A[i]为负数时,应该乘子数组的最小值,但学生可能乘了整个数组的最大值,导致结果不是子数组范围内的最大乘积)。因此,该算法思想不完全正确。但考虑到学生可能意图是简化处理,且部分情况下可能正确,但严格来说不符合题目要求,扣2分。得2分。
(2)得分及理由(满分7分)
学生代码实现基于上述思想,但存在以下问题:
1. 第一遍循环中,学生从后向前遍历,但维护的Max和Min是整个数组的最大值和最小值,而不是从i到n-1的最大值和最小值。这导致第二遍循环中,res[i]的计算可能错误,因为对于每个i,应该使用子数组A[i:n-1]的最大值和最小值,而不是整个数组的。
2. 代码中使用了宏定义INF,但初始值设置可能不准确(例如-INF可能不是最小整数值),但这不是主要扣分点。
3. 关键逻辑错误:没有根据A[i]的正负选择乘最大值或最小值,而是直接取Max*A[i]和Min*A[i]的最大值,这不符合题目要求(例如A[i]为负数时,应乘子数组的最小值,但学生可能乘了Max,导致结果偏小或错误)。
因此,代码逻辑错误明显,扣4分。得3分。
(3)得分及理由(满分2分)
学生正确分析了时间复杂度和空间复杂度,均为O(n)和O(1),与标准答案一致。得2分。
题目总分:2+3+2=7分

评分及理由
(1)得分及理由(满分3分)
学生答案:最短时间12,关键活动a, e, m, n。
标准答案:最短时间12,关键活动a, e, m, n。
答案完全正确。得3分。
(2)得分及理由(满分3分)
学生答案:与e同时进行的活动可能:b, c, d。
标准答案:同时进行的活动:b, c, d。
答案完全正确。得3分。
(3)得分及理由(满分2分)
学生答案:时间余量最大:j,余量为:6。
标准答案:时间余量最大的活动是j,余量为:6。
答案完全正确。得2分。
(4)得分及理由(满分2分)
学生答案:b持续时间最多4,可压缩k保证不延期。
标准答案:b的持续时间最多是4,若不改变b的持续时间,则可以压缩活动k。
答案完全正确。得2分。
题目总分:3+3+2+2=10分

评分及理由
(1)得分及理由(满分3分)
学生答案正确:组号占6位,块内地址占6位,虚拟地址的VA11~VA6作Cache索引。与标准答案一致。得3分。
(2)得分及理由(满分2分)
学生答案正确:d[100]虚拟地址为0180 01B0H,对应Cache组号为06H。与标准答案一致。得2分。
(3)得分及理由(满分5分)
学生答案部分正确:
① d[0]在主存块偏移量20H,正确,得1分。
② Cache缺失率计算为1/32≈3.13%,标准答案为129/4096≈3.15%,两者数值非常接近,但学生计算过程未体现129次缺失和4096次访问的推导。考虑到其思路(每32次访问缺失一次,因为一个主存块有16个int,每次循环有读和写两次访问,所以16*2=32)本质正确,且结果与标准答案误差极小(0.02%),此处不扣分,得2分。
③ 平均访问时间计算为2+1/32×200=8.25个时钟周期,思路正确,结果与标准答案(8.3)因四舍五入有微小差异,不扣分,得2分。
本小题共得5分。
(4)得分及理由(满分2分)
学生答案存在矛盾:
① “d分布在2个页中”错误。根据起始地址0180 0020H和页大小4KB,数组d共2048个int,占8192字节,跨越的页数为:从第0180 0020H页内偏移32字节开始,需要覆盖到0180 0020H+0x2000(8192字节)=0180 2020H,因此涉及虚拟页号0x18000, 0x18001, 0x18002,共3个页。标准答案为3个页。
② “访问d会引起3次缺页”正确。
本小题第一问错误,扣1分。得1分。
题目总分:3+2+5+1=11分

评分及理由
(1)得分及理由(满分6分)
学生答案中:
- R的初始值:学生答“0000 0000H”,标准答案为“0xffffffff”。学生答案错误。在补码不恢复余数除法中,被除数d[i](0x87654321,为负数)经过符号扩展后,其高位部分(即R的初始值)应为全1(即符号扩展),故R应为0xffffffff。此处属于逻辑错误,扣2分。
- Q的初始值:学生答“8765 4321H”,与标准答案“0x87654321”一致,正确,不扣分。
- Y的初始值:学生答“ffff ffffH”,标准答案为“0xfffffffe”。学生答案错误。除数x=0xff(即255),在补码除法中,除数Y需要存放其绝对值的补码形式(对于正数,即其本身;对于负数,为其绝对值)。0xff是正数,其绝对值的补码仍为0xff,但题目中Y的位宽应与R、Q一致(32位),因此Y应为0x000000ff。然而标准答案给出的是0xfffffffe,这可能是将除数x=0xff误当作-1(0xffffffff)处理并进行了某种转换,但根据常规补码除法初始化,对于正除数,Y应为除数本身(符号扩展至32位)。学生答案“ffff ffffH”可能是将除数误解为-1。但无论如何,学生答案与标准答案不符,且标准答案的0xfffffffe也令人费解(可能是题目特殊设定)。鉴于学生答案与标准答案不一致,且学生答案明显错误(将正数0xff视为全1),扣2分。
- 图中哪个部件包含计数器:学生答“控制逻辑部件包含计数器”,与标准答案“b中的控制逻辑包含计数器”一致,正确,不扣分。
- ALU运算有几种:学生答“加法、减法”,与标准答案“加法和减法”一致,正确,不扣分。
本小题满分6分,扣4分,得2分。
(2)得分及理由(满分5分)
学生答案中:
- 除法异常情况:学生只答出“当x = 0000 0000H,发生除零异常”,漏掉了溢出异常的情况(即d[i]为0x80000000且x为0xffffffff时)。标准答案列出了两种情况。此处遗漏一种异常情况,属于逻辑不完整,扣2分。
- 异常响应操作:学生答“CPU需执行陷入指令,进入内核态”,只提到了部分操作(进入内核态),但未提及关中断、保存断点(PC和PSWR)、跳转异常处理程序等关键步骤。标准答案列出了完整的三个步骤。此处回答不完整,扣2分。
本小题满分5分,扣4分,得1分。
题目总分:2+1=3分

评分及理由
(1)得分及理由(满分7分)
学生作答中,第2次识别结果给出了一个完整的、逻辑正确的解决方案。该方案定义了三个信号量:S1(初值3,控制可挖树坑数量,即保证树坑数量小于3时甲才能挖坑)、S2(初值0,用于甲挖坑和乙放树填土的同步)、S3(初值0,用于乙放树填土和丙浇水的同步)。甲、乙、丙三个进程的代码结构正确,使用了wait/signal操作实现了规定的同步关系,并且没有遗漏互斥要求(题目中“铁锹用于挖树坑,填土”隐含了对铁锹的互斥使用,但标准答案中明确使用了mutexT。学生答案未处理铁锹互斥,但根据题目描述“铁锹和水桶各一个”,水桶仅丙使用无需互斥,铁锹需互斥。学生方案未体现对铁锹的互斥访问,这是一个逻辑缺陷)。
扣分点:未处理铁锹的互斥访问。铁锹是甲(挖坑)和乙(填土)都需要使用的共享资源,且只有一个,必须互斥使用。学生方案中甲和乙可能同时使用铁锹,这违反了互斥条件。这是一个关键的逻辑错误。
因此,扣除2分。得分:5分。
题目总分:5分

评分及理由
(1)得分及理由(满分2分)
学生答案指出PCB位于内核区,并说明执行scanf时进程处于阻塞态。这与标准答案完全一致。两次识别结果均正确,因此得满分2分。
(2)得分及理由(满分3分)
学生答案指出main()代码位于只读代码段,并正确识别出scanf和printf需要通过驱动程序实现。这与标准答案完全一致。因此得满分3分。
(3)得分及理由(满分3分)
学生答案正确指出ptr位于可读写数据段,length位于用户栈,ptr指向的字符串位于运行时堆。这与标准答案完全一致。因此得满分3分。
题目总分:2+3+3=8分

评分及理由
(1)得分及理由(满分3分)
学生答案中:
- 单向传播时延计算正确(0.24s = 240ms)。
- 最大吞吐量计算错误:学生写为400 kb/s,但标准答案为200 kb/s(卫星链路每个方向速率为200 kb/s)。此处属于逻辑错误,扣1分。
- 传输4000B文件最少时间计算正确(0.4s = 400ms)。
因此,本小题得分为2分(扣1分)。
(2)得分及理由(满分3分)
学生答案中:
- 计算了帧传输时间(0.06s)和往返时间(0.48s)。
- 但信道利用率计算公式不清晰,且中间计算步骤有误(如0.432/0.16的0.16来源不明)。
- 最终结论正确:发送窗口至少为8,序号字段至少4位。
由于核心结论正确,且中间计算虽有笔误但最终结果与标准答案一致,根据“思路正确不扣分”原则,不扣分。本小题得3分。
(3)得分及理由(满分3分)
学生答案中:
- 三个子网的CIDR地址与标准答案完全一致。
因此,本小题得3分。
题目总分:2+3+3=8分