2015-11-02 20 views
0

分配的内存在哪里?新的内存在哪个地址空间中?如何在Windows中实现共享内存?

+0

没有特别的,以及所有这些;操作系统可以将相同部分的物理内存映射到每个共享进程。 – molbdnilo

+0

@david是你提到的那个 – q126y

+0

@david我想知道一般大纲,而不是实际的细节。 – q126y

回答

1

Windows中有两种常见的共享内存类型。

一个是当多个进程将同一个文件映射到内存中时。这显然发生在可执行文件和库中,但它也可能发生在数据文件中。基本上,进程共享这个内存的事实对它的工作方式几乎没有影响。它是通过与单个进程映射的相同请求分页来实现的。

另一种类型是共享的匿名映射。可以通过调用CreateFileMapping函数创建这些函数,而无需指定要映射的有效文件。这与分配内存的行为相同,只是有多个进程可以访问它。就像正常的内存使用情况一样,如果它没有被访问,或者为了某种其他目的需要RAM,它可以被分页到磁盘。

对于共享匿名映射,内核为进程提供内存句柄,以便进程在想要将其映射到其内存空间时可以引用它。