文章
85
粉丝
253
获赞
1
访问
29.2k
本题考察 进程内存空间,题目中给出的内存结构和标准 linux 进程结构由些许差异,主要不同点在于图中的 读/写代码段 将 .bss 和 .data 融合了,考生看到能够理解就可以。
1)进程管理属于操作系统提供的功能,所以 PCB(进程)位于内核区,执行 scanf() 时,进程在等待键盘 I/O,处于阻塞态。
2)main() 函数的代码位于只读代码段(.text),其直接调用的 scanf() 和 printf() 需要执行驱动程序。
3)ptr 是作为全局变量定义的,所以其位于读/写数据段,length 变量在 main 函数中定义,如果该变量不在寄存器中被分配的话,那么就位于用户栈段,ptr 指针指向的内存单元是使用 malloc 函数动态分配的,位于堆区。
评分及理由
(1)得分及理由(满分2分)
学生答案与标准答案完全一致。正确指出进程控制块(PCB)位于内核区,以及执行scanf()等待输入时进程处于阻塞态。得2分。
(2)得分及理由(满分3分)
学生答案与标准答案完全一致。正确指出main()函数代码位于只读代码段(.text),并正确识别出scanf()和printf()需要执行驱动程序。得3分。
(3)得分及理由(满分3分)
学生答案与标准答案完全一致。正确指出全局变量ptr位于读/写数据段,局部变量length(若不在寄存器)位于用户栈,以及malloc分配的内存位于堆区。得3分。
题目总分:2+3+3=8分
登录后发布评论
暂无评论,来抢沙发