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

e70468ebe9b1881c8aa2f74d03a69e38

Продолжительность курса — 5 дней

Операционная система Linux давно и занимает лидирующие позиции (485 из топа 500 суперкомпьютеров по данным www.top500.org), второе место в сегменте интернет-серверов и стремительно набирает популярность в корпоративном сегменте.

GNU Compilers Collection является лидером в списке аналогичного программного обеспечения по популярности среди средств разработки решений с открытым исходным кодом. 

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

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

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

Программа

  • Введение
    • Ознакомление со спецификой сборки ПО в GNU/Linux
    • Ознакомление с консольными текстовыми редакторами
    • Ручная и автоматическая сборка ПО
    • Модель Клиент-Интерфейс-Сервер (КИС)
    • Статическая сборка библиотек
    • Совместно используемые библиотеки
    • Работа с переменными окружения
  • Низкоуровневый ввод-вывод и файловые операции
    • Обзор механизмов ввода-вывода в Linux
    • Файловые дескрипторы
    • Системные вызовы: open, close, write, read и lseek
    • Типы файлов
    • Индексные дескрипторы и жесткие ссылки
    • Права доступа к файлу
    • Файловая система proc
    • Два способа прочесть содержимое директории
    • Разреженные файлы
    • Блокировка областей файла
  • Межпроцессное взаимодействие
    • Способы межпроцессного взаимодействия: каналы, сообщения, разделяемая память и семафоры
    • Неименованные каналы
  • Именованные каналы
  • Сообщения
  • Разделяемая память
  • Семафоры
  • Сокеты
    • Сокеты в файловом пространстве имен (UNIX-сокеты)
    • Парные сокеты
    • Сетевые сокеты
  • Сигналы
  • Знакомство с сигналами
  • Отличие сигналов от других механизмов межпроцессного взаимодействия
  • Специфика обработки сигналов
  • Процессы
  • Клонирование процессов — fork()
  • Замена исполняемого процесса — exec()
  • Зомби — причины возникновения и способы их устранения
  • Потоки
  • Потоки и процессы
  • Специфика построения многопоточных приложений
  • Досрочное завершение потока
  • Потоки (продолжение)
  • Создание обработчика завершения потока
  • Средства синхронизации потоков
  • Атрибуты потоков
  • Демоны (службы)
  • Отличие демона от консольной утилиты
  • Специфика разработки демонов
  • Создание демона использующего сетевые сокеты
  • Консольный ввод-вывод
  • Предотвращение перенаправления вывода
  • Управление терминалом
  • Сокрытие пароля пользователя при аутентификации
  • Отображаемая память
  • Отображение обычного файла
  • Совместный доступ к файлу
  • Частные отображения
  • Другие применения mmap
Разработка драйверов под Linux и Android
Авторские курсы,