【发布时间】:2014-12-12 13:46:51
【问题描述】:
我正在做一个项目。许多进程共享内存意味着它们在内核中使用相同的物理内存地址。
只是一个前任:- 系统中可能有多个运行 bash 命令 shell 的进程。与其在每个进程的虚拟地址空间中拥有多个 bash 副本,不如在物理内存中只有一个副本,并且所有运行 bash 的进程共享它。
现在,我正在维护引用计数,以了解有多少进程正在使用该资源,并在正常终止时引用计数变为零时释放资源。但是异常终止会发生什么?
到目前为止,我读到如果一个进程异常终止,那么 linux 会释放它的资源并清除它的内存。那么,它是否也会清除其他进程共享的物理内存?如果不是,那么我应该如何知道哪个进程异常终止(数百个进程正在运行,并且每秒都有新进程被创建和终止),因为我将不得不减少引用计数,否则引用计数将永远不会变为零和与之关联的资源永远不会被释放。
【问题讨论】:
标签: c linux process linux-kernel shared-memory