直接I/O

应用程序直接访问磁盘数据,而不经过内核缓冲区,这样做的目的是减少一次从内核缓冲区到用户程序缓存的数据复制。

使用mmap替代read,可以减少CPU拷贝次数。当应用程序调用mmap()之后,数据通过DMA拷贝到内核缓冲区,应用程序和操作系统共享这个缓冲区。这样,操作系统内核和应用程序存储空间不再需要进行任何的数据拷贝操作。

对应用程序地址空间和内核空难攻坚的数据传输进行优化的零拷贝技术

对数据在Linux页缓存和用户进行缓冲区之间的传输进行优化。该零拷贝技术侧重于灵活的处理数据在用户进程中缓冲区和操作系统的页缓冲区之间的拷贝操作。这种方式延续了传统的通信方式,但是更加灵活。Linux中该方法主要利用写时复制技术。

写时复制技术是计算机编程中常见的一种优化策略,基本思想是这样的:如果多个应用程序需要同时访问同一块数据,那么可以为这些应用程序分配指向这块数据的指针,在每个应用程序看来,他们都拥有这块数据的一份拷贝,当其中一个应用程序需要对自己的这份数据进行修改时,就需要将数据真正的拷贝到应用程序的地址空间去。如果应用程序永远不会对这块数据进行修改。那么就永远不需要将数据拷贝到应用程序的地址空间中。