Курс: Разработка драйверов устройств в Linux

Курс: Разработка драйверов устройств в Linux

Курс: Разработка драйверов устройств в 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. Реализация доступа к периферийному устройству
• Практическая работа Записаться на курс

Характеристики курса

  • Начало: Ведется набор
  • Вендор: Ubuntu
  • Код курса: UCP-RD
  • Город: Екатеринбург, Пермь, Челябинск, Самара, Ижевск, Киров,
  • Направление: Ubuntu
  • Академических часов: 40
  • Количество мест: 8
  • Очно: 33900 ₽
  • Дистанционно: 33900 ₽
Записаться на курс

Курсы повышения квалификации
и профессиональной переподготовки


График работы:
Мы отвечаем на звонки и письма в будние дни с 7:00 до 16:00 по Мск

Юридический адрес организации:
614010, г. Пермь, ул. Клары Цеткин, д. 14, офис 32

8 800 (600)-66-16

learning@eshift.ru