Skip to content

2025年 408 操作系统 第 46 题

操作系统2025年综合题8分

题目 ​

某进程的虚拟地址空间布局如下图所示(阴影部分为未占用区域):

图(文字版):从高地址到低地址依次为

  • 操作系统内核区(最高)
  • 用户栈
  • (未占用阴影)
  • 共享库的存储映射区
  • (未占用阴影)
  • 动态生成的堆(运行时由 malloc 创建)
  • 读/写数据段
  • 只读代码段
  • 未使用区(最低)

image-20260501134945984

有 C 程序:

c
char *ptr;

void main() {
    int length;
    ptr = (char *) malloc(100);
    scanf("%s", ptr);
    length = strlen(ptr);
    printf("length=%d\n", length);
    free(ptr);
}

请回答:

(1) 上述程序执行时,PCB 位于哪个区域?执行 scanf() 等待键盘输入时,进程处于什么状态?

(2) main() 函数的代码位于哪个区域?其直接调用的哪些函数的功能需要通过执行驱动程序实现?

(3) 变量 ptr 被分配在哪个区域?若变量 length 没有被分配在寄存器中,则会被分配在哪个区域?ptr 指向的字符串位于哪个区域?

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题