在Linux中,当我们使用共享内存在两个或多个进程之间共享数据时,共享内存在哪里被分配?
它会在运行时成为进程地址空间的一部分吗?因为进程无法访问其地址空间之外的内存。
有人可以澄清一下吗?
答案 0 :(得分:4)
当您拥有共享内存时,该内存将映射到共享内存的每个进程的虚拟地址空间(不一定在每个进程中的相同虚拟地址)。虚拟内存管理器确保虚拟地址都映射到相同的物理地址,以便实际发生共享。
答案 1 :(得分:0)
假设系统V:一个进程占用内存,该内存在其进程空间内分配,并通过IPC提供给其他人。共享它的最常用方法是将内存映射到另一个进程的虚拟地址空间。在这种情况下,他们可以访问内存,就像它是赢得地址空间的一部分一样。