top-image
Главная » Услуги и обучение » Информационные технологии » Linux » Очно » Linux для технических специалистов » Разработка драйверов и устройств в Linux и Android

Код: LN04

Разработка драйверов и устройств в Linux и Android

Отправить нам заявку на участие в мероприятии Получить коммерческое предложение

Описание:

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

Приобретаемые на курсе навыки:

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

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

Курс рассчитан на программистов окончивших курс «Программирование в Linux на C/C++» или имеющих эквивалентную подготовку.

Программа мероприятия:

Модуль 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

  • Типы данных и структуры ядра
  • Специфика использования стандартных типов данных
  • Назначение типам данных явного размера
  • Специфичные типы данных
  • Аспекты, связанные с совместимостью
  • Измерение временных интервалов
  • Размер страницы
  • Порядок следования байт в словах
  • Выравнивание данных
  • Размер указателя
Оставить свой отзыв об этом мероприятии