【发布时间】:2012-12-27 09:15:02
【问题描述】:
我不清楚进程正在执行时的内存管理 在运行期间
这是一个图表
我不清楚图片中的以下内容:
- 1) 此图像所指的堆栈是什么?
- 2) 什么是内存映射段,指的是文件映射?
- 3) 堆与进程有什么关系。堆是仅在进程中处理还是由操作系统内核维护,然后当用户空间应用程序调用时由 malloc 分配内存空间(使用堆)?
文章提到 http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory/
虚拟地址空间,在 32 位模式下总是一个 4GB 的块 内存地址。这些虚拟地址映射到物理地址 按页表存储,
- 4) 这是否意味着一次只有一个程序在占用整个 4 GB RAM 的内存中运行?
同一篇文章也提到
Linux 通过添加随机化堆栈、内存映射段和堆 到它们的起始地址的偏移量。不幸的是 32 位地址 空间非常紧凑,几乎没有随机化的空间 影响其有效性。
- 5) 是指在进程中随机化堆栈还是指计算所有进程的空间后剩下的东西?
【问题讨论】:
-
问题太多了。
-
实际上已经一个星期了,我还无法理解这篇文章,这就是为什么我发布了即使你可以部分回答这将有助于可能其他人会回答另一部分等等跨度>
标签: c memory memory-management