linux – 在内核和用户空间之间进行通信的理想和最快方式是什么?

linux – 在内核和用户空间之间进行通信的理想和最快方式是什么?,第1张

概述我知道通过内核和用户空间程序之间的以下接口可以实现信息交换 >系统调用 > ioctls > / proc& / SYS > netlink 我想知道 >如果我错过了任何其他界面? >哪一种是交换大量数据的最快方式? (如果有任何文件/邮件/解释支持我可以参考的这种说法) >推荐的沟通方式是哪一种? (我认为它是netlink,但仍然希望听到意见) 交换大量数据的最快方法是内存映射.可以在设备文件 我知道通过内核和用户空间程序之间的以下接口可以实现信息交换

>系统调用
> ioctls
> / proc& / SYS
> netlink

我想知道

>如果我错过了任何其他界面?
>哪一种是交换大量数据的最快方式?
(如果有任何文件/邮件/解释支持我可以参考的这种说法)
>推荐的沟通方式是哪一种? (我认为它是netlink,但仍然希望听到意见)

解决方法 交换大量数据的最快方法是内存映射.可以在设备文件上使用mmap调用,然后相应的内核驱动程序可以决定将内核内存映射到用户地址空间.一个很好的例子是VIDeo For Linux驱动程序,我想帧缓冲驱动程序的工作方式相同.有关V4L2驱动程序如何工作的详细说明,您有:

> The lwn.net article about streaming I/O
> The V4L2 spec itself

你不能为大量数据打败内存映射,因为没有像 *** 作所涉及的memcopy,物理底层内存在内核和用户空间之间有效共享.当然,就像在所有共享内存机制中一样,您必须提供一些同步,以便内核和用户空间不会认为它们同时具有所有权.

总结

以上是内存溢出为你收集整理的linux – 在内核和用户空间之间进行通信的理想和最快方式是什么?全部内容,希望文章能够帮你解决linux – 在内核和用户空间之间进行通信的理想和最快方式是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1046219.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存