是否应该在程序执行之前加载存储在.data或.bss部分中的静态或全局数据?

时间:2012-05-03 02:23:57

标签: c linux memory memory-management elf

通常,静态和全局变量都根据其初始化条件存储在.data或.bss部分中。据说它们的生命时间是从程序的开始到结束,并且还已知程序在寻呼管理中需要时作为页面加载到存储器中。这是否意味着.data和.bss部分应该在访问之前或者在第一条指令出现之前加载到内存中?

1 个答案:

答案 0 :(得分:2)

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

谷歌之类的“内存管理”,“虚拟内存”,“分页”等更多信息。