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

Содержание

Глава 9. Выделение памяти ядра авторам модуля Часть II
Технические требования
Создание индивидуального кэша листов
Создание и применение индивидуального кэша листов внутри модуля ядра
Создание и индивидуального кэша листов
Применение новой кэшированной листами памяти
Уничтожение индивидуального кэша
Индивидуальный лист - демонстрационный модуль ядра
Разбираемся с уплотнителями листа
Сумируем за и против распределения листов
Отладка на уровне листов
Отладка посредством притравки листа
Тестируем - включаем ошибку UAF
Параметры отладки SLUB при запуске и во время работы
Разбираемся с API vmalloc() ядра и применяем его
Изучаем применение API семейства vmalloc
Краткое замечание относительно выделения памяти и подкачку страниц по запросу
Друзья vmalloc()
Определяя защиты памяти
Тестируем - быстрое подтверждение правильности концепции
Почему память доступна только на чтение?
API kmalloc() и vmalloc() - быстрое сопоставление
Распределение памяти в самом ядре - какой API применять и когда
Набор API визуализции выделения памяти ядра
Выбор подходящего API для выделения памяти ядра
Пара слов о DMA и CMA
Оставляем в живых - уничтожитель OOM
Высвобождение памяти - задача уборки ядра и OOM
Умышленная активация уничтожителя OOM
Активация уничтожителя OOM посредством Magic SysRq
Активация уничтожителя OOM c помощью сумасшедшей программы- распределителя
Разбираемся со стоящей за уничтожителем OOM рациональностью
Вариант 1 - vm.overcommit устанавливается равным 2, overcommit отключается
Вариант 2 - vm.overcommit устанавливается равным 0, overcommit включён, установлено по умолчанию
Подкачка страниц по запросу и OOM
Разбираемся со значением показателя OOM
Выводы
Вопросы

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

Создание индивидуального кэша листов

Создание и применение индивидуального кэша листов внутри модуля ядра

Создание и индивидуального кэша листов

Применение новой кэшированной листами памяти

Уничтожение индивидуального кэша

Индивидуальный лист - демонстрационный модуль ядра

Разбираемся с уплотнителями листа

Сумируем за и против распределения листов

Отладка на уровне листов

Отладка посредством притравки листа

Тестируем - включаем ошибку UAF

Параметры отладки SLUB при запуске и во время работы

Разбираемся с API vmalloc() ядра и применяем его

Изучаем применение API семейства vmalloc

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

Друзья vmalloc()

Определяя защиты памяти

Тестируем - быстрое подтверждение правильности концепции

Почему память доступна только на чтение?

API kmalloc() и vmalloc() - быстрое сопоставление

Распределение памяти в самом ядре - какой API применять и когда

Набор API визуализции выделения памяти ядра

Выбор подходящего API для выделения памяти ядра

Пара слов о DMA и CMA

Оставляем в живых - уничтожитель OOM

Высвобождение памяти - задача уборки ядра и OOM

Умышленная активация уничтожителя OOM

Активация уничтожителя OOM посредством Magic SysRq

Активация уничтожителя OOM c помощью сумасшедшей программы- распределителя

Разбираемся со стоящей за уничтожителем OOM рациональностью

Вариант 1 - vm.overcommit устанавливается равным 2, overcommit отключается

Вариант 2 - vm.overcommit устанавливается равным 0, overcommit включён, установлено по умолчанию

Подкачка страниц по запросу и OOM

Разбираемся со значением показателя OOM

Выводы

Вопросы