linux内存shm和mmap,Linux之共享内存shm和内存映射mmap

一、共享内存shm

1 概念:多个进程的地址空间都映射到同一块物理内存,这样多个进程都能看到这块物理内存,实现进程间通信,而且不需要数据的拷贝,所以速度最快。

20190821173656883448.png

二、内存映射mmap

1 前言:先介绍一下普通的读写文件的原理,进程调用read/write系统调用后会陷入内核,内核开始读写文件,假设内核是在读文件,内核先把文件读取到内核缓冲区,然后把内核缓冲区的数据拷贝到用户缓冲区,实际上整个过程拷贝了两次数据,即先从文件到内核缓冲区,再从内核缓冲区到用户缓冲区;

2 概念:把某个文件映射到进程的地址空间,通过对地址空间的读写,实现对文件的读写,mmap系统调用可以使多个进程映射同一个普通文件来实现共享内存。普通文件映射到地址空间后,进程可以像访问内存的方式一样去访问该文件,这样不需要调用read/write系统调用,减少了用户、内核切换的开销;

20190821173657085584.png

三、二者的比较

1 共享内存shm是在内存中创建空间,然后每个进程映射到此处;内存映射mmap是创建一个文件,然后每个进程映射到此处;

2 当机器重启时,mmap把文件保存在磁盘上,所以不会丢失,而共享内存shm存储在内存上就会丢失;

原文:https://www.cnblogs.com/bo1990/p/11388787.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值