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

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

Код: IT034
Включено в курс

Книги и материалы

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

Обед

Кофе брейк

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

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

Форма обучения: Очно/Дистанционно
Ближайшие даты
08 - 10 Июля 2024 г.
18 - 20 Ноября 2024 г.
Продолжительность: 3 дня 24 ак.часа
Стоимость 35 900 руб.
Описание
Ядро 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

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

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

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

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

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

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

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

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

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

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

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