Winapi 文件的图像

Winapi 文件的图像,winapi,memory-management,paging,virtual-memory,Winapi,Memory Management,Paging,Virtual Memory,当我们说“系统从分页文件中分配足够的存储空间来保存文件的映像”时,文件的映像是什么意思?如果这是,我认为是,您所说的是DLLs和类似的野兽:代码,加载到正在运行的进程中 在这种情况下,整个DLL被映射到(虚拟)内存中,然后该内存被标记为可执行。这样做的需要源于这样一个事实,即代码通常不能从磁盘运行,而需要从内存运行。文件的映像通常是可执行文件的内容。在能够执行应用程序(EXE…,但也包括DLL、SYS…)之前,加载程序将适当的可执行部分(包含在介质上的文件中)复制到内存(映射)。成功完成后,加载

当我们说“系统从分页文件中分配足够的存储空间来保存文件的映像”时,文件的映像是什么意思?

如果这是,我认为是,您所说的是
DLL
s和类似的野兽:代码,加载到正在运行的进程中


在这种情况下,整个DLL被映射到(虚拟)内存中,然后该内存被标记为可执行。这样做的需要源于这样一个事实,即代码通常不能从磁盘运行,而需要从内存运行。

文件的映像通常是可执行文件的内容。在能够执行应用程序(EXE…,但也包括DLL、SYS…)之前,加载程序将适当的可执行部分(包含在介质上的文件中)复制到内存(映射)。成功完成后,加载程序跳转到入口点(内存中)并运行程序。

这是“标准”方式(99%的可执行文件是从文件启动的)。有时,可执行文件不在文件中,而是直接从内存启动,但这是另一回事。映射是否意味着简单地将文件内容从磁盘复制到内存?映射是内存管理器用来使虚拟内存区域可见的一种机制。进行映射时,文件的内容已经在内存中(因此名称为MapViewOfFile-)代码永远不会从磁盘运行。代码必须始终首先映射到内存(因此映射),然后才能运行代码。这就是我所说的!“通常”一词与(旧的)体系结构有关,实际上这是可能的-请看Windows没有这样做,这就是问题所在…”“系统从分页文件分配足够的存储空间来保存文件的image.Yup。这就是为什么我写了“通常代码不能从磁盘运行”“我认为这两个答案过于狭隘地关注可执行文件。文件的类型与此无关。“文件图像”只是该文件的副本。它可能在内存或页面文件中,但无论它在哪里,它仍然只是文件的一个副本。