进程的内存映像

就简单介绍下,关于源程序是如何分布在内存中的


Pasted image 20260709131031.png

  • 首先,假设系统为32位,进程虚拟地址空间为4GB
  • Pasted image 20260709131210.png
  • 读/写数据:包含程序里的*全局变量,静态变量*,你也明白,程序编写过程中这两类变量是不允许更改的
  • 只读代码/数据:包含,程序指令,只读数据。也就是程序编译后的机器指令,和部分只读数据
  • 上述两种区域进程启动时就能确定大小,故而固定不变
  • :由用户自行分配的空间区域,new嘛,malloc嘛
  • 这个就很自由,随着进程的运行而变化嘛
  • 共享库的存储映射区:这一部分呢,就是导入的各种函数包啊,还有库函数啊
  • 用户栈:由各个函数的栈帧组成,包含各局部变量函数调用相关的信息
  • 局部变量存储在此,毕竟是经常变化的变量
  • 函数调用,函数栈就在此处,你明白的,递归可能导致函数栈过多或者溢出导致效率低下
  • 内核区代码就不多赘述
  • 要注意的是进程的管理模块PCB就在此处