Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum
купить дешевый 
компьютер родом из Dhgate.com




Lines Club

Ищем достойных соперников.

Библиотека сайта или "Мой Linux Documentation Project"

На главную -> 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 );

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

Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют