![进程间通信中的共享内存](https://linux22.com/image/593052/%E8%BF%9B%E7%A8%8B%E9%97%B4%E9%80%9A%E4%BF%A1%E4%B8%AD%E7%9A%84%E5%85%B1%E4%BA%AB%E5%86%85%E5%AD%98.png)
我研究过,为了使进程能够相互沟通,它们需要保持各自的临界区在共享内存中,以便其他需要访问的进程可以使用它,使用不同的变量进行互斥,如信号量和锁。
但是这个共享内存位于哪里,是同一个共享内存吗/dev/shm当我们执行 df -h 时我们会看到,/dev/shm 有时会使用一些空间,有时则不会。为什么会这样?
答案1
您可以通过多种方式创建共享内存。您可以内存映射在两个进程中共享的同一个文件。或者您可以使用 sysv 共享内存shm_open
。
我研究过,为了使进程能够相互沟通,它们需要保持各自的临界区在共享内存中,以便其他需要访问的进程可以使用它,使用不同的变量进行互斥,如信号量和锁。
但是这个共享内存位于哪里,是同一个共享内存吗/dev/shm当我们执行 df -h 时我们会看到,/dev/shm 有时会使用一些空间,有时则不会。为什么会这样?
您可以通过多种方式创建共享内存。您可以内存映射在两个进程中共享的同一个文件。或者您可以使用 sysv 共享内存shm_open
。