Для различных задач необходимо распределить области памяти. Особенно в ядре Linux, где пространство стека довольно сильно заполнено, так что часто Вы просто не сможете объявить большую переменную и надеяться, что она сработает.
Обычный способ распределения памяти заключается в использовании kmalloc/kfree при довольно малых количествах (размещенных неразрывно как реальная память) и vmalloc/vfree (виртуальной памяти) при больших размерах. К сожалению, вы сами должны определить какой способ для вас предпочтительнее. kmalloc вызовет ошибку при попытке размещения более чем 128М - так или иначе, доступ к непрерывной памяти на нескольких страницах может быть затруднителен.