当进程fork()时,Unix系统如何跟踪共享内存?

时间:2014-11-12 08:35:55

标签: unix memory-management fork shared-memory virtual-memory

进程A 创建共享内存区域并与进程B 共享。然后处理A 分叉,从而创建 Process C 。根据定义, C 现在可以访问相同的共享内存区域。如果 A 死亡, C B 仍然可以访问内存区域。只有当 C B 也死亡时,物理内存才会被释放。

Unix系统如何实现这一目标?他们是否存储有关每个进程共享哪个内存的信息,或者这些信息是否为全局信息?

1 个答案:

答案 0 :(得分:1)

共享内存区域有一个引用计数器。每当进程打开共享内存或通过从打开它的进程分叉获取它时,它就会增加。当进程关闭共享内存或退出时,它会减少。当计数器变为0时,共享内存区域被丢弃。