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

相关推荐
IT爱学堂2 分钟前
新版Linux零基础入门到高手Rocky版本-替换CentOS(完结)
linux·运维·centos
kkkkkkkkkk_Z11 分钟前
学嵌入式和Linux应用编程|学习日记:计算机网络基础
linux·学习·计算机网络
蒸蒸yyyyzwd31 分钟前
cpp选手秋招学习笔记day24-cs144项目总结
运维·服务器·网络
ang78436 分钟前
日常高频使用的 Ansible 命令,按使用频率和场景整理。
linux·运维·服务器
高亦真1 小时前
今天是学习嵌入式的第35天
linux·学习·算法
翼龙云_cloud1 小时前
腾讯云国际代理商:如何用云服务器快速部署WorkBuddy AI助手?
服务器·人工智能·云计算·腾讯云
mounter6251 小时前
eBPF 驱动的云原生网络变革:Cilium 的前世今生与全机套接字迭代技术演进
linux·ebpf·linux kernel·kernel
赵庆明老师1 小时前
用同一个用户登录宝塔面板的ftp与Linux的sftp
linux·运维·服务器
oushaojun21 小时前
深入理解 Linux I2C 框架:内核子系统分层解析(转)
linux
山君爱摸鱼2 小时前
堡垒机远程服务器故障收集
运维·服务器