零拷贝的实现方式分类

www.tech8800.com,

零拷贝的实现方式分类 
直接IO 
    主要是通过减少操作系统内核缓冲区和应用程序地址空间数据拷贝次数,降低对文件读取和写入时带来的CPU使用和带宽的开销。对于某些页数的应用程序,比如说自缓冲应用程序来说,会是一个比较好的选择。如果要传输的数据量大,使用直接IO的方式进行数据传输,而不需要操作系统内核地址空间拷贝数据的参与,这将会提高性能。
    直接IO并不是所有的情况下都有效。设置直接IO的开销非常大,而且不能利用缓存IO的优势。直接IO的读操作会造成磁盘的同步读,执行进程需要在很长的时间才能执行完;而写操作会导致应用程序关闭缓慢。应用程序使用直接IO进行数据传输通常和异步IO结合使用。
    linux内核已经为快设备执行直接IO提供了支持,应用程序直接访问文件而不经过操作系统页高速缓冲存储器的时候,打开文件(open() syscall)指定O_DIRECT标示符。
    总之,这种数据传输方式,应用程序直接访问硬件存储,操作系统内核只是辅助数据传输;它一般用于操作系统不需要对数据进行处理的情况,数据可以再应用程序地址空间的缓冲区和磁盘之间进行传输,而不需要linux操作系统内核提供页缓存支持。
 
posted @ 2013-06-11 22:18  chinadiy197601  阅读(417)  评论(0编辑  收藏  举报