Мы все знаем, что функция, используемая для динамического использования памяти в пользовательском пространстве, — это malloc(), которая последовательно используется в различных операционных системах, а соответствующая функция освобождения памяти в пользовательском пространстве — free(). Внимание: динамически запрашиваемую память необходимо освободить после использования, иначе это приведет к утечкам памяти. Если утечка памяти произойдет в пространстве ядра, это приведет к сбою системы.
Итак, как подать заявку на выделение памяти в пространстве ядра? Обычно мы используем такие функции, как kmalloc(), kzalloc(), vmalloc() и т. д. Ниже мы познакомим вас с использованием этих функций и их различиями.
kmalloc()
Прототип функции:
void *kmalloc(size_t size, gfp_t flags);
Память, запрошенная kmalloc(), расположена в области отображения физической памяти и физически непрерывна. . У них есть только фиксированное смещение от реального физического адреса. Из-за существования простого отношения преобразования существует ограничение на размер запрашиваемой памяти, который не может превышать 128 КБ.
Часто используемые флаги (методы выделения памяти):
GFP_ATOMIC — процесс выделения памяти — это атомарный процесс, который не прерывается высокоприоритетными процессами или прерываниями;
GFP_KERNEL — обычное распределение памяти;
В общем, только память должен быть физически непрерывным, когда к нему необходим доступ по DMA, но по соображениям производительности ядро обычно использует kmalloc(), а vmalloc() используется только тогда, когда необходимо получить большой блок памяти. Например, когда модуль динамически загружается в ядро, он загружается в память, выделенную функцией vmalloc().
Общие характеристики kmalloc(), kzalloc() и vmalloc () являются:
Подробнее здесь: https://stackoverflow.com/questions/790 ... ernel-modu
Как использовать kzalloc и GFP_DMA для выделения буферов для mmap в модулях ядра Linux? ⇐ Linux
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
В чем разница между «mmap.mmap» и «tempfile.SpooledTemporaryFile» в stdlib Python?
Anonymous » » в форуме Python - 0 Ответы
- 46 Просмотры
-
Последнее сообщение Anonymous
-