Разработка драйверов устройств в Linux. Игорь Седых
Ядро Linux используется в большинстве современных смартфонов за счет применения в популярной платформе Android. Кроме того, не следует забывать и про лидирующее положение Linux в сегменте суперкомпьютеров (469 из топ 500 суперкомпьютеров под данным ), второе место в сегменте интернет-серверов и высокую популярность в корпоративном сегменте. GNU Compilers Collection является лидером в списке аналогичного программного обеспечения по популярности среди средств разработки решений с открытым исходным кодом.
Вы научитесь:
- понимать отличия драйверов устройств от прикладного ПО;
- знать специфику и ограничения, присущие драйверам устройств;
- понимать влияние ошибок в драйверах устройств на безопасность всей системы в целом;
- понимать отличия в реализации символьных драйверов устройств от блочных;
- знать особенности файловой системы /proc и специфику работы с ней;
- понимать конкуренцию и ситуацию гонок в ядре, проблемы и их решения;
- знать аспекты, связанные с совместимостью, специфику использования стандартных типов данных.
Модуль 1. Ядро Linux
- Архитектура ядра linux
- Отличия разработки драйверов от прикладного ПО
- Потенциальные проблемы с безопасностью
- Лицензирование модулей ядра
- Простейший модуль ядра
- Знакомство с printk()
- Сборка модулей ядра
- Макроопределения __init и __exit
- Вопросы документирования модулей
- Передача модулю параметров командной строки
- Модули, состоящие из нескольких файлов
- Модули ядра и прикладные программы
- Функции, которые доступны из модулей
- Пространство пользователя и пространство ядра
- Пространство имен
- Адресное пространство
- Старший и младший номер устройства
- Типы данных и структуры ядра
- Специфика использования стандартных типов данных
- Назначение типам данных явного размера
- Специфичные типы данных
- Аспекты, связанные с совместимостью
- Размер страницы
- Порядок следования байт в словах
- Выравнивание данных
- Размер указателя
- Файлы символьных устройств
- Структура file_operations
- Структура file
- Регистрация устройства
- Отключение устройства
- Пример драйвера символьного устройства c доступом только на чтение
- Специфика поддержки записи для символьных устройств
- Пример драйвера символьного устройства c доступом на чтение и запись
- Особенность файловой системы /proc
- Пример драйвера, создающего файл в /proc c доступом на чтение
- Блокировка процессов при конкурентном доступе к устройству
- Пример драйвера, приостанавливающего работу процессов
- Специфика управления памятью в ядре Linux
- Преобразование адреса в ядре
- Динамическое распределение памяти в ядре
- Блочные устройства
- Регистрация блочного устройства
- Особенности реализации блочного устройства
- Конкуренция и ситуация гонок
- Семафоры и мьютексы
- Реализация семафора в ядре Linux
- Семафоры на чтение и запись
- Взаимоблокировки
- Пример драйвера, использующего семафоры
- Измерение временных интервалов
- Практическая работа
https://www.specialist.ru/course/unsis
P.S. Не повтор складчины
Здесь большая расчасовка учебной программы.