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

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

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

Курс рассчитан на программистов, которые хотели бы освоить востребованное направление по разработке драйверов устройств для Linux и Android. Необходимая предварительная подготовка основы программирования на С, 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

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

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

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

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

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

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

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

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

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

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