Содержание
-
Предисловие
-
Введение
-
***
-
Итак…
-
Версия ядра
-
Читательская аудитория
-
Интернет-ресурс
-
Благодарности ко второму изданию
-
Об авторе
-
От издательства
-
***
-
Для читателей
-
Глава 1
Введение в ядро Linux
-
***
-
Потом пришел Линус: введение в Linux
-
Обзор операционных систем и ядер
-
Ядро Linux в сравнении с классическими ядрами Unix
-
Версии ядра Linux
-
Сообщество разработчиков ядра Linux
-
Перед тем как начать
-
Глава 2
Начальные сведения о ядре Linux
-
***
-
Получение исходного кода ядра
-
Дерево исходных кодов ядра
-
Сборка ядра
-
"Зверек другого рода"
-
Резюме
-
Глава 3
Управление процессами
-
***
-
Дескриптор процесса и структура task structure
-
Создание нового процесса
-
Реализация потоков в ядре Linux
-
Завершение процесса
-
Резюме
-
Глава 4
Планирование выполнения процессов
-
***
-
Стратегия планирования
-
Алгоритм планирования
-
Вытеснение и переключение контекста
-
Режим реального времени
-
Системные вызовы для управления планировщиком
-
В завершение о планировщике
-
Глава 5
Системные вызовы
-
***
-
API, POSIX и библиотека С
-
Вызовы syscall
-
Обработка системных вызовов
-
Реализация системных вызовов
-
Контекст системного вызова
-
В заключение о системных вызовах
-
Глава 6
Прерывания и обработка прерываний
-
***
-
Прерывания
-
Обработчики прерываний
-
Написание обработчика прерывания
-
Реализация системы обработки прерываний
-
Управление прерываниями
-
Не нужно прерывать, мы почти закончили!
-
Глава 7
Обработка нижних половин и отложенные действия
-
***
-
Нижние половины
-
Механизм отложенных прерываний (softirq)
-
Тасклеты
-
Очереди отложенных действий
-
Какие обработчики нижних половин необходимо использовать
-
Блокировки между обработчиками нижних половин
-
Внизу обработки нижних половин
-
Глава 8
Введение в синхронизацию выполнения кода ядра
-
***
-
Критические участки и состояние конкуренции за ресурсы
-
Блокировки
-
Взаимоблокировки
-
Конфликт при захвате блокировки и масштабируемость
-
Блокировки в вашем коде
-
Глава 9
Средства синхронизации в ядре
-
***
-
Атомарные операции
-
Спин-блокировки
-
Спин-блокировки чтения-записи
-
Семафоры
-
Семафоры чтения-записи
-
Сравнение спин-блокировок и семафоров
-
Условные переменные
-
BKL: Большая блокировка ядра
-
Секвентные блокировки
-
Средства запрещения преемптивности
-
Барьеры и порядок выполнения
-
Резюмирование по синхронизации
-
Глава 10
Таймеры и управление временем
-
***
-
Информация о времени в ядре
-
Переменная jiffies
-
Аппаратные часы и таймеры
-
Обработчик прерываний таймера
-
Абсолютное время
-
Таймеры
-
Задержка выполнения
-
Время вышло
-
Глава 11
Управление памятью
-
***
-
Страницы памяти
-
Зоны
-
Получение страниц памяти
-
Уровень слябового распределителя памяти
-
Интерфейс слябового распределителя памяти
-
Статическое выделение памяти в стеке
-
Отображение верхней памяти
-
Выделение памяти, связанной с определенным процессором
-
Новый интерфейс percpu
-
Когда лучше использовать данные, связанные с процессорами
-
Какой способ выделения памяти необходимо использовать
-
Глава 12
Виртуальная файловая система
-
***
-
Общий интерфейс к файловым системам
-
Уровень обобщенной файловой системы
-
Файловые системы Unix
-
Объекты VFS и их структуры данных
-
Объект superblock
-
Объект inode
-
Объект dentry
-
Объект file
-
Структуры данных, связанные с файловыми системами
-
Структуры данных, связанные с процессом
-
Файловые системы в операционной системе Linux
-
Глава 13
Уровень блочного ввода-вывода
-
***
-
Анатомия блочного устройства
-
Буферы и заголовки буферов
-
Структура bio
-
Очереди запросов
-
Планировщики ввода-вывода
-
Лифтовой алгоритм Линуса
-
Резюме
-
Глава 14
Адресное пространство процесса
-
***
-
Дескриптор памяти
-
Области памяти
-
Работа с областями памяти
-
Функции mmap() и do_mmap(): создание интервала адресов
-
Функции munmap() и do_munmap(): удаление интервала адресов
-
Таблицы страниц
-
Заключение
-
Глава 15
Страничный кэш и обратная запись страниц
-
***
-
Страничный кэш
-
Базисное дерево
-
Буферный кэш
-
Демон pdflush
-
Коротко о главном
-
Глава 16
Модули
-
***
-
Модуль "Hello, World!"
-
Сборка модулей
-
Инсталляция модулей
-
Генерация зависимостей между модулями
-
Загрузка модулей
-
Управление конфигурационными параметрами
-
Параметры модулей
-
Экспортируемые символы
-
Вокруг модулей
-
Глава 17
Объекты kobject и файловая система sysfs
-
***
-
Объекты kobject
-
Типы ktype
-
Множества объектов kset
-
Подсистемы
-
Путаница со структурами
-
Управление и манипуляции с объектами kobject
-
Счетчики ссылок
-
Файловая система sysfs
-
Уровень событий ядра
-
Кратко об объектах kobject и файловой системе sysfs
-
Глава 18
Отладка
-
***
-
С чего необходимо начать
-
Дефекты ядра
-
Функция printk()
-
Сообщения Oops
-
Конфигурационные параметры отладки ядра
-
Генерация ошибок и выдача информации
-
Магическая клавиша SysRq
-
Сага об отладчике ядра
-
Исследование и тестирование системы
-
Нахождение исполняемых образов с изменениями приводящими к ошибкам
-
Если ничто не помогает — обратитесь к сообществу
-
Глава 19
Переносимость
-
***
-
История переносимости Linux
-
Размер машинного слова и типы данных
-
Выравнивание данных
-
Порядок следования байтов
-
Таймер
-
Размер страницы памяти
-
Порядок выполнения операций процессором
-
Многопроцессорность, преемптивность и верхняя память
-
Пару слов о переносимости
-
Глава 20
Заплаты, разработка и сообщество
-
***
-
Сообщество
-
Стиль написания исходного кода
-
Организация команды разработчиков
-
Отправка сообщений об ошибках
-
Генерация заплат
-
Представление заплат
-
Заключение
-
Приложение А
Связанные списки
-
***
-
Кольцевые связанные списки
-
Реализация связанных списков в ядре Linux
-
Работа со связанными списками
-
Перемещение по связанным спискам
-
Приложение Б
Генератор случайных чисел ядра
-
***
-
Принцип работы и реализация
-
Интерфейсы для ввода энтропии
-
Интерфейсы для вывода энтропии
-
Приложение В
Сложность алгоритмов
-
***
-
Алгоритмы
-
Множество О
-
Множество большого-тета
-
Объединяем все вместе
-
Опасность, связанная со сложностью алгоритмов
-
Приложение Г
Библиография и список литературы
-
***
-
Книги по основам построения операционных систем
-
Книги о ядрах Unix
-
Книги о ядрах Linux
-
Книги о ядрах других операционных систем
-
Книги по API Unix
-
Другие работы
-
Web-сайты