【发布时间】:2016-01-01 06:27:53
【问题描述】:
情况:
如果进程 a 和 b 各自使用 mmap() 创建共享内存映射,使用相同的共享内存对象 /shm-a 作为备份文件。
我的猜测:
我原本以为只有 1 个内存副本,用于处理写入/读取。
但后来我想他们实际上有 3 个副本,对吧?每个进程都有一个由mmap()创建的副本,第三个副本是共享内存对象,用于在进程之间进行同步,但我不确定。
问题是:
- 那么有多少个内存副本呢? 1 或 n+1(其中 n 是进程计数)
- 如果是n+1,这不是有点浪费内存吗?进程是否可以直接通过其
fd读取/写入共享内存对象?
【问题讨论】:
-
嗯,我想知道如果有多个内存区域,为什么会被称为共享内存......
-
当我分享一本书时,我的本能就是使用复印机!
标签: c linux posix ipc shared-memory