Performance linux内核空间与用户空间的高效通信

Performance linux内核空间与用户空间的高效通信,performance,kernel,communication,Performance,Kernel,Communication,关于标题,内核需要将一些小于1KB的数据传输到用户空间,用户空间在收到内核的数据后也会传输一些小于1KB的数据。我想知道一些高效的解决方案。现在,我已经处理了netlink(双向通信)的问题。而且,我想使用signalkernel来调用用户和系统,以便更有效地处理这个问题。不幸的是,实时信号只能传输4B数据,它太小了。有没有更好的方法来解决这个问题?共享内存是您的选择吗?在我的项目中,每次我都会选择netlink来执行communicationtransfer命令,选择mmap来发送数据。lin

关于标题,内核需要将一些小于1KB的数据传输到用户空间,用户空间在收到内核的数据后也会传输一些小于1KB的数据。我想知道一些高效的解决方案。现在,我已经处理了netlink(双向通信)的问题。而且,我想使用signalkernel来调用用户和系统,以便更有效地处理这个问题。不幸的是,实时信号只能传输4B数据,它太小了。有没有更好的方法来解决这个问题?

共享内存是您的选择吗?

在我的项目中,每次我都会选择netlink来执行communicationtransfer命令,选择mmap来发送数据。linux内核和用户空间之间有一些通信方式。单击。对于我的项目来说,最好的方式是netlink。信号不好,因为它每次只能发送4B个数据

我使用共享内存来写和读数据。但是我没有很好的方法来实现通信内核和用户空间!谢谢好的,您正在寻找一种方法,通过这种方法,用户空间应用程序可以知道内核空间中有可用的数据,反之亦然。为了让用户空间应用程序有效地等待内核空间中的数据可用性,您可以使用带有等待队列的IOCTL调用,在数据不可用时使进程休眠。对于内核,您可以使用一个IOCTL调用,告诉内核数据刚刚写入缓冲区。谢谢您的建议!但是我需要双向通勤。现在,也许netlink是满足我需要的唯一方式。你能详细说明一下双向通信吗?与共享内存相比,Netlink将有很多开销。任何您认为Nelink比共享内存更好的原因。共享内存是最好的,但当您将数据放入共享内存(如内核放置数据)时,用户空间不知道内核已经放置了数据。所以我们需要使用netlink进行通知。现在我的项目使用netlink进行通知,使用共享内存进行数据传输。你知道吗?