零拷贝
2020-12-01 14:48:38 1 举报
AI智能生成
零拷贝
作者其他创作
大纲/内容
基础概念
内存
物理内存
插在主板内存槽上的内存条
虚拟内存
为每个进程提供独有的地址空间,给进程有独享内存的错觉
进程页表
每个进程维护一个虚拟内存到物理内存的地址空间映射表
linux层级结构
用户空间
每个进程有一个独立的用户空间
用户空间不能直接访问内核空间的数据和函数
用户空间需要发起系统调用,上下文切换,将用户态切换成内核态
内核空间
所有内核进程共用一个内核空间
可以访问受保护的内存空间
具备访问底层硬件设备的权限
硬件
上下文切换
用户程序发起系统调用时,CPU将用户进程从用户态切换成内核态
系统调用返回时,CPU将用户进程从内核态切换成用户态
CPU I/O 中断
每次中断都会导致上下文切换
CPU拷贝
CPU负责数据的拷贝,数据传输过程中一直占用CPU资源
DMA拷贝
CPU向DMA下达指令,由DMA控制器负责拷贝数据,只需要将结果反馈给CPU,拷贝过程不占用CPU资源
外围设备绕过CPU调度,通过DMA控制器直接访问内存
实现方式
mmap
1次CPU拷贝,2次DMA拷贝,4次上下文切换
MappedByteBuffer
sendfile
1次CPU拷贝,2次DMA拷贝,2次上下文切换
意义
减少用户地址空间和内核地址空间的上下文切换次数
减少数据在用户缓冲区和内核缓冲区I/O到拷贝次数
0 条评论
下一页