我编写了一个C++程序,它使用文件指针读取文件。我需要同时运行多个进程。由于文件的大小可能很大(100 in ~),为了减少多个进程中的内存使用量,我想我需要使用共享内存。因为我认为如果多个进程读取同一个文件,那么每个进程的虚拟内存通过页面表映射到相同的物理内存文件。我读了一个Linux文件,他们说,
虽然虚拟内存允许进程具有独立(虚拟)地址空间,但有时需要进程来共享内存。例如,系统中可能有几个进程运行bash命令shell。Linux支持Unix系统V共享内存IPC。
我想了解MAC OS X“虚拟内存”和Linux/Unix交换的不同之处。
我之所以这么问,是因为我观察到MAC OS X“虚拟内存”的工作效率(在桌面用例中)似乎比Linux/Unix交换更有效。据我理解,MAC OS将未使用的(RAM)数据存储在“虚拟内存”中。以这种方式,它为当前使用的数据/当前运行程序保持RAM空闲。因此,例如,如果我看过一部电影,然后开始渲染一些图像,MAC OS将把电影移到“虚拟内存”中,只有当我重新访问它时,才会将它移到RAM中