linux共享内存演进

shm与mmap区别

1 mmap

mmap共享内存原理:

是将进程虚拟地址空间映射到磁盘上的一个普通文件,这样每个进程访问时会通过pagefault机制分配各自不同的物理内存。

优点:储存量可以很大(多于主存),重启数据不会丢失;

缺点:进程读写速度要比主存的要慢。

2 shm

shm共享内存原理:

是将进程虚拟地址空间映射到tmpfs虚拟内存文件系统上的一个临时文件,而tmpfs的存储空间是物理内存或swap分区,所以每个进程最终访问的是同一块物理内存。

优点:进程间访问速度(读写)比磁盘要快;

缺点:储存量不能非常大(多于主存),重启数据会丢失。

使用上看:如果分配的存储量不大,那么使用shm;如果存储量大,那么使用mmap。相对于shm来说,mmap更加简单,调用更加方便,所以这也是大家都喜欢用的原因。

mmap是共享了文件,shm是共享了内存。

3 dma-buf

mmap和shm共享内存的使用者都是进程,所以为解决不同drivers之间也可以共享内存引入了dma-buf软件框架。

dma-buf共享内存原理:

是将设备地址空间映射到同一块物理内存,并将这块物理内存与file关联,通过传递fd实现不同drivers访问同一块共享物理内存。
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值