0

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

但主要问题是我的模块尺寸非常大并且它也做了很多处理。那么在内核模块内部进行这个处理会更好,还是我们应该将信息和数据包传递给用户空间进行处理以避免复杂性。

& 我这样做只是为了快速处理数据包。
所以最大可以由 linux-kernel 模块分配多少内存。

4

1 回答 1

1

当在内核空间而不是用户空间运行时,网络数据包总是会更快。请记住,它必须被复制到用户空间,这是一项昂贵的操作。然而,并不是所有的东西都应该在内核空间中运行,因为这会使系统非常不稳定,因为每个错误都是潜在的内核崩溃。因此,如果您想使用内核或用户空间对应用程序进行编程,很大程度上取决于您的规范。

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

于 2012-11-07T13:18:02.557 回答