Глава 8. Выделение памяти ядра авторам модуля Часть I

Содержание

Глава 8. Выделение памяти ядра авторам модуля Часть I
Технические требования
Введение в распределители памяти ядра
Разбираемся с распределителем страниц ядра (или BSA) и применяем его
Основы работы с распределителем страниц
Организация freelist
Работы распределителя страниц
Работая по нескольким сценариям
Самый простой случай
Более сложный случай
Вариант падения
Внутреннее устройство распределителя страниц - некоторые дополнительные подробности
Изучаем как пользоваться API распределителя страниц
Никогда не засыпать в прерывании или атомарных контекстах
Флаги GFP -погружаемся глубже
Работа с флагами GFP
Высвобождение страниц при помощи распределителя страниц
Написание модуля ядра для демонстрации применения API распределителя страниц
Развёртываем свой модуль ядра lowlevel_mem_lkm
Распределитель страниц и внутренняя фрагментация
API распределителя страниц exact
Разбираемся с распределителем листов ядра и используем его
Предмет идеи кэширования
Изучаем как пользоваться API распределителя листов
Выделение листов памяти
Высвобождение листов памяти
Структуры данных - некоторые подсказки архитектуры
Реальное кэширование листов применяемое для kmalloc
Написание модуля ядра для применения основ API листов
Ограничения по размеру API kmalloc
Тестирование наличия пределов - выделение памяти единственным вызовом
Проверка через псевдо- файл /proc/buddyinfo
Распределитель листов - некоторые дополнительные подробности
Применение API управляемого ресурсом выделения памяти ядра
Дополнительный вспомогательный API листов
Группы контроля и память
Предостережения при использовании распределителя листов
Лежащие в основе подробности и решения
Тестирование выделения листов при помощи ksize() - вариант 1
Тестирование выделения листов при помощи ksize() - вариант 2
Интерпретация вывода для варианта 2
Нанесение его на график
Реализации уровня листов внутри самого ядра
Выводы
Вопросы
Дальнейшее чтение

Технические требования

Введение в распределители памяти ядра

Разбираемся с распределителем страниц ядра (или BSA) и применяем его

Основы работы с распределителем страниц

Организация freelist

Работы распределителя страниц

Работая по нескольким сценариям

Самый простой случай

Более сложный случай

Вариант падения

Внутреннее устройство распределителя страниц - некоторые дополнительные подробности

Изучаем как пользоваться API распределителя страниц

Никогда не засыпать в прерывании или атомарных контекстах

Флаги GFP -погружаемся глубже

Работа с флагами GFP

Высвобождение страниц при помощи распределителя страниц

Написание модуля ядра для демонстрации применения API распределителя страниц

Развёртываем свой модуль ядра lowlevel_mem_lkm

Распределитель страниц и внутренняя фрагментация

API распределителя страниц exact

Разбираемся с распределителем листов ядра и используем его

Предмет идеи кэширования

Изучаем как пользоваться API распределителя листов

Выделение листов памяти

Высвобождение листов памяти

Структуры данных - некоторые подсказки архитектуры

Реальное кэширование листов применяемое для kmalloc

Написание модуля ядра для применения основ API листов

Ограничения по размеру API kmalloc

Тестирование наличия пределов - выделение памяти единственным вызовом

Проверка через псевдо- файл /proc/buddyinfo

Распределитель листов - некоторые дополнительные подробности

Применение API управляемого ресурсом выделения памяти ядра

Дополнительный вспомогательный API листов

Группы контроля и память

Предостережения при использовании распределителя листов

Лежащие в основе подробности и решения

Тестирование выделения листов при помощи ksize() - вариант 1

Тестирование выделения листов при помощи ksize() - вариант 2

Интерпретация вывода для варианта 2

Нанесение его на график

Реализации уровня листов внутри самого ядра

Выводы

Вопросы

Дальнейшее чтение