^
Начало
Установить закладку
+ Настройки
14 | 16 | 18 | 20 | 22 | 24
Ширина текста:
50% | 60% | 70% | 80% | 90% | 100%
Шрифт:
Цвет текста:
Установить
Цвет фона:
Установить
Сбросить настройки
Предисловие
Введение
Итак…
Версия ядра
Читательская аудитория
Интернет-ресурс
Благодарности ко второму изданию
Об авторе
От издательства
Для читателей
Глава 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-сайты