linux-kernel模块最大分配内存

时间:2012-11-07 11:27:53

标签: c linux linux-kernel linux-device-driver kernel-module

我想编写一个模块,其任务是捕获传入的数据包,而不将它们发送到用户空间应用程序&对捕获的数据包进行一些修改。然后该模块将发送此数据包以传输到NIC。

但主要问题是我的模块尺寸非常大而且它也做了很多处理。因此,在内核模块中进行此处理是否合适,或者我们是否应该传递信息&数据包到用户空间进行处理以避免复杂性。

&安培;我这样做只是为了让包处理非常快 所以linux-kernel模块可以分配多少内存。

1 个答案:

答案 0 :(得分:1)

在内核空间而不是用户空间中运行时,网络数据包总是会更快。请记住,必须将其复制到用户空间,这是一项昂贵的操作。但是,并非所有内容都应该在内核空间中运行,因为这会使系统非常不稳定,因为每个错误都是潜在的内核崩溃。 因此,如果您想使用内核或用户空间对应用程序进行编程,则严重依赖于您的规范。

相反,要分配的内存量根本不重要。在linux模块中使用kmalloc(),您可以分配与系统中物理可用内存一样多的内存,因此您应该没问题。

相关问题