什么是零拷贝?

一、什么是零拷贝?

        零拷贝就是指在操作系统中,通过各种方式来减少数据拷贝的次数或者说,减少cpu参与数据拷贝的次数。

二、常见的零拷贝方法

  • DMA

        DMA全称Direct Memory Access。顾名思义,DMA的作用就是直接将IO设备的数据拷贝到内核缓冲区中。使用DMA的好处就是从IO设备到内核缓冲区不需要cpu的参与。

  • mmap

        在正常的read+ write流程中,都会经历至少四次数据拷贝。分别是:

                read过程用户空间到内核空间的拷贝、内核空间到用户空间的拷贝

                write过程:用户空间到内核空间的拷贝、内核空间到用户空间的拷贝

        mmap就是为了解决内核态到用户态的零拷贝,mmap全称 memory map 内存映射,就是将内核态和用户态的内存映射到一起,避免来回拷贝。使用mmap代替read操作,mmap+ write的方式,内存拷贝的次数变为3次。

  • sendfile

        如果只是传输数据,并不对数据作任何处理,譬如将服务器存储的静态文件,如htl,js发送到客户端用于浏览器渲染,在这种场景下,如果依然进行这么多数据拷贝和上下文切换,简直就是丧心病狂有木有!所以我们就可以通过sendfile的方式,只做文件传输,而不通过用户态进行干预。

相关推荐

  1. 什么拷贝

    2024-04-27 01:34:03       14 阅读
  2. 什么拷贝和深拷贝

    2024-04-27 01:34:03       25 阅读
  3. 拷贝技术

    2024-04-27 01:34:03       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-27 01:34:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-27 01:34:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-27 01:34:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-27 01:34:03       20 阅读

热门阅读

  1. 【QEMU系统分析之启动篇(八)】

    2024-04-27 01:34:03       12 阅读
  2. 【C++】1 两数之和

    2024-04-27 01:34:03       11 阅读
  3. 算法:图遍历

    2024-04-27 01:34:03       12 阅读
  4. 启动MySQL服务后

    2024-04-27 01:34:03       13 阅读
  5. MySQL生成日期序列与表关联的 SQL 查询

    2024-04-27 01:34:03       15 阅读
  6. Scrapy

    Scrapy

    2024-04-27 01:34:03      12 阅读
  7. 【嵌入式笔试题】C语言笔试题(4)

    2024-04-27 01:34:03       13 阅读
  8. C# 异步编程模型(APM)的深入理解

    2024-04-27 01:34:03       12 阅读
  9. VUE DPlayer编译

    2024-04-27 01:34:03       15 阅读
  10. Docker

    Docker

    2024-04-27 01:34:03      11 阅读
  11. python高级进阶(四)[模块、包、异常]

    2024-04-27 01:34:03       13 阅读
  12. C++之特殊类的设计

    2024-04-27 01:34:03       14 阅读
  13. 得物sign参数逆向分析与Python算法还原

    2024-04-27 01:34:03       13 阅读