请解释数据从磁盘读取到通过网卡发送的完整流程中,在传统内核路径下数据会在内存中被拷贝几次?并说明零拷贝技术如何减少这些拷贝。
考察说明
考察操作系统I/O路径、用户态与内核态切换及零拷贝原理
回答思路
- 准确描述读文件到发送网络数据的标准流程及两次上下文切换
- 指出传统路径中DMA拷贝与CPU拷贝的次数(通常为4次拷贝)
- 说明read、write系统调用过程中的用户缓冲区与内核缓冲区角色
- 解释sendfile、mmap、splice等零拷贝机制减少的拷贝次数
- 结合DMA技术说明设备与内存间传输不占用CPU