丁肃牧优秀作者
原创内容 来源:小居数码网 时间:2024-07-29 18:28:01 阅读() 收藏:53 分享:62 爆
导读:您正在阅读的是关于【数码知识】的问题,本文由科普作家协会,生活小能手,著名生活达人等整理监督编写。本文有746个文字,大小约为4KB,预计阅读时间2分钟。
前戏现代Linux有两种共享内存机制:
其中,System V共享内存历史悠久,一般的UNIX系统上都有这套机制;而POSIX共享内存机制接口更加方便易用,一般是结合内存映射mmap使用。
内存映射机制mmap是POSIX标准的系统调用,有匿名映射和文件映射两种。
相比于IO函数调用,基于文件的mmap的一大优点是把文件映射到进程的地址空间,避免了数据从用户缓冲区到内核page cache缓冲区的复制过程;当然还有一个优点就是不需要频繁的read/write系统调用。
由于接口易用,且可以方便的persist到文件,避免主机shutdown丢失数据的情况,所以在现代操作系统上一般偏向于使用mmap而不是传统的System V的共享内存机制。
建议仅把mmap用于需要大量内存数据操作的场景,而不用于IPC。因为IPC总是在多个进程之间通信,而通信则涉及到同步问题,如果自己手工在mmap之上实现同步,容易滋生bug。推荐使用socket之类的机制做IPC,基于socket的通信机制相对健全很多,有很多成熟的机制和模式,比如epoll, reactor等。
sysv shm的实现可以参考glibc源码,shm_open(3) 打开一个名为abc的共享内存,等价于open("/dev/shm/abc", ..),其中 /dev/shm 是Linux下sysv共享内存的默认挂载点。shm_open调用返回一个文件描述符,其实也可以给 mmap(2) 使用,作为named share memory使用。
sysv shm代码实例:
上面就是小居数码小编今天给大家介绍的关于(Linux共享内存)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。
94%的朋友还想知道的:
(330)个朋友认为回复得到帮助。
部分文章信息来源于以及网友投稿,转载请说明出处。
本文标题:linux共享内存大小(Linux共享内存):http://sjzlt.cn/shuma/152694.html