Linux kernel 可以在Linux内核中分配大内存块吗?

Linux kernel 可以在Linux内核中分配大内存块吗?,linux-kernel,Linux Kernel,是否可以在Linux内核中分配一大块内存,例如64 MiB?您不能在单个kmalloc()或其他内存分配例程中在Linux内核代码中分配64 MB内存。它的有限性和依赖性 您可以通过使用启动时内存分配技术来实现这一点。你可以参考 您使用的是哪种引导加载程序?我认为在bootloader中,一些引导参数可以传递给Linux内核,比如“mem=1000MB”。然后可以使用此参数在高端保留一定数量的内存。在内核启动之后,内核模块或用户空间进程可以使用这个保留内存区域来实现简单的堆管理。没有人会碰这个地

是否可以在Linux内核中分配一大块内存,例如64 MiB?

您不能在单个kmalloc()或其他内存分配例程中在Linux内核代码中分配64 MB内存。它的有限性和依赖性

您可以通过使用启动时内存分配技术来实现这一点。你可以参考


您使用的是哪种引导加载程序?我认为在bootloader中,一些引导参数可以传递给Linux内核,比如“mem=1000MB”。然后可以使用此参数在高端保留一定数量的内存。在内核启动之后,内核模块或用户空间进程可以使用这个保留内存区域来实现简单的堆管理。没有人会碰这个地方。但bootmem只能在内核启动时使用,将在内核启动后释放。这不是你想要的。

好的。。你能帮我一下吗?好的。。谢谢你的回复。@kernelCoder我想你应该看到答案中给出的链接。实际上,我的要求是在Linux内核中分配一倍的大内存,并将其重新用于其他。。它可行吗?@kernelCoder,这取决于你的需要……但是如果整个内存在物理上是连续的,那么你应该试着像回答中那样做。否则,你可以多次使用kmalloc()或vmalloc()来获取内存,但它不会是连续的……嗨,田宇峰,我正在使用grub。下面是我的要求。我的要求是在内核中存储数据。数据是来自网络的传入数据包。数据包的大小可能不同,必须存储例如250ms的持续时间。应该有5个这样的候选数据,需要内核级内存管理。因为数据包的速度非常快。我的方法是分配一个大的数据包内存:每个候选内存为2mb。bez kmalloc和kfree有时间开销。经过最近的编辑,我认为这个问题可以重新打开。对于内核开发的新手来说,这是一个相当常见的问题:他们习惯malloc(∞) 而且不熟悉内核内存分配。