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

评分及理由
(1)得分及理由(满分4分)
学生答案的设计思想清晰明确:使用计数器记录K顶点数,对每个顶点分别计算其出度和入度(通过遍历邻接矩阵的行和列),若出度大于入度则输出顶点并计数,最后返回计数。该思路与标准答案完全一致,且表述完整。因此得4分。
(2)得分及理由(满分9分)
学生提供的C++代码实现了算法思想,具体分析如下:
outdegree > indegree符合题目要求,输出顶点名称(使用G.VerticesList[k])并计数。需要注意的细节:
cout,属于C++语法,题目允许C/C++描述,因此不扣分。Mygraph(第二次识别结果),但根据上下文和第一次识别结果(MGraph)以及题目定义,应判定为识别误差导致的误写,不扣分。printVertices函数,因此完整度符合要求。综上,代码逻辑正确,无错误,得9分。
题目总分:4+9=13分

评分及理由
(1)得分及理由(满分8分)
学生答案给出了3个初始归并段,数量正确,得2分。
第一个归并段内容为“37, 51, 63, 92, 94, 99”,与标准答案“37,51,63,92,94,99”完全一致,得2分。
第二个归并段内容为“14, 15, 23, 31, 48, 56, 60, 90”。标准答案为“14,15,23,31,48,56,60,90,166”。学生答案缺少了“166”。这是一个逻辑错误,因为置换-选择排序算法要求归并段内的记录是有序的,且算法过程决定了“166”应包含在第二个归并段中。缺少该记录,说明对算法的理解或执行过程有误。因此,第二个归并段不能得满分。考虑到其正确部分较多,扣1分,得1分。
第三个归并段内容为“8, 17, 43, 100, 166”。标准答案为“8,17,43,100”。学生答案多出了“166”。由于“166”已错误地放入第三段,这同样是一个逻辑错误,破坏了归并段的有序性和算法的正确性。因此,第三个归并段不能得满分。考虑到其正确部分较多,扣1分,得1分。
综上,第(1)问得分为:2 (段数) + 2 (第一段) + 1 (第二段) + 1 (第三段) = 6分。
(2)得分及理由(满分2分)
第一次识别结果为“最大值n, 最小值m”,与标准答案“最大可能长度为 n,最小可能长度为 m”完全一致,思路和结论均正确。
第二次识别结果为“最小值n,最大值m”,与标准答案相反,是一个明显的逻辑错误。
根据打分要求第3条:“对学生作答进行了两次识别,只要其中有一次回答正确则不扣分”。由于第一次识别结果完全正确,因此本题不扣分,得2分。
题目总分:6+2=8分

评分及理由
(1)得分及理由(满分3分)
学生回答数组a分为6个页面存储,会发生6次缺页异常,并给出了6个页故障地址。但根据题目条件,页面大小为4KB,数组a按行优先存放,a[24][64],sizeof(int)=4,总大小为24*64*4=6144字节。6144字节需要2个4KB页面(2*4096=8192字节,覆盖6144字节)。因此,数组a实际存储在2个页面中。由于程序执行前数组a不在主存,且不会发生页面置换,访问数组时会触发缺页,但只会触发2次(每个页面第一次访问时触发)。学生回答的页面数、缺页次数和故障地址数量均错误,但给出的地址列表中包含了正确的两个地址(0042 2000H和0042 3000H)。由于核心逻辑错误,扣分。得1分(因为部分地址正确,但整体错误)。
(2)得分及理由(满分2分)
学生回答“没有时间局部性”,理由为“每个数组元素仅访问一次”,这与标准答案一致。因此得2分。
(3)得分及理由(满分4分)
学生回答块内地址为A11~A0(12位),Cache组号为A10~A6(5位)。但根据题目,主存块大小为32B,块内地址应为5位(2^5=32);Cache数据区8KB,4路组相联,每块32B,则总块数=8KB/32B=256块,组数=256/4=64组,组号需6位(2^6=64)。因此,虚拟地址中低5位(A4~A0)为块内地址,低11位中高6位(A10~A5)为Cache组号。学生回答的位数错误。但计算a[1][0]的虚拟地址正确(0042 2100H),且组号8正确(因为地址计算后,对应组号确实为8,尽管学生给出的组号位数定义错误,但计算结果与标准答案一致)。由于块内地址和组号位数定义错误,扣分。得2分(虚拟地址和组号结果正确,但地址划分错误)。
(4)得分及理由(满分5分)
学生回答数组a占192个主存块正确(数组大小6144字节,每块32B,6144/32=192)。Cache命中率计算为7/8=87.5%,且两种循环顺序下均为87.5%,这与标准答案一致。因此得5分。
题目总分:1+2+2+5=10分

评分及理由
(1)得分及理由(满分3分)
学生第一次识别结果为“004010B9H”,与标准答案一致。第二次识别结果为“00401089H”,存在差异,但根据“禁止扣分”原则第3条,只要其中一次识别正确则不扣分。因此本题得3分。
(2)得分及理由(满分3分)
第一问:学生两次识别均回答“都采用相对寻址”,与标准答案一致,得1分。
第二问:学生两次识别均给出了第7条jge指令的计算过程“00401088H + 2 + 32 = 004010BCH”,但题目要求的是第2条jmp指令的跳转目标地址计算过程。学生答案未按要求计算第2条指令,属于逻辑错误,扣1分。因此本小题得2分(第一问1分,第二问1分)。
(3)得分及理由(满分2分)
第一问:学生两次识别均回答“立即数寻址”,与标准答案“立即寻址方式”一致,得0.5分。
第二问:学生两次识别均回答“i * 256”,与标准答案“ecx存放的是i×256”一致,得0.5分。
第三问:学生第一次识别结果为“f 指针”,第二次为“+ 偏移”,均未明确回答“小端方式”。标准答案要求根据机器码判断大小端,学生答案未涉及,属于未答出关键点,扣1分。因此本小题得1分。
(4)得分及理由(满分1分)
学生两次识别均回答“否”,结论正确,得0.5分。
理由部分,学生回答“前20位保持不变,第19条指令与前面的指令在同一页中”,正确指出了虚页号相同(前20位)且位于同一页的关键点,与标准答案逻辑一致,得0.5分。因此本小题得1分。
题目总分:3+2+1+1=7分

评分及理由
(1)得分及理由(满分4分)
学生答案正确指出了两处错误并给出了正确的修改:将“if (key == TRUE)”改为“while (key == TRUE)”,以及将“lock = TRUE;”改为“lock = FALSE;”。这与标准答案完全一致。因此,本题得分为4分。
(2)得分及理由(满分3分)
学生答案正确回答了“不能”。理由部分,两次识别结果的核心意思一致:swap指令是原子的(“原子语句”、“一气呵成”),而函数调用可能被打断(“可能被打断”)。这准确指出了关键区别在于原子性。虽然表述上“可执行手续调用”、“可执行系统调用”可能存在识别误差或不精确,但结合上下文可判断其意在强调swap指令的不可中断特性,与标准答案核心观点一致。因此,本题得分为3分。
题目总分:4+3=7分

评分及理由
(1)得分及理由(满分3分)
学生答案第一部分“①的前一个是③,后一个是⑤”与标准答案完全一致,得2分。
第二部分“⑥的后一个是③”与标准答案“⑥的后一个是④”不符。操作⑥(用户在键盘上输入字符)会触发硬件中断,其直接后一个操作应是④(启动键盘中断处理程序),而非③(将字符从键盘控制器读入系统缓冲区),③是中断处理程序启动后执行的操作。此处存在逻辑错误,扣1分。
本小题得分为2分。
(2)得分及理由(满分2分)
学生答案“②,①”与标准答案“②将进程P插入阻塞队列”和“①将进程P插入就绪队列”完全一致。
第一问:操作②(将进程P插入阻塞队列)意味着进程P主动放弃CPU或因等待I/O而被阻塞,此时CPU一定会切换到其他进程执行。
第二问:操作①(将进程P插入就绪队列)是进程P重新获得被调度资格的前提,之后CPU调度程序才可能选择它执行。
本小题得分为2分。
(3)得分及理由(满分1分)
学生答案“③”与标准答案“③将字符从键盘控制器读入系统缓冲区”完全一致。该操作是设备驱动程序(键盘驱动程序)的核心功能之一,负责与硬件控制器交互。
本小题得分为1分。
(4)得分及理由(满分2分)
学生答案“阻塞态,内核态”与标准答案“阻塞状态”和“内核态”在逻辑上完全一致。第二次识别结果中的“内接系”根据上下文判断为“内核态”的识别错误,依据“禁止扣分”原则,不扣分。
第一问:当键盘中断处理程序执行时,进程P正在等待输入完成,处于阻塞状态。
第二问:中断处理程序是操作系统内核的一部分,其执行时CPU必然处于内核态。
本小题得分为2分。
题目总分:2+2+1+2=7分

评分及理由
(1)得分及理由(满分3分)
学生答案第一问“持久,非持久”正确,得2分。第二问“数据”错误,应为“控制连接”,扣1分。本题得2分。
(2)得分及理由(满分2分)
学生答案“101”正确,得1分。“18101”错误,应为“18102”。扣1分。本题得1分。
(3)得分及理由(满分2分)
学生答案“2000B,5000B”错误。题目要求回答拥塞窗口调整为多少(以MSS为单位),标准答案为“3MSS, 5MSS”。学生答案以字节为单位且数值错误,逻辑错误,扣2分。本题得0分。
(4)得分及理由(满分2分)
学生答案“2RTT + 4RTT = 60ms”正确,得1分。“0.3MB/s”错误,应为“2.4Mbps”。单位及数值均错误,扣1分。本题得1分。
题目总分:2+1+0+1=4分