文章
337
粉丝
0
获赞
0
访问
48.0k

评分及理由
(1)得分及理由(满分2分)
学生答案:进程控制块位于内核区,执行scanf时进程处于阻塞态(或阻塞状态)。
标准答案:PCB位于内核区,执行scanf时进程处于阻塞态。
分析:学生的回答与标准答案完全一致。两次识别结果均正确。
得分:2分。
(2)得分及理由(满分3分)
学生答案:main函数位于用户栈;直接调用的scanf和printf函数需要通过驱动程序实现。
标准答案:main函数代码位于只读代码段;其直接调用的scanf和printf需要执行驱动程序。
分析:学生回答存在一处逻辑错误。main函数的代码(指令)应位于“只读代码段”(.text段),而非“用户栈”。用户栈用于存放函数调用时的局部变量、返回地址等信息。对于直接调用的哪些函数需要驱动程序,学生答对了scanf和printf,这是正确的,因为这两个函数涉及控制台I/O,最终需要调用驱动程序。
扣分:对于main函数代码位置这一关键点的错误,属于逻辑错误,需要扣分。该小题满分3分,此错误较为严重,扣2分。
得分:1分。
(3)得分及理由(满分3分)
学生答案:变量ptr分配在内核区;变量length分配在可读写数据段;ptr指向的字符串位于运行时堆区域。
标准答案:变量ptr分配在读/写数据段;变量length(若不在寄存器)分配在用户栈;ptr指向的字符串位于堆区。
分析:学生回答存在两处逻辑错误。
第一,变量ptr是全局变量,应分配在“可读写数据段”(.data或.bss段),而非“内核区”。内核区是操作系统内核代码和数据所在区域,用户程序的全局变量不可能在内核区。
第二,变量length是main函数内的局部变量,应分配在“用户栈”,而非“可读写数据段”。
第三,对于ptr指向的字符串位置,学生回答正确,malloc分配的内存位于堆区(即运行时堆)。
扣分:三个小问中,两个关键点(ptr和length的位置)错误,属于逻辑错误。每个错误点扣1分,共扣2分。
得分:1分。
题目总分:2+1+1=4分
登录后发布评论
暂无评论,来抢沙发