1

通常,静态变量和全局变量都根据它们的初始化条件存储在 .data 或 .bss 部分中。据说它们的生命周期是从程序的开始到结束,也知道在分页管理需要时程序作为页加载到内存中。这是否意味着 .data 和 .bss 部分都应该在访问之前或在第一条指令执行之前加载到内存中?

4

1 回答 1

2

您在这里处理两个抽象级别。程序中访问的所有内容都在虚拟地址空间中,并且 .data/.bss 部分在程序执行开始时可用。更深层次的抽象是,虚拟地址空间由使用分页的物理内存支持,由内存管理器管理。这对于执行代码和加载进程的代码是完全未知的。因此,在这个级别,.data/.bss 的某些部分(甚至您的代码)可能不存在于主内存中,因为尚未加载物理页面,通常这些将按需加载,因为它们对应的虚拟地址被引用.

谷歌诸如“内存管理”、“虚拟内存”、“分页”之类的东西以获取更多信息。

于 2012-05-03T03:16:12.667 回答