Разработка ядра Linux
Шрифт:
Эта структура большая, но в системе всего три зоны и соответственно три такие структуры. Рассмотрим наиболее важные поля данной структуры.
Поле
Поле
Поле
Получение страниц памяти
Теперь, имея некоторое понятие о том, как ядро управляет памятью с помощью страниц, зон и так далее, давайте рассмотрим интерфейсы, которые реализованы в ядре для того, чтобы выделять и освобождать память внутри ядра. Ядро предоставляет один низкоуровневый интерфейс для выделения памяти и несколько интерфейсов для доступа к ней. Все эти интерфейсы выделяют память в объеме, кратном размеру страницы, и определены в файле
Данная функция позволяет выделить 2
Эта функция возвращает указатель на логический адрес, которому в данный момент соответствует начало указанной страницы физической памяти. Если нет необходимости в соответствующей структуре
Эта функция работает так же, как и функция
Если необходима всего одна страница памяти, то для этой цели определены следующие функции-оболочки, которые позволяют уменьшить количество работы по набору кода программы.
Эти функции работают так же, как и ранее описанные, по для них в качестве параметра
Получение страниц заполненных нулями
Для того чтобы получаемые страницы памяти были заполнены нулями, необходимо использовать следующую функцию.
Эта
Таблица 11.2. Низкоуровневые средства выделения памяти
| Функция | Описание |
|---|---|
alloc_page(gfp_mask) | Выделяет одну страницу памяти и возвращает указатель на соответствующую ей структуру page |
alloc_pages(gfp_mask, order) | Выделяет 2 order страниц памяти и возвращает указатель на структуру page первой страницы |
__get_free_page(gfp_mask) | Выделяет одну страницу памяти и возвращает указатель на ее логический адрес |
__get_free_pages(gfp_mask, order) | Выделяет 2 order страниц памяти и возвращает указатель на логический адрес первой страницы |
get_zeroed_page(gfp_mask) | Выделяет одну страницу памяти, обнуляет ее содержимое и возвращает указатель на ее логический адрес |
Освобождение страниц
Для освобождения страниц, которые больше не нужны, можно использовать следующие функции.
Необходимо быть внимательными и освобождать только те страницы памяти, которые вам выделены. Передача неправильного значения параметра
Последний Паладин. Том 13
13. Путь Паладина
Фантастика:
городское фэнтези
попаданцы
аниме
рейтинг книги
На границе империй. Том 7. Часть 5
11. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
рейтинг книги
На цепи
1. На цепи
Старинная литература:
прочая старинная литература
рейтинг книги
Последний Паладин. Том 2
2. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Перешагнуть пропасть
1. Перешагнуть пропасть
Фантастика:
боевая фантастика
космическая фантастика
рейтинг книги
Полигон
S.T.A.L.K.E.R.
Фантастика:
боевая фантастика
рейтинг книги