其他操作系统是否实现了Linux系统调用拼接?

时间:2012-09-01 18:31:27

标签: sockets operating-system implementation system-calls splice

在我正在开发的应用程序中,我在Linux上使用splice进行套接字到套接字数据传输。

  1. 其他操作系统(特别是至少Windows,OS X和FreeBSD)是否实现splice或等效解决方案?
  2. 是否可以使用splice¹+ sendfile¹在Windows上模拟套接字到套接字数据{{1}?

  3. ¹在Windows上都存在不同名称,我不记得了。


    更新

    您可以在Linux上看到memmap与用户空间缓冲区的性能改进。

    go

    • spliceDFDRFMF是我在不同隧道模式下的应用,MR是NGINX网络服务器
    • NX使用Linux系统调用-p+t
    • splice使用带有用户空间缓冲区的便携式实现
    • +p-t使用带有用户空间缓冲区和多个OS线程的可移植实现
    • 条形表示 gigaBYTE s /秒的吞吐量
    • 一个1千兆字节(1048576000字节)的文件被4个并发客户端重复了4次

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

TransmitFile在winsock中以一种方式从一个文件句柄流到一个套接字,但是我不确定这是否会帮助你从文件 - >磁盘流式传输。您可以使用memory mapped file句柄来使用它。

我听说过去有几个人说“内核模式”是加速回声和简单服务器操作的方法,但我从来没有这样做过。

内核模式winsock上的一些链接:

http://blogs.msdn.com/b/wndp/archive/2006/02/24/introduction-to-winsock-kernel-wsk.aspx

http://msdn.microsoft.com/en-us/library/windows/hardware/ff571084(v=vs.85).aspx