2015-06-11 24 views
1

Hi試着瞭解零複製原理。 Wikipedia說在Mac中支持零複製原則

幾個操作系統支持通過 特定的API零拷貝文件。

Linux內核支持零拷貝通過各種系統調用,如 sys/socket.h的sendfile,sendfile64和splice。他們中的一些 在POSIX規定,因此也存在於BSD內核或IBM AIX ,有些是獨有的Linux內核API。

的Microsoft Windows支持通過API的TransmitFile零拷貝。

如果底層 操作系統也支持零拷貝,則Java輸入流可以支持零拷貝通過 java.nio.channels.FileChannel的transferTo()方法。

我沒有看到任何提及的OSX,雖然它說現在在BSD內核。

http://www.bigfastblog.com/zero-copy-transfer-data-faster-in-ruby博客說,它在OSX不支持。

回答

3

OS X有一個man page for sendfile。雖然它沒有引用零拷貝,但是它確實將sendfile作爲系統調用引用(與open/read/write/close的一些封裝相反),所以我認爲它是假設它不涉及將文件複製到用戶空間非常安全。