Linux 中的零拷贝技术,第 2 部分.docxVIP

  • 2
  • 0
  • 约1.36万字
  • 约 13页
  • 2018-08-23 发布于江苏
  • 举报
Linux 中的零拷贝技术,第 2 部分

Linux 中的直接 I/O 如果应用程序可以直接访问网络接口存储,那么在应用程序访问数据之前存储总线就不需要被遍历,数据传输所引起的开销将会是最小的。应用程序或者运行在用户模式下的库函数可以直接访问硬件设备的存储,操作系统内核除了进行必要的虚拟存储配置工作之外,不参与数据传输过程中的其它任何事情。直接 I/O 使得数据可以直接在应用程序和外围设备之间进行传输,完全不需要操作系统内核页缓存的支持。关于直接 I/O 技术的具体实现细节可以参看 developerWorks 上的另一篇文章”Linux 中直接 I/O 机制的介绍” ,本文不做过多描述。 图 1. 使用直接 I/O 的数据传输 ? 针对数据传输不需要经过应用程序地址空间的零拷贝技术 利用 mmap() 在 Linux 中,减少拷贝次数的一种方法是调用 mmap() 来代替调用 read,比如: tmp_buf = mmap(file, len); write(socket, tmp_buf, len); 首先,应用程序调用了 mmap() 之后,数据会先通过 DMA 拷贝到操作系统内核的缓冲区中去。接着,应用程序跟操作系统共享这个缓冲区,这样,操作系统内核和应用程序存储空间就不需要再进行任何的数据拷贝操作。应用程序调用了 write() 之后,操作系统内核将数据从原来的内核缓冲区中拷贝到与 socket 相

文档评论(0)

1亿VIP精品文档

相关文档