用户和内核之间的大数据流
在用户级和内核级之间实现双向数据流的最佳方式(性能)是什么?
我知道您可以打开 NETLINK 套接字并通过那里传输数据。但是,我们必须采用一些其他的用户内核交互(系统调用、ioctl)来发送控制信息。这是跨用户内核边界传输大量数据的最有效方法吗?
What is the best way(performance) to have a bi-directional data flow between user-level and kernel-level ?
I understand that you can open a NETLINK socket and transfer the data through there. But, we have to adopt some other user-kernel interaction(system calls, ioctl) for sending control information across. Is this the most efficient way to transfer large amount of data across user-kernel boundary ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
将大量数据缓冲区传递到内核驱动程序/线程/无论什么都没有问题 - 内核有权限读取它,没有问题。对于返回内容,通常的方法是为内核提供足够大的用户空间缓冲区或缓冲池,以供其返回数据。这就是通常的内容的完成方式 - 文件/网络读/写,例如例子。
更准确地说,问题是什么 - 您是否需要在另一台机器上将数据传输到内核级别/从内核级别传输数据?
平均值,
马丁
Passing large buffers of data into the kernel driver/thread/whatever is no problem - the kernel has the privilege to read it, no problem. For returning stuff, the ususal way is to provide the kernel thingy with a sufficiently large user-space buffer, or buffer pool, for it to return data in. That's how its done for the usual stuff - file/network read/write, for example.
What is the problem, more exactly - do you need to transfer the data to/from kernel level on a different machine?
Rgds,
Martin