相关疑难解决方法(0)

exe文件的大小与可用内存的大小

我已经了解了PE文件如何映射到内存中?,这不是我要求的.

我想知道PE文件的哪些部分(数据,文本,代码......)总是被加载器完全加载到内存中,无论条件是什么?

根据我的理解,没有任何部分(代码,数据,资源,文本......)总是完全加载,它们在需要时逐页加载.如果几页代码(中间或末尾)不需要处理用户的请求,那么这些页面将不会总是被加载.

我已经尝试使用大量带有/不带资源的代码制作exe文件,这两种资源都没有被使用,但是,每次exe加载到内存中时,它需要的内存比文件大小多.(我可能一直在查看任务管理器中错误的内存列)

Matt Pietrek在这里写道

值得注意的是,PE文件不仅仅作为单个内存映射文件映射到内存中.相反,Windows加载程序查看PE文件并确定要映射的文件的哪些部分.

内存中的模块表示进程所需的可执行文件中的所有代码,数据和资源.可以读取PE文件的其他部分,但不映射(例如,重定位).某些部分可能根本没有映射,例如,当调试信息放在文件末尾时.

简而言之,

1-有一个大小为1 MB的exe,可用内存(物理+虚拟)小于1 MB,加载器总是拒绝加载是否一致,因为可用内存小于文件大小?

2-如果大小为1 MB的exe在加载时开始运行2 MB内存(开始运行第一行用户代码),而可用内存(物理+虚拟)为1.5 MB,则加载程序始终拒绝加载是否一致,因为没有足够的记忆?

3-有一个大小为50 MB的exe(大量的代码,数据和资源),但它需要500 KB来运行第一行用户代码,如果可用内存,这个exe将始终运行第一行代码是一致的(物理+虚拟)至少是500 KB?

memory windows portable-executable sections

5
推荐指数
0
解决办法
882
查看次数

标签 统计

memory ×1

portable-executable ×1

sections ×1

windows ×1