При попытке оценить объем памяти, потребляемый модулем ядра (обычно это драйверы устройств), я попытался использовать утилиту size , которая давала размер областей статической памяти .ko (.bss .data, .text и т. д.). Поэтому я ожидал, что сумма этих значений будет точно равна выводу, заданному командой lsmod сразу после вставки модуля.
Динамическое выделение памяти (kmalloc или vmalloc) не выполняется в функции init (), чтобы гарантировать, что это не вызывает различий. Так почему существует несоответствие?
Любопытно, что в большинстве случаев это несоответствие было фиксированной величиной !!
Выводы команды перечислены ниже
размер chardev.ko
text data bss dec hex filename
172 448 1024016 1024636 fa27c chardev.ko
lsmod
Module Size Used by Tainted: P
chardev 1025040 0 - Live 0xc009d000