文章

161

粉丝

0

获赞

0

访问

32.5k

头像
2025年(408)计算机学科专业基础综合试题 - 第46题回答
操作系统
发布于2025年12月17日 16:56
阅读数 116


评分及理由

(1)得分及理由(满分2分)

学生答案:PCB处于内核区;scanf()等待键盘输入时,进程处于阻塞态。

标准答案:PCB位于内核区;执行scanf()时进程处于阻塞态。

学生回答与标准答案完全一致。得2分。

(2)得分及理由(满分3分)

学生答案:main()函数的代码位于只读代码区;malloc、scanf、printf需要通过执行驱动程序。

标准答案:main()函数的代码位于只读代码段;其直接调用的scanf()和printf()需要执行驱动程序。

分析:第一问正确。第二问中,学生列出了malloc、scanf、printf。malloc是库函数,用于动态内存分配,其功能主要在用户空间的内存管理器中实现,不直接涉及驱动程序。只有涉及I/O操作的scanf和printf才需要通过执行驱动程序实现。因此,学生多答了malloc,这是一个逻辑错误。考虑到题目问的是“直接调用的哪些函数”,且malloc确实被调用,但其功能不通过驱动程序实现,此处应扣分。扣1分。得2分。

(3)得分及理由(满分3分)

学生答案:ptr被分配在运行时堆;length会被分配在可读写数据区;ptr指向的字符串位于用户栈。

标准答案:ptr位于读/写数据段;length位于用户栈段;ptr指向的字符串位于堆区。

分析:
第一问:ptr是全局变量,应位于数据段(可读写数据区),而非运行时堆。学生回答错误,扣1分。
第二问:length是main函数内的局部变量,若不在寄存器中,应位于用户栈。学生回答为“可读写数据区”,错误,扣1分。
第三问:ptr指向的字符串是malloc动态分配的内存,应位于堆区。学生回答为“用户栈”,错误,扣1分。
本小题共扣3分。得0分。

题目总分:2+2+0=4分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发