使用mmap读写文件为什么比普通读写函数要快?(转)

Linux通过内存映像机制来提供用户程序对内存直接访问的能力。

内存映像的意思是把内核中特定部分的内存空间映射到用户级程序的内存空间去。也就是说,用户空间和内核空间共享一块相同的内存。这样做的直

观效果显而易见:内核在这块地址内存储变更的任何数据,用户可以立即发现和使用,根本无须数据拷贝。而在使用系统调用交互信息时,在整个操

作过程中必须有一步数据拷贝的工作——或者是把内核数据拷贝到用户缓冲区,或只是把用户数据拷贝到内核缓冲区——这对于许多数据传输量大、

时间要求高的应用,这无疑是致命的一击:许多应用根本就无法忍受数据拷贝所耗费的时间和资源。

转自:http://bbs.chinaunix.net/thread-3607978-1-1.html
 




转载于:https://www.cnblogs.com/ZhangJinkun/p/4535103.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了加速 Linux 文件读写,可以使用 MMAP 文件加速读写技巧。MMAP 是一种内存映射文件的技术,它可以将一个文件映射到进程的虚拟地址空间,从而可以通过内存读写来访问文件使用 MMAP 文件加速读写的步骤如下: 1. 使用 open 函数打开文件,并使用 fstat 函数获取文件大小。 2. 使用 mmap 函数文件映射到进程的虚拟地址空间。 3. 使用 memcpy 函数文件数据从内存复制到缓冲区或者将缓冲区的数据写入到文件中。 4. 使用 munmap 函数解除映射关系,并使用 close 函数关闭文件。 需要注意的是,使用 MMAP 文件加速读写需要注意以下几点: 1. MMAP 文件映射只适用于较小的文件,因为它会将整个文件映射到内存中,如果文件太大,会导致内存占用过高。 2. MMAP 文件映射需要占用虚拟地址空间,如果虚拟地址空间不够,会导致映射失败。 3. MMAP 文件映射的效率受到内存访问速度的影响,对于大量随机访问的文件,可能比传统的读写方式效率低。 除了使用 MMAP 文件加速读写,还可以通过一些其他技巧来加速文件读写,比如: 1. 使用缓冲区,可以减少文件系统的 I/O 操作次数,从而提高文件读写的效率。 2. 使用多线程或者多进程并发读写,可以充分利用多核 CPU 的性能,提高文件读写的效率。 3. 使用 DMA 技术,可以将数据直接从磁盘读取到内存中,避免了 CPU 的中介操作,从而提高了文件读取的效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值