虚拟内存为每个进程提供了一个假象,让每个进程以为在独占地使用主存。所以每个进程看到的内存都是一致的,称为虚拟地址空间。下图是Linux进程的虚拟地址空间。
(地址是从下往上增长的)
一下从最低的地址考试,逐步向上介绍:
程序代码和数据:对于所有的进程来说,代码是从同一固定地址开始,紧接着是进程的代码和数据区。
堆:代码和数据区之上的是运行时的堆,当调用malloc时,会让堆空间向上增长;当调用free时,会让堆空间向下收缩。
共享库:该位置大概在地址空间的中间部分,用于存放像C标准库和数学库这样的共享库代码和数据。
栈:在虚拟地址空间顶部的是用户栈。栈是向下增长的。
内核虚拟内存:地址空间顶部的区域是为内核保留的,不允许应用程序来读写该区域。
(该博文内容来自《深入理解计算机系统(原书第三版)》,在后续会更新本文内容,如有错误,望请读者纠正。)
虚拟内存
最新推荐文章于 2024-07-22 15:29:24 发布