内存映射mmap

1、什么是内存映射

内存映射,准确来说是指内存映射文件,即把磁盘上的文件映射到进程的虚拟地址空间中(在磁盘上)。当进程需要访问这段虚拟地址时,发生缺页中断,这样就会把页面swap进物理内存。

这其中只发生了一次DMA拷贝,即把页面从磁盘拷贝到内核空间的页缓存 (page cache),然后将用户空间的虚拟地址映射到内核的page cache,这样不需要再将页面从内核空间拷贝到用户空间了。

如果进程改变了页面的内容,一段时间后,OS会把脏页面写回到磁盘。

2、内存映射的优点

内存映射可以只加载文件的一部分内容进内存,而不用将整个文件全部加载,这非常适合对大文件的访问。

3、常见用途

①Netty中使用的零拷贝技术,实际上就是指零CPU拷贝,即不需要将页面从内核空间拷贝到用户空间,仅需要DMA拷贝,这其中就是使用了内存映射技术。

②内存映射还可以用于进程间的通信,即多个进程的用户空间同时映射到内核的page cache,这样就能共享这一片内存区域了。

参考资料:维基百科 内存映射文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值