2010-10-14 280 views
3

在Linux中,当我们在使用共享内存的两个或多个进程之间共享数据时,共享内存分配到哪里?共享内存在哪里分配?

它会在运行时成为进程地址空间的一部分吗?因为进程无法访问其地址空间之外的内存。

有人能澄清一下吗?

回答

4

当您拥有共享内存时,该内存将被映射到共享内存的每个进程的虚拟地址空间中(不一定在每个进程中的虚拟地址相同)。虚拟内存管理器确保虚拟地址映射到相同的物理地址,以便实际共享。

+0

谢谢Adam!它会成为进程地址空间中任何段的一部分吗?像堆或数据段? – Teja 2010-10-14 00:55:44

0

假设系统V:一个进程需要在其进程空间内分配的内存,并通过IPC使其他人可用。分享它最常见的方式是将内存映射到其他进程的虚拟地址空间。在这种情况下,他们可以访问内存,就好像它们是他们赢得的地址空间的一部分。