Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Цилюрик О.И. Модули ядра Linux
Назад Внутренние механизмы ядра Вперед

Выделение больших буферов

Для выделения экстремально больших буферов, иногда описывают и рекомендуют технику выделения памяти непосредственно при загрузке системы (ядра). Но эта техника доступна только модулям, загружаемым с ядром (при начальной загрузке), далее они не подлежат выгрузке. Техника, приемлемая для команды разработчиков ядра, но сомнительная в своей ценности для сторонних разработчиков модулей ядра. Тем не менее, вскользь упомним и её. Для её реализации есть такие вызовы:

	#include <linux/bootmem.h>
	void *alloc_bootmem( unsigned long size );
	void *alloc_bootmem_low( unsigned long size );
	void *alloc_bootmem_pages( unsigned long size);
	void *alloc_bootmem_low_pages( unsigned long size );

Эти функции выделяют либо целое число страниц (если имя функции заканчивается на _pages), или не выровненные странично области памяти.

Освобождение памяти, выделенной при загрузке, производится даже в ядре крайне редко: сам модуль выгружен быть не может, а почти наверняка получить освобождённую память позже, при необходимости, он будете уже не в состоянии. Однако, существует интерфейс для освобождения и этой памяти:

	void free_bootmem( unsigned long addr, unsigned long size );

Предыдущий раздел: Оглавление Следующий раздел:
Страничное выделение   Динамические структуры и управление памятью