Robot
Складчик
- #1
[Академия Информационных Систем] Разработка драйверов под Linux и Android [Сергей Боронин]
- Ссылка на картинку
На курсе слушатели получать знания и навыки, достаточные, чтобы начать работать в качестве системного программиста Linux:
• отличие драйверов устройств от прикладного ПО,
• сборку модулей ядра,
• функции, которые доступны из модулей,
• структура file,
• регистрацию, подключение устройств,
• пример драйвера символьного устройства c доступом на чтение и запись,
• блокировка процессов при конкурентном доступе к устройству,
• специфика управления памятью в ядре Linux,
• блочные устройства,
• пример драйвера, использующего семафоры,
• типы данных и структуры ядра и многое другое.
Целевая аудитория
Курс рассчитан на программистов, которые хотели бы освоить востребованное
направление по разработке драйверов устройств для Linux и Android.
Курс рассчитан на программистов, которые хотели бы освоить востребованное направление по разработке драйверов устройств для Linux и Android. Необходимая предварительная подготовка основы программирования на С, Java.
• отличие драйверов устройств от прикладного ПО,
• сборку модулей ядра,
• функции, которые доступны из модулей,
• структура file,
• регистрацию, подключение устройств,
• пример драйвера символьного устройства c доступом на чтение и запись,
• блокировка процессов при конкурентном доступе к устройству,
• специфика управления памятью в ядре Linux,
• блочные устройства,
• пример драйвера, использующего семафоры,
• типы данных и структуры ядра и многое другое.
Целевая аудитория
Курс рассчитан на программистов, которые хотели бы освоить востребованное
направление по разработке драйверов устройств для Linux и Android.
Курс рассчитан на программистов, которые хотели бы освоить востребованное направление по разработке драйверов устройств для Linux и Android. Необходимая предварительная подготовка основы программирования на С, Java.
Модуль 1:
- Архитектура ядра Linux;
- Отличия разработки драйверов от прикладного ПО;
- Потенциальные проблемы с безопасностью;
- Лицензирование модулей ядра.
- Простейший модуль ядра;
- Знакомство с printk();
- Сборка модулей ядра;
- Макроопределения _init и _exit;
- Вопросы документирования модулей;
- Передача модулю параметров командной строки;
- Модули, состоящие из нескольких файлов;
- Сборка модулей под существующее ядро.
- Модули ядра и прикладные программы;
- Функции, которые доступны из модулей;
- Пространство пользователя и пространство ядра;
- Пространство имен;
- Старший и младший номер устройства.
- Файлы символьных устройств;
- Структура file_operations;
- Структура file;
- Регистрация устройства;
- Отключение устройства;
- Пример драйвера символьного устройства с доступом только на чтение;
- Специфика поддержки записи для символьных устройств;
- Пример драйвера символьного устройства с доступом на чтение и запись.
- Особенность файловой системы /proc;
- Пример драйвера, создающего файл в /proc с доступом на чтение;
- Пример драйвера, создающего файл в /proc с доступом на запись;
- Блокировка процессов при конкурентном доступе к устройству;
- Пример драйвера, приостанавливающего работу процессов.
- Специфика управления памятью в ядре Linux;
- Преобразование адреса в ядре;
- Отображение файла в память ядра;
- Управление отображением в память.
- Блочные устройства;
- Регистрация блочного устройства;
- Операции, поддерживаемые для блочных устройств;
- Обработка запросов к блочному устройству;
- Детали реализации блочного устройства;
- Пример драйвера блочного устройства.
- Конкуренция и ситуация гонок;
- Семафоры и мьютексы;
- Реализация семафора в ядре Linux;
- Семафоры на чтение и запись;
- Взаимоблокировки;
- Пример драйвера, использующего семафоры.
- Типы данных и структура ядра;
- Специфика использования стандартных типов данных;
- Назначение типам данных явного размера;
- Специфичные типы данных;
- Аспекты, связанные с совместимостью;
- Измерение временных интервалов;
- Размер страницы;
- Порядок следования байт в словах;
- Выравнивание данных;
- Размер указателя.
Зарегистрируйтесь
, чтобы посмотреть скрытый авторский контент.