Существуют ли какие-либо ограничения памяти для модулей ядра Linux?

Существуют ли какие-либо ограничения на использование памяти модулем ядра Linux, т. е. размер сегмента кода или объем глобальной памяти или что-то еще.


person binW    schedule 03.08.2010    source источник


Ответы (1)


  • В версии 2.6.35 load_module() отключается, если длина загружаемого модуля превышает 64 МБ: http://lxr.linux.no/#linux+v2.6.35/kernel/module.c#L2118
  • vmalloc() используется для выделения места для модуля — это не работает, если вы пытаетесь выделить больше страниц, чем доступно в вашей физической памяти (что, в свою очередь, вероятно, будет проблемой только для встроенных вещей с небольшим объемом оперативной памяти)
  • Кроме того, используется kzalloc() (и, в свою очередь, kmalloc()). В зависимости от используемого распределителя (SLAB, SLOB, SLUB) также могут быть ограничения. SLAB определяет KMALLOC_MAX_SIZE, который определяет максимальное количество байтов, которое вы можете выделить с помощью одного вызова kmalloc().
person BjoernD    schedule 03.08.2010