文章
108
粉丝
40
获赞
1
访问
4.6k
1)PCB位于内核区,当执行scanf()等待键盘输入的时候,进程处于阻塞态
2)main函数的代码位于只读数据代码区,当调用printf()和scanf()的时候需要靠驱动程序实现
3)ptr被分配到栈区,如果length没有被分配到寄存器中,会被分配到栈区,ptr指向的字符位于堆区
评分及理由
(1)得分及理由(满分2分)
学生答案正确。PCB(进程控制块)位于内核区,执行scanf()等待键盘输入时,进程因等待I/O操作完成而处于阻塞态。得2分。
(2)得分及理由(满分3分)
学生答案部分正确。main()函数的代码位于只读代码段(学生答“只读数据代码区”表述不够准确但意思正确,不扣分)。其直接调用的scanf()和printf()函数需要通过执行驱动程序实现(学生答案正确)。但学生未提及strlen()函数,该函数是库函数,不需要驱动程序,但题目问的是“直接调用的哪些函数”,标准答案只要求回答scanf和printf,因此学生答案正确。得3分。
(3)得分及理由(满分3分)
学生答案部分正确。变量ptr是全局变量,应分配在可读写数据段(学生错误答为“栈区”)。变量length是局部变量,若未分配在寄存器中,则分配在用户栈(学生答案正确)。ptr指向的字符串是通过malloc动态分配的,位于运行时堆(学生答案正确)。因ptr分配区域错误,扣1分。得2分。
题目总分:2+3+2=7分
登录后发布评论
暂无评论,来抢沙发