文章
57
粉丝
0
获赞
0
访问
10.5k

评分及理由
(1)得分及理由(满分2分)
学生答案:进程控制块位于内核区;进程处于阻塞态。
标准答案:PCB位于内核区;执行scanf()时进程处于阻塞态。
学生回答完全正确。得2分。
(2)得分及理由(满分3分)
学生答案:main()函数代码位于用户栈;调用scanf()函数,printf()函数需执行驱动程序来实现。
标准答案:main()函数的代码位于只读代码段;其直接调用的scanf()和printf()需要执行驱动程序。
学生答案存在逻辑错误:main()函数的代码应位于只读代码段(.text段),而非用户栈。用户栈是用于存放函数调用时的局部变量、返回地址等运行时数据,而非代码本身。此错误属于对进程地址空间布局理解有误。但学生正确指出了scanf()和printf()需要驱动程序,这部分正确。
扣分:由于对main()函数代码位置的回答错误,扣除此小题的大部分分数。考虑到其正确指出了需要驱动程序的函数,给予部分分数。得1分。
(3)得分及理由(满分3分)
学生答案(综合两次识别):ptr被分配在可读写数据段区域(或运行时堆区域,存在矛盾);length被分配在用户栈区域;ptr指向的字符串位于运行时堆区域。
标准答案:ptr位于读/写数据段;length(若不在寄存器)位于用户栈;ptr指向的字符串位于堆区。
学生答案存在部分逻辑错误和矛盾: 1. 对于ptr的存储位置,第一次识别和第二次识别的总结都提到了“可读写数据段区域”,这是正确的(因为ptr是全局变量)。但第二次识别结果中又出现了“ptr被分配在运行时堆区域”的错误表述,这可能是识别重复或混淆。根据“禁止扣分”原则,若存在识别矛盾,以正确表述为准,此处不因矛盾而额外扣分。 2. length位于用户栈,回答正确。 3. ptr指向的字符串位于运行时堆区域,回答正确。 因此,该小题答案核心内容正确。
得3分。
题目总分:2+1+3=6分
登录后发布评论
暂无评论,来抢沙发