Часть 2. Окунаемся глубже

Глава 6. Синхронизация ядра- Часть I

Содержание

Глава 6. Синхронизация ядра- Часть I
Критические разделы, исключительное исполнение и атомарность
Что такое критический раздел?
Классический случай - глобальное i++
Концепции - блокировки
Резюме ключевых моментов
Связанные с одновременностью вопросы внутри самого ядра Linux
Системы SMP со множеством ядер и состязательность данных
Вытесняемые ядра, блокирующий ввод/ вывод и состязательность данных
Аппаратные прерывания и состязательность данных
Руководства по блокировками и взаимному блокированию
Взаимное исключение или спин блокировки? Что и когда применять
Определение того, какую блокировку применять - в теории
Определение того, какую блокировку применять - на практике
Применение блокировок взаимного исключения
Инициализация взаимного исключения
Правильное применение взаимного исключения
API взаимного исключения и его снятия, а также их применение
Взаимное исключение через сон с (без) прерывания?
Взаимное исключение - пример драйвера
Собственно взаимное исключение - несколько остающихся моментов
Варианты API взаимного исключения
Вариант trylock взаимного исключения
Вариант взаимного исключения с прерыванием и варианты с уничтожением
Вариант взаимного исключения ввода/ вывода
Семафор и взаимное исключение
Инверсия приоритета и взаимное исключение
Внутреннее проектирование
Применение спин блокировки
Спин блокировка - образец применения
Спин блокировка - образец драйвера
Проверка - засыпание в атомарном контексте
Проверка в отладчике ядра 5.4
Проверка в дистрибутиве без отладчика ядра 5.4
Блокировки и прерывания
Применение спин блокировок - краткое резюме
Выводы
Вопросы
Дополнительное чтение

Критические разделы, исключительное исполнение и атомарность

Что такое критический раздел?

Классический случай - глобальное i++

Концепции - блокировки

Резюме ключевых моментов

Связанные с одновременностью вопросы внутри самого ядра Linux

Сисиемы SMP со множеством ядер и состязательность данных

Вытесняемые ядра, блокирующий ввод/ вывод и состязательность данных

Аппаратные прерывания и состязательность данных

Руководства по блокировками и взаминому блокирования

Взаимное исключение или спин блокировки? Что и когда применять

Определение того, какую блокировку применять - в теории

Определение того, какую блокировку применять - на практике

Применение блокировок взаимного исключения

Инициализация взаимного исключения

Правильное применение взаимного исключения

API взаимного исключения и его снятия, а также их применение

Взаимное исключение через сон с (без) прерывания?

Взаимное исключение - пример драйвера

Собственно взаимное исключение - несколько остающихся моментов

Варианты API взаимного исключения

Вариант trylock взаимного исключения

Вариант взаимного исключения с прерыванием и варианты с уничтожением

Вариант взаимного исключения ввода/ вывода

Семафор и взаимное исключение

Инверсия приоритета и взаимное исключение

Внутреннее проектирование

Применение спин блокировки

Спин блокировка - образец применения

Спин блокировка - образец драйвера

Проверка - засыпание в атомарном контексте

Проверка в отладчике ядра 5.4

Проверка в дистрибутиве без отладчика ядра 5.4

Блокировки и прерывания

Применение спин блокировок - краткое резюме

Выводы

Вопросы

Дополнительное чтение