на курсі слухачі отримувати знання і навички, достатні, щоб почати працювати в якості системного програміста Linux:
- відмінність драйверів пристроїв від прикладного ПЗ,
- складання модулів ядра,
- функції, які доступні з модулів,
- структура file,
- реєстрацію, підключення пристроїв,
- приклад драйвера символьного пристрою c доступом на читання і запис,
- блокування процесів при конкурентному доступі до пристрою,
- специфіка управління пам'яттю в ядрі Linux,
- блокові пристрої,
- приклад драйвера, що використовує семафори,
- типи даних і структури ядра і багато іншого.
цільова аудиторія
Курс розрахований на програмістів, які хотіли б освоїти затребуване
напрямок по розробці драйверів пристроїв для Linux і Android.
Курс розрахований на програмістів, які хотіли б освоїти затребуваний напрямок з розробки драйверів пристроїв для Linux і Android. Необхідна попередня підготовка основи програмування на С, Java.
Модуль 1:
- Архітектура ядра Linux;
- відмінності розробки драйверів від прикладного ПЗ;
- потенційні проблеми з безпекою;
- ліцензування модулів ядра.
- найпростіший модуль ядра;
- знайомство з printk ();
- збірка модулів ядра;
- Макроопределенія _init і _exit;
- питання документування модулів;
- Передача модулю параметрів командного рядка;
- модулі, що складаються з декількох файлів;
- збірка модулів під існуюче ядро.
- модулі ядра та прикладні програми;
- функції, які доступні з модулів;
- простір користувача і простір ядра;
- простір імен;
- Старший і молодший номер пристрою.
- файли символьних пристроїв;
- Структура file_operations;
- Структура file;
- реєстрація пристрою;
- відключення пристрою;
- приклад драйвера символьного пристрою з доступом тільки на читання;
- специфіка підтримки запису для символьних пристроїв;
- приклад драйвера символьного пристрою з доступом на читання і запис.
- особливість файлової системи/proc;
- приклад драйвера, що створює файл в/proc з доступом на читання;
- приклад драйвера, що створює файл в/proc з доступом на запис;
- блокування процесів при конкурентному доступі до пристрою;
- приклад драйвера, що призупиняє роботу процесів.
- специфіка управління пам'яттю в ядрі Linux;
- перетворення адреси в ядрі;
- відображення файлу в пам'ять ядра;
- управління відображенням в пам'ять.
- блокові пристрої;
- реєстрація блочного пристрою;
- операції, підтримувані для блокових пристроїв;
- обробка запитів до блочного пристрою;
- деталі реалізації блочного пристрою;
- приклад драйвера блочного пристрою.
- конкуренція і ситуація гонок;
- семафори і м'ютекси;
- реалізація семафора в ядрі Linux;
- семафори на читання і запис;
- взаємоблокування;
- приклад драйвера, що використовує семафори.
- типи даних і структура ядра;
- специфіка використання стандартних типів даних;
- призначення типам даних явного розміру;
- специфічні типи даних;
- аспекти, пов'язані з сумісністю;
- вимірювання часових інтервалів;
- розмір сторінки;
- порядок слідування байт в словах;
- вирівнювання даних;
- розмір покажчика.
https://privatelink.de/?https://www.infosystems.ru/courses/avtorskie_unikalnye/ALSE-1609/