文章

91

粉丝

68

获赞

0

访问

5.7k

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

(1)上述程序执行时,其进程控制块位于只读代码段,执行scanf( )等待键盘输入时,该进程处于阻塞状态.

(2)main( )函数的代码位于可读写数据段。 其直接调用的哪些函数的功能需要通过执行驱动程序实现:scanf();     printf();

(3)变量ptr被分配在用户栈,若变量length没有被分配在寄存器中,则会被分配在可读写数据段。ptr指向的字符串位于运行时堆。


评分及理由

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

得分:1分

理由:学生答案包含两部分。第一部分“进程控制块位于只读代码段”是错误的,进程控制块(PCB)是操作系统内核管理进程的数据结构,应位于内核区,而非用户进程的只读代码段,这是一个逻辑错误,扣1分。第二部分“执行scanf()等待键盘输入时,该进程处于阻塞状态”是正确的,因此该部分得1分。

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

得分:2分

理由:学生答案包含两部分。第一部分“main()函数的代码位于可读写数据段”是错误的,函数代码(包括main函数)应位于只读代码段(.text段),而非可读写数据段,这是一个逻辑错误,扣1分。第二部分“其直接调用的哪些函数的功能需要通过执行驱动程序实现:scanf(); printf();”是正确的,这两个函数涉及I/O操作,最终需要调用驱动程序,因此得2分。

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

得分:1分

理由:学生答案包含三部分。第一部分“变量ptr被分配在用户栈”是错误的,ptr是全局变量,应分配在可读写数据段(.data或.bss段),这是一个逻辑错误,扣1分。第二部分“若变量length没有被分配在寄存器中,则会被分配在可读写数据段”是错误的,length是main函数内的局部变量,应分配在用户栈上,这是一个逻辑错误,扣1分。第三部分“ptr指向的字符串位于运行时堆”是正确的,因为字符串存储在通过malloc动态分配的内存中,因此得1分。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发