Разработка драйверов под Linux

На курсе слушатели получать знания и навыки, достаточные, чтобы начать работать в качестве системного программиста Linux:
• отличие драйверов устройств от прикладного ПО,
• сборку модулей ядра,
• функции, которые доступны из модулей,
• структура file,
• регистрацию, подключение устройств,
• пример драйвера символьного устройства c доступом на чтение и запись,
• блокировка процессов при конкурентном доступе к устройству,
• специфика управления памятью в ядре Linux,
• блочные устройства,
• пример драйвера, использующего семафоры,
• типы данных и структуры ядра и многое другое.
Код: IT034
Включено в курс

Материалы

Электронные документы

Обед

Кофе брейк

Документы об обучении

Удостоверение о повышении квалификации

Форма обучения: Очно/Дистанционно
Ближайшие даты
22 - 26 Сентября 2025 г.
Продолжительность: 3 дня 24 ак.часа
Стоимость 47 000 руб.
Описание

Ядро Linux используется в большинстве современных смартфонов за счет применения в
популярной платформе Android. Кроме того, не следует забывать и про лидирующее
положение Linux в сегменте суперкомпьютеров (500 из топ 500 суперкомпьютеров по
данным www.top500.org), второе место в сегменте интернет-серверов и высокую ),
второе место в сегменте интернет-серверов и высокую
популярность в корпоративном сегменте. GNU Compilers Collection является лидером в
списке аналогичного программного обеспечения по популярности среди средств
разработки решений с открытым исходным кодом

Целевая аудитория

  • Курс рассчитан на программистов, которые хотели бы освоить востребованное направление по разработке драйверов устройств для Linux.

  • Курс рассчитан на программистов, которые хотели бы освоить востребованное направление по разработке драйверов устройств для Linux. Необходимая предварительная подготовка основы программирования на С, Java.

Программа
  • Модуль 1

    • Архитектура ядра linux

    • Отличия разработки драйверов от прикладного ПО

    • Потенциальные проблемы с безопасностью

    • Лицензирование модулей ядра

  • Модуль 2

    • Простейший модуль ядра

    • Знакомство с printk()

    • Сборка модулей ядра

    • Макроопределения __init и __exit

    • Вопросы документирования модулей

    • Передача модулю параметров командной строки

    • Модули, состоящие из нескольких файлов

    • Сборка модулей под существующее ядро

  • Модуль 3

    • Модули ядра и прикладные программы

    • Функции, которые доступны из модулей

    • Пространство пользователя и пространство ядра

    • Пространство имен

    • Адресное пространство

    • Старший и младший номер устройства

  • Модуль 4

    • Файлы символьных устройств

    • Структура file_operations

    • Структура file

    • Регистрация устройства

    • Отключение устройства

    • Пример драйвера символьного устройства c доступом только на чтение

    • Специфика поддержки записи для символьных устройств

    • Пример драйвера символьного устройства c доступом на чтение и запись

  • Модуль 5

    • Особенность файловой системы /proc

    • Пример драйвера, создающего файл в /proc c доступом на чтение

    • Пример драйвера, создающего файл в /proc c доступом на чтение

    • Блокировка процессов при конкурентном доступе к устройству

    • Пример драйвера, приостанавливающего работу процессов

  • Модуль 6

    • Специфика управления памятью в ядре Linux

    • Преобразование адреса в ядре

    • Отображение файла в память ядра

    • Управление отображением в память

    • Модуль 7

      • Блочные устройства

      • Регистрация блочного устройства

      • Операции, поддерживаемые для блочных устройств

      • Обработка запросов к блочному устройству

      • Детали реализации блочного устройства

      • Пример драйвера блочного устройства

      • Модуль 8

        • Конкуренция и ситуация гонок

        • Семафоры и мьютексы

        • Реализация семафора в ядре Linux

        • Семафоры на чтение и запись

        • Взаимоблокировки

        • Пример драйвера, использующего семафоры

        • Модуль 9

          • Типы данных и структуры ядра

          • Специфика использования стандартных типов данных

          • Назначение типам данных явного размера

          • Специфичные типы данных

          • Аспекты, связанные с совместимостью

          • Измерение временных интервалов

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

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

          • Выравнивание данных

          • Размер указателя

          Преподаватели