![使用 shmget() 和 shmat() 共享内存](https://linux22.com/image/218321/%E4%BD%BF%E7%94%A8%20shmget()%20%E5%92%8C%20shmat()%20%E5%85%B1%E4%BA%AB%E5%86%85%E5%AD%98.png)
shmget()
我们可以使用和创建共享内存并将其附加到进程shmat()
。如果我们不销毁和分离 Ubuntu 操作系统中的共享内存,会发生什么?根据我的理解,在系统重新启动之前它仍然会存在于物理内存中,但这是为什么呢?我的意思是,我们可以通过创建多个共享内存块来加载许多共享内存块的物理内存,但这会低效地填满物理内存???
答案1
从实现的角度来看,它与ramdisk内的文件系统没有太大区别,Linux就是这样实现的。
如果在退出程序之前不删除创建的文件,该文件将继续存在并消耗资源。
SystemV SHM 很少使用,这样做的唯一原因是它保证映射将由匿名内存支持,并且不会在更改时生成磁盘写入,并且以可移植的方式执行此操作。