exe文件的大小vs可用内存

我已经经历了一个PE文件如何映射到内存? ,这不是我所要求的。

我想知道PE文件的哪些部分(数据,文本,代码,…)总是通过加载器完全加载到内存中,而不pipe条件是什么?

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

我已经尝试了使用/不使用资源的许多代码的exe文件,但是,每次exe加载到内存中时,都会占用比文件大小更多的内存。 (我可能一直在看任务pipe理器中的内存错误列)

马特Pietrek写在这里

注意PE文件不仅仅作为一个内存映射文件映射到内存中是很重要的。 相反,Windows加载程序查看PE文件并决定映射文件的哪些部分。

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

简而言之,

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

2-如果一个大小为1MB的文件在加载时(开始运行第一行用户代码)需要2MB内存,而可用内存(物理+虚拟)是1.5MB,那么加载器总是会拒绝加载,因为没有足够的内存?

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

Solutions Collecting From Web of "exe文件的大小vs可用内存"