通常,静态变量和全局变量都根据其初始化条件存储在.data或.bss部分中。据说它们的生命周期是从程序的开始到结束,也知道在分页管理中,程序是以页的形式加载到内存中的。这是否意味着在访问.data和.bss段之前,或者在第一条指令执行之前,都应该将它们加载到内存中?
发布于 2012-05-03 11:16:13
您在这里处理的是两个级别的抽象。程序中访问的所有内容都在虚拟地址空间中,.data/.bss部分在程序执行开始时可用。更深层次的抽象是,虚拟地址空间由使用分页的物理内存支持,由内存管理器管理。这对于执行代码和加载进程的代码来说是完全未知的。因此,在这个级别上,.data/.bss的某些部分(甚至您的代码)可能不存在于主内存中,因为物理页面尚未加载,通常这些页面将根据需要加载,因为它们对应的虚拟地址被引用。
谷歌像“内存管理”,“虚拟内存”,“分页”这样的东西来获取更多信息。
https://stackoverflow.com/questions/10424286
复制相似问题