NIO和零拷贝

NIO和零拷贝

零拷贝是指没有cpu拷贝

ps:DMA:直接内存拷贝,不经过cpu

传统IO模型

四次拷贝,三次状态的切换

mmap优化

通过内存的映射,将文件映射到内核缓冲区,且用户空间可以共享内核空间的数据,于是在进行网络传输的时候可以减少内核空间到用户空间的拷贝次数
三次拷贝,三次状态的切换

sendFile优化

数据不经过用户态,从内核缓冲区进入socketbuffer,减少一次上下文切换

Linux2.1版本

三次拷贝,两次状态的切换

Linux2.4版本

虽然有一次cpu拷贝,但是拷贝的信息很少,都是一些length、offset等信息,可以忽略不记

两次拷贝,两次状态的切换

mmap和零拷贝的区别
  1. mmap适合小数据量,sendFile适合大文件的传输

  2. mmap需要四次状态的切换,3次数据拷贝;sendFile需要三次状态切换,2次数据拷贝

  3. sendFile可以利用DMA减少CPU拷贝,mmap必须要从内核态拷贝到socketbuffer

相关推荐
鱼跃鹰飞1 小时前
Leetcode:97.交错字符串
linux·服务器·leetcode
Doro再努力1 小时前
【Linux操作系统07】包管理器与Vim编辑器:从理论到实践的全面解析
linux·编辑器·vim
XRJ040618xrj2 小时前
Nginx下构建PC站点
服务器·前端·nginx
m0_737302582 小时前
云服务器深度解析:技术内核、应用场景与上云避坑指南
服务器
Coder个人博客2 小时前
Linux6.19-ARM64 mm mmap子模块深入分析
大数据·linux·安全·车载系统·系统架构·系统安全·鸿蒙系统
江畔何人初2 小时前
/etc/profile,.profile,.bashrc三者区分
linux·运维·云原生
会飞的土拨鼠呀2 小时前
Ubuntu系统缺少 iptables 工具
linux·运维·ubuntu
前端玖耀里2 小时前
详细介绍Linux命令dig和nslookup
linux·运维·服务器
呱呱巨基2 小时前
Linux 第一个系统程序 进度条
linux·c++·笔记·学习
星期五不见面3 小时前
jetson naon super使用 sudo /opt/nvidia/jetson-io/jetson-io.py 界面闪退
linux·运维·服务器