【操作系统】MMAP内存映射|零拷贝

 🔥博客主页: 我要成为C++领域大神
🎥系列专栏【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】
❤️感谢大家点赞👍收藏⭐评论✍️

本博客致力于知识分享,与更多的人进行学习交流

MMAP实现的原理

内存映射文件(Memory-Mapped Files):将文件映射到进程的用户空间,使得进程之间可以直接通过内存访问文件内容,从而实现文件内容的共享,而不需要通过传统的读写方式来操作。适用于大型数据的共享和持久化。

使用mmap完成进程间的通信,也是确定通信方向,一个负责编辑修改映射内存,一个负责打印映射内存数据,不要让两端同时修改访问映射内存,会出现数据异常。

私有映射:拷贝映射,将映射文件的数据拷贝一份到映射内存,两份数据独立无关联

共享映射:同步映射,将映射文件的数据映射一份给进程,两份数据建立sync同步机制,对一份数据的修改会立即更新给另一份。

内存映射文件机制通过mmap函数实现。

mmap()

void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);

参数

addr:指定映射的起始地址。通常设为 NULL,表示让操作系统选择合适的地址。

length:指定映射的长度,即要映射的文件或对象的大小。

prot:指定映射区域的保护方式,可以是 PROT_READ(可读)、PROT_WRITE(可写)、PROT_EXEC(可执行)的组合,用来控制映射区域的访问权限。

flags:用来指定映射对象的类型及其属性。常见的标志包括 MAP_SHARED(映射可以被其他进程共享)和 MA

评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值