Курс: Разработка драйверов устройств в Linux
Продолжительность курса: 40 ак. ч.
Формат обучения:
• Очно - на территории нашего учебного центра или на территории Заказчика (для корпоративных клиентов)
• Онлайн обучение с помощью вебинаров в режиме "здесь и сейчас"
• Дистанционно с помощью системы СДО в любое удобное для вас время
Описание курса:
Ядро Linux используется в большинстве современных смартфонов за счет применения в популярной платформе Android. Кроме того, не следует забывать и про лидирующее положение Linux в сегменте суперкомпьютеров, второе место в сегменте интернет-серверов и высокую популярность в корпоративном сегменте. GNU Compilers Collection является лидером в списке аналогичного программного обеспечения по популярности среди средств разработки решений с открытым исходным кодом
Аудитория:
Курс рассчитан на программистов, окончивших курс «Linux (Ubuntu). Уровень 2. Программирование в Linux на C» или имеющих эквивалентную подготовку
Результат обучения:
Окончив данный курс, вы получите опыт, достаточный, чтобы начать работать в качестве системного программиста Linux
После изучения курса слушатель будет:
• Понимать отличия драйверов устройств от прикладного ПО
• Знать специфику и ограничения, присущие драйверам устройств
• Понимать влияние ошибок в драйверах устройств на безопасность всей системы в целом
• Понимать отличия в реализации символьных драйверов устройств от блочных
• Знать особенности файловой системы /proc и специфику работы с ней
• Понимать конкуренцию и ситуацию гонок в ядре, проблемы и их решения
• Знать аспекты, связанные с совместимостью, специфику использования стандартных типов данных
Программа курса:
Модуль 1. Ядро Linux
• Архитектура ядра linux
• Отличия разработки драйверов от прикладного ПО
• Потенциальные проблемы с безопасностью
• Лицензирование модулей ядра
Модуль 2. Модули ядра Linux
• Простейший модуль ядра
• Знакомство с printk
• Сборка модулей ядра
• Макроопределения __init и __exit
• Вопросы документирования модулей
• Передача модулю параметров командной строки
• Модули, состоящие из нескольких файлов
Модуль 3. Модули ядра, пространства и устройства
• Модули ядра и прикладные программы
• Функции, которые доступны из модулей
• Пространство пользователя и пространство ядра
• Пространство имен
• Адресное пространство
• Старший и младший номер устройства
Модуль 4. Данные
•Типы данных и структуры ядра
• Специфика использования стандартных типов данных
• Назначение типам данных явного размера
• Специфичные типы данных
• Аспекты, связанные с совместимостью
• Размер страницы
• Порядок следования байт в словах
• Выравнивание данных
• Размер указателя
Модуль 5. Символьные устройства
• Файлы символьных устройств
• Структура file_operations
• Структура file
• Регистрация устройства
• Отключение устройства
• Пример драйвера символьного устройства c доступом только на чтение
• Специфика поддержки записи для символьных устройств
• Пример драйвера символьного устройства c доступом на чтение и запись
Модуль 6. Файловая система /proc
• Особенность файловой системы /proc
• Пример драйвера, создающего файл в /proc c доступом на чтение
• Блокировка процессов при конкурентном доступе к устройству
• Пример драйвера, приостанавливающего работу процессов
Модуль 7. Управление памятью в ядре Linux
• Специфика управления памятью в ядре Linux
• Преобразование адреса в ядре
• Динамическое распределение памяти в ядре
Модуль 8. Блочные устройства
• Блочные устройства
• Регистрация блочного устройства
• Особенности реализации блочного устройства
Модуль 9. Семафоры и синхронизация
• Конкуренция и ситуация гонок
• Семафоры и мьютексы
• Реализация семафора в ядре Linux
• Семафоры на чтение и запись
• Взаимоблокировки
• Пример драйвера, использующего семафоры
• Измерение временных интервалов
Модуль 10. Реализация доступа к периферийному устройству
• Практическая работа
Окончательная цена указывается в договоре на обучение.
Записаться на курс