什么是零拷贝

我们首先来认识一下传统的I/O操作
假如说用户进程现在要把一个文件复制到另一个地方。
那么用户程序必须先把这个文件读入内存,然后再把内存里的数据写入另一个文件。
不过文件读入内存也不是直接读入用户进程的内存,而是先读入操作系统内核的内存,然后再从操作系统内核的内存区读到用户进程的内存。
与之对应的是,写文件也不是直接写到磁盘上的文件,而是用户进程先把自己内存的数据传到操作系统内核的内存,然后再从操作系统内核的内存区写到磁盘。而这其中涉及到诸多的系统调用
因此看上去简单的操作至少要分为四部
1磁盘文件读入操作系统
2操作系统读到用户进程
3用户进程写到操作系统
4操作系统写入磁盘文件

零拷贝和传统I/O有和不同?
零拷贝就是指,传输一个文件的时候,不需要把文件读到用户进程再处理,而是直接把文件读到操作系统一个内存区,然后再移动到操作系统的另一个内存区,最后写入文件。
这样一来,步骤变成这样:
1磁盘文件读入操作系统
2操作系统把数据写入操作系统另一个区域
3操作系统写入磁盘文件
虽然只少了一步,但是这里不仅减少了数据移动的时间损耗,而且减少了系统调用的次数,因此大大缩短了时间。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值