Mac中支持零拷贝原则

时间:2015-06-11 05:39:31

标签: java linux macos operating-system

您好试着理解零拷贝原则。维基百科说

  

多个操作系统支持通过零拷贝文件   特定的API。

     

Linux内核支持通过各种系统调用进行零拷贝   as sys / socket.h的sendfile,sendfile64和splice。他们之中有一些是   在POSIX中指定,因此也存在于BSD内核或IBM中   AIX,有些是Linux内核API独有的。

     

Microsoft Windows支持通过TransmitFile API进行零拷贝。

     

Java输入流可以通过支持零拷贝   java.nio.channels.FileChannel的transferTo()方法,如果是底层的   操作系统也支持零拷贝。[4]

我没有看到任何提及OSX虽然它说存在于BSD内核中。

但是http://www.bigfastblog.com/zero-copy-transfer-data-faster-in-ruby博客表示它在OSX中不受支持。

1 个答案:

答案 0 :(得分:4)

OS X有man page for sendfile。虽然它没有引用零拷贝,但它确实将sendfile称为系统调用(与open / read / write / close周围的某个包装器相对)所以我认为假设它不涉及将文件复制到用户空间是非常安全的。