Linux IPC之POSIX共享内存

这篇博客介绍了Linux中的POSIX共享内存,作为System V和文件映射的替代方案,它提供了一种无需文件系统就能让无关进程共享内存区域的方式。文章详细阐述了POSIX共享内存的使用步骤,包括如何打开、映射对象,以及如何管理对象的大小和权限。此外,还提到了其与System V共享内存和文件映射的区别。最后,提供了删除共享内存对象的方法和一个示例链接。
摘要由CSDN通过智能技术生成

导言:System V共享内存和共享文件映射,允许无关进程共享内存区域以便执行IPC通信。但这两种技术都存在一些不足:1. System V共享内存模型使用的是键和标识符,这与标准的UNIX I/O模型使用文件名和描述符的做法是不一致的,这种差异意味着使用System V共享内存段需要一整套全新的系统调用和命令。2. 使用一个共享文件映射来进行IPC要求创建一个磁盘文件,即使无需对共享区域进行持久存储也需要这样做,除了因需要创建文件所带来的不便之外,这种技术还会带来一些文件I/O开销。由于存在这些不足,所以POSIX.1b定义了一组新的共享内存API —— POSIX共享内存。

概述

POSIX共享内存能够让无关进程共享一个映射区域,而无需创建一个相应的文件映射。Linux从内核2.4起开始支持POSIX共享内存。SUSv3并没有对POSIX共享内存的实现细节进行规定,特别是没有要求使用一个(真实或虚拟)文件系统来标识共享内存对象,但是很多UNIX实现都采用了文件系统来标识共享内存对象。一些UNIX实现将共享对象名创建为标准文件系统上一个特殊位置处的文件,Linux使用挂载于/dev/shm目录下的专用tmpfs文件系统,这个文件系统具有内核持久性,即它所包含的共享内存对象会一直持久,即使当前不存在任何进程打开它,但这些对象会在系统关闭之后丢失。

注意:系统上POSIX共享内存区域占据的内存总量受限于底层的tmpfs文件系统的大小,这个文件系统通常会在启动时使用默认大小(如,256MB)进行挂载,如果有必要的话,root用户能够使用命令mount -o rem

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值