Лав разработка ядра linux

Лав разработка ядра linux

Размер шрифта:
14 | 16 | 18 | 20 | 22 | 24

Ширина текста:
50% | 60% | 70% | 80% | 90% | 100%

Цвет текста:
Установить
Цвет фона:
Установить

Читательская аудитория

Благодарности ко второму изданию

Глава 1
Введение в ядро Linux

Потом пришел Линус: введение в Linux

Обзор операционных систем и ядер

Ядро Linux в сравнении с классическими ядрами Unix

Сообщество разработчиков ядра Linux

Глава 2
Начальные сведения о ядре Linux

Получение исходного кода ядра

Дерево исходных кодов ядра

Глава 3
Управление процессами

Дескриптор процесса и структура task structure

Создание нового процесса

Реализация потоков в ядре Linux

Глава 4
Планирование выполнения процессов

Стратегия планирования

Алгоритм планирования

Вытеснение и переключение контекста

Режим реального времени

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

В завершение о планировщике

Глава 5
Системные вызовы

API, POSIX и библиотека С

Обработка системных вызовов

Реализация системных вызовов

Контекст системного вызова

В заключение о системных вызовах

Глава 6
Прерывания и обработка прерываний

Обработчики прерываний

Написание обработчика прерывания

Реализация системы обработки прерываний

Управление прерываниями

Не нужно прерывать, мы почти закончили!

Глава 7
Обработка нижних половин и отложенные действия

Механизм отложенных прерываний (softirq)

Очереди отложенных действий

Какие обработчики нижних половин необходимо использовать

Блокировки между обработчиками нижних половин

Внизу обработки нижних половин

Глава 8
Введение в синхронизацию выполнения кода ядра

Критические участки и состояние конкуренции за ресурсы

Конфликт при захвате блокировки и масштабируемость

Блокировки в вашем коде

Глава 9
Средства синхронизации в ядре

Спин-блокировки чтения-записи

Семафоры чтения-записи

Сравнение спин-блокировок и семафоров

BKL: Большая блокировка ядра

Секвентные блокировки

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

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

Резюмирование по синхронизации

Глава 10
Таймеры и управление временем

Информация о времени в ядре

Аппаратные часы и таймеры

Обработчик прерываний таймера

Глава 11
Управление памятью

Получение страниц памяти

Уровень слябового распределителя памяти

Интерфейс слябового распределителя памяти

Статическое выделение памяти в стеке

Отображение верхней памяти

Выделение памяти, связанной с определенным процессором

Новый интерфейс percpu

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

Какой способ выделения памяти необходимо использовать

Глава 12
Виртуальная файловая система

Общий интерфейс к файловым системам

Уровень обобщенной файловой системы

Файловые системы Unix

Объекты VFS и их структуры данных

Структуры данных, связанные с файловыми системами

Читайте также:  Samsung scx 4200 astra linux

Структуры данных, связанные с процессом

Файловые системы в операционной системе Linux

Глава 13
Уровень блочного ввода-вывода

Анатомия блочного устройства

Буферы и заголовки буферов

Планировщики ввода-вывода

Лифтовой алгоритм Линуса

Глава 14
Адресное пространство процесса

Работа с областями памяти

Функции mmap() и do_mmap(): создание интервала адресов

Функции munmap() и do_munmap(): удаление интервала адресов

Глава 15
Страничный кэш и обратная запись страниц

Генерация зависимостей между модулями

Управление конфигурационными параметрами

Экспортируемые символы

Глава 17
Объекты kobject и файловая система sysfs

Множества объектов kset

Путаница со структурами

Управление и манипуляции с объектами kobject

Файловая система sysfs

Кратко об объектах kobject и файловой системе sysfs

С чего необходимо начать

Конфигурационные параметры отладки ядра

Генерация ошибок и выдача информации

Магическая клавиша SysRq

Сага об отладчике ядра

Исследование и тестирование системы

Нахождение исполняемых образов с изменениями приводящими к ошибкам

Если ничто не помогает — обратитесь к сообществу

Глава 19
Переносимость

История переносимости Linux

Размер машинного слова и типы данных

Порядок следования байтов

Размер страницы памяти

Порядок выполнения операций процессором

Многопроцессорность, преемптивность и верхняя память

Пару слов о переносимости

Глава 20
Заплаты, разработка и сообщество

Стиль написания исходного кода

Организация команды разработчиков

Отправка сообщений об ошибках

Приложение А
Связанные списки

Кольцевые связанные списки

Реализация связанных списков в ядре Linux

Работа со связанными списками

Перемещение по связанным спискам

Приложение Б
Генератор случайных чисел ядра

Принцип работы и реализация

Интерфейсы для ввода энтропии

Интерфейсы для вывода энтропии

Приложение В
Сложность алгоритмов

Множество большого-тета

Объединяем все вместе

Опасность, связанная со сложностью алгоритмов

Приложение Г
Библиография и список литературы

Книги по основам построения операционных систем

Книги о ядрах других операционных систем

Источник

Ядро Linux. Описание процесса разработки. Роберт Лав

Эта книга предназначена для разработчиков программного обеспечения, которые хотят понять, как устроено ядро операционной системы Linux. Тем не менее она не является сборником построчных комментариев, извлеченных из исходного кода ядра. Ее также нельзя считать руководством по разработке драйверов или справочником по программ- ному интерфейсу (API) ядра. Целью книги является предоставление достаточной информации о структуре и реализации ядра, чтобы подготовленный программист смог начать разработку программного кода. Разработка ядра может быть увлекательным и полезным занятием, и я хочу ознакомить читателя с этой сферой деятельности по возможности быстро. В книге обсуждаются как вопросы теории, так и практические приложения, она обращена к людям, которые интересуются и тем и другим. Я всегда придерживался мнения, что для понимания практических приложений необходима теория, тем не менее я считаю, что эта книга не сильно углубляется в оба этих направления. Надеюсь, что, независимо от мотиваций необходимости понимания ядра операционной системы Linux, эта книга сможет объяснить особенности устройства и реализации в достаточной степени. Таким образом, данная книга освещает как использование основных подсистем ядра, так и особенности их устройства и реализации. Думаю, что эти вопросы важны и достойны обсуждения. Хороший пример — глава 8, “Нижняя половина обработчика и отложенные действия”, посвященная компонентам драйверов устройств, называемых ниж- ними половинами (bottom half). В этой главе рассказывается о принципах работы и об особенностях реализации механизмов обработки нижних половин (эта часть может быть интересна разработчикам основных механизмов ядра), а также о том, как на практике использовать экспортируемый интерфейс ядра для реализации собственных обработчиков нижних половин (это может быть интересно разработчикам драйверов устройств, а также другим программистам-профессионалам). На самом деле мне кажется, что обе эти стороны обсуждения будут интересны всем группам разработчиков. Разработчик основных механизмов ядра, который, конечно, должен понимать принципы работы внутренних частей ядра, должен также понимать и то, как интерфейсы ядра будут использоваться на практике. В то же самое время разработчик драйверов устройств получит большую пользу от хорошего понимания того, что стоит за этим интерфейсом. Все это сродни изучению программного интерфейса некоторой библиотеки наряду с изучением того, как эта библиотека реализована. На первый взгляд, разработчик прикладных программ должен понимать лишь интерфейс (API). И действительно, интерфейсы часто предлагают рассматривать в виде “черного ящика”. Разработчик библиотеки, на- оборот, обычно интересуется лишь принципом работы и реализации функций библиотеки. Я уверен, что обе группы разработчиков должны потратить некоторое время на изучение другой стороны предмета. Разработчик программ, который хорошо понимает операционную систему, сможет значительно лучше использовать ее. Аналогично разработчик библиотеки должен иметь хотя бы малое представление о том, что происходит в реальной жизни, и, в частности, о тех программах, в которых будет использоваться его библиотека. Поэтому я старался коснуться как устройства, так и использования подсистем ядра не только в связи с тем, что эта книга может быть полезна одной или другой группе разработчиков, а в надежде, что весь материал книги будет полезен всем разработчикам. Предполагается, что читатель знаком с языком программирования С и операционной системой Linux. Некоторые знания принципов построения операционных систем также желательны. Я старался объяснять все понятия, однако в случае проблем в списке литературы можно найти несколько отличных книг, которые посвящены основам построения операционных систем. Эта книга будет полезна студентам, изучающим основы построения операционных систем, в качестве прикладного пособия и вводного материала по соответствующей теории. Книга пригодна как для расширенных специальных курсов, так и для общих специальных курсов, причем в последнем случае без дополнительных материалов.

Читайте также:  Linux mysql где хранятся базы данных mysql

Источник

Ядро Linux. Описание процесса разработки

Library IT

Описание книги “Ядро Linux. Описание процесса разработки”:

Прежде всего, эта книга о структуре и практической реализации ядра операционной системы Linux. Информация в ней представлена так, чтобы получить достаточно знаний для решения реальных практических задач и решать эти задачи правильно. Я человек прагматичный, и книга имеет практический уклон. Она должна быть полезной, интересной и легко читаться. Читатели после прочтения этой книги получат хорошее понимание тех правил (писанных и неписаных), которые действуют в ядре операционной системы. Читатели сразу после прочтения этой книги смогут начать действовать и писать полезный, правильный и хороший код ядра. Конечно, эту книгу можно читать и просто ради интереса.

Для кого эта книга

Эта книга предназначена для разработчиков программного обеспечения, которые хотят понять, как устроено ядро операционной системы Linux. Тем не менее она не является сборником построчных комментариев, извлеченных из исходного кода ядра. Ее также нельзя считать руководством по разработке драйверов или справочником по программному интерфейсу (API) ядра. Целью книги является предоставление достаточной информации о структуре и реализации ядра, чтобы подготовленный программист смог начать разработку программного кода.

Глава 1. Понятие о ядре Linux

Глава 2. Начальные сведения о ядре Linux

Глава 3. Управление процессами

Глава 4. Системный планировщик и диспетчеризация процессов

Глава 5. Системные функции

Глава 6. Структуры данных ядра

Глава 7. Прерывания и их обработка

Глава 8. Нижняя половина обработчика и отложенные действия

Глава 9. Общие сведения о синхронизации кода ядра

Глава 10. Средства синхронизации ядра

Глава 11. Таймеры и управление временем

Глава 12. Управление памятью

Глава 13. Виртуальная файловая система

Глава 14. Уровень блочного ввода-вывода

Читайте также:  Office web apps linux

Глава 15. Адресное пространство процесса

Глава 16. Страничный кеш и отложенная запись страниц

Глава 17. Устройства и модули

Глава 19. Переносимость

Глава 20. Заплаты, хакерство и сообщество

Источник

Оцените статью
Adblock
detector