当前位置: 技术问答>linux和unix
linux下用mmap实现共享内存的时候open和shm_open有什么区别
来源: 互联网 发布时间:2017-05-30
本文导语: open一个文件 和 shm_open一个文件,然后用mmap把它映射入内存,两者之间有什么区别。 我只知道shm_open打开的文件在 /dev/shm下面,其他没看出来,性能上有区别吗? 另外,我看到说 只有调用munmap 或 msync的时候才...
open一个文件 和 shm_open一个文件,然后用mmap把它映射入内存,两者之间有什么区别。 我只知道shm_open打开的文件在 /dev/shm下面,其他没看出来,性能上有区别吗?
另外,我看到说 只有调用munmap 或 msync的时候才会把数据写入到磁盘,但我没有调用这两个函数之前让程序sleep,然后用cat打开文件也能看到数据,就是说数据已经写入磁盘了。 那么这样性能不是很差吗。
另外,我看到说 只有调用munmap 或 msync的时候才会把数据写入到磁盘,但我没有调用这两个函数之前让程序sleep,然后用cat打开文件也能看到数据,就是说数据已经写入磁盘了。 那么这样性能不是很差吗。
|
不设置share就不会写盘。
|
shm_open主要打开一个共享内存用户进程间交换大量数据
mmap可以用于交换数据,也可以映射文件,很方便的。
linux操作系统写文件没你想象那么简单,有缓存机制的,你cat文件的内容不一定是来自硬盘。
而mmap除了msync,munmap也会在适当时机写入硬盘。
mmap可以用于交换数据,也可以映射文件,很方便的。
linux操作系统写文件没你想象那么简单,有缓存机制的,你cat文件的内容不一定是来自硬盘。
而mmap除了msync,munmap也会在适当时机写入硬盘。
|
shm_open内存共享主要功能还是作为一种便捷的ipc通信机制