社区
Linux/Unix社区
帖子详情
linux下用mmap实现共享内存的时候open和shm_open有什么区别
wind19
2013-09-23 07:37:03
open一个文件 和 shm_open一个文件,然后用mmap把它映射入内存,两者之间有什么区别。 我只知道shm_open打开的文件在 /dev/shm下面,其他没看出来,性能上有区别吗?
另外,我看到说 只有调用munmap 或 msync的时候才会把数据写入到磁盘,但我没有调用这两个函数之前让程序sleep,然后用cat打开文件也能看到数据,就是说数据已经写入磁盘了。 那么这样性能不是很差吗。
...全文
2313
7
打赏
收藏
linux下用mmap实现共享内存的时候open和shm_open有什么区别
open一个文件 和 shm_open一个文件,然后用mmap把它映射入内存,两者之间有什么区别。 我只知道shm_open打开的文件在 /dev/shm下面,其他没看出来,性能上有区别吗? 另外,我看到说 只有调用munmap 或 msync的时候才会把数据写入到磁盘,但我没有调用这两个函数之前让程序sleep,然后用cat打开文件也能看到数据,就是说数据已经写入磁盘了。 那么这样性能不是很差吗。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
YouCompleteMe
2014-10-11
打赏
举报
回复
/dev/shm 目录下的tmpfs文件系统是基于内存的文件系统
sjjwan
2014-05-04
打赏
举报
回复
2
对于mmap函数而言,shm_open与open函数打开一个文件没有什么区别,只是shm_open函数是在/dev/shm目录上生成一个文件,而且会校验该目录下是不是挂载了tmpfs文件系统,如果不是也不能正常打开的。所以一般还是用shm_open函数更规范一些,因为这个文件存在tmpfs文件系统下,在不用的情况系统会自动删除掉。
wind19
2013-09-26
打赏
举报
回复
版主啊,鸡冻一下先。 但是我没有设置share,在程序退出之后,还是可以用用cat看到文件内容。 还有,用shm_open 和 open打开一个文件,对于共享内存有区别吗?
qiyu1988
2013-09-24
打赏
举报
回复
shm_open内存共享主要功能还是作为一种便捷的ipc通信机制
qq120848369
2013-09-24
打赏
举报
回复
不设置share就不会写盘。
wind19
2013-09-24
打赏
举报
回复
open打开的不是也可以进行内存共享吗? 因为 mmap也会把它映射进内存。 另外,有没有什么办法让mmap不写磁盘,即便程序退出也不写。
Carl_CCC
2013-09-23
打赏
举报
回复
shm_open主要打开一个共享内存用户进程间交换大量数据 mmap可以用于交换数据,也可以映射文件,很方便的。 linux操作系统写文件没你想象那么简单,有缓存机制的,你cat文件的内容不一定是来自硬盘。 而mmap除了msync,munmap也会在适当时机写入硬盘。
shm
_
linux
共享句柄_
总结来说,`
shm
_
linux
共享句柄`涉及的是
Linux
环境下利用`mfd_create`高效
实现
共享内存
的方法,它简化了内存共享的流程,提高了数据交换的速度,并且通过文件描述符提供了更多的控制和管理可能性。`
shm
send.c`和`...
XXX_16xxx65_xxx898_
共享内存
_xxxbb12345_内存共享_
2. **映射内存**:创建后,我们需要将
共享内存
映射到进程的地址空间,这可以通过`ftruncate()`设置大小,然后用`
mmap
()`函数
实现
。 ```cpp size_t size = 1024; // 假设我们需要1KB的
共享内存
ftruncate(
shm
_fd, ...
进程间通讯---
共享内存
的使用方法
在
Linux
系统中,通常使用POSIX API来操作
共享内存
。主要包括以下几个关键函数: 1. `
shm
_
open
()`: 这个函数用于创建或打开一个
共享内存
对象。它类似于文件系统的`
open
()`函数,但返回的是一个文件描述符,而非...
linux
内存共享源代码
总的来说,通过学习这个"
Linux
内存共享源代码",我们可以深入理解
Linux
下的
共享内存
机制,这对于开发多进程应用、提高系统效率、优化资源利用等方面都有很大的帮助。同时,掌握这种通信方式也是成为一名合格的
Linux
...
linux
使用c++
共享内存
,信号量同步,进程间通信
Linux
下使用C++进行进程间通信时,
共享内存
和信号量是非常有用的工具。
共享内存
负责数据的快速传递,而信号量则负责确保数据的一致性和同步。正确地
实现
和使用这两种机制可以极大提升多进程应用的性能,同时保证数据...
Linux/Unix社区
23,216
社区成员
74,539
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章