План на курса
Въведение
- бърза история на GNU/Linux
- лицензиране
- версия на ядрото
- цикъл на освобождаване
- ядрени дървета
- главна линия
- ядро срещу потребителско пространство
- механизъм срещу политика
- алтернативи на драйвер на ядрото
- RTOS срещу Linux
Памет Management
- Виртуална памет срещу физическа памет
- разпределение на паметта в ядрото
- страници
- зони
- API
- плоча
Корекция на ядрото
- жизнен цикъл
- git
- източник на ядрото
- създаване на корекция
- чек пач
- корекция на корекцията
- корабен пластир
- одитиран код
Модули на ядрото
- вземете източници на ядрото
- конфигуриране/изграждане/инсталиране
- драйвери на устройства (статично свързани, заредени по време на изпълнение)
- init/exit
- лицензиране
- ЕКСПОРТЕН СИМВОЛ GPL
- извън дървовиден makefile
- module-init-tools
- модул в дървото на ядрото
- Kconfig
- преминаване на параметър
- рядък
Char драйвери
- архитектура
- интерфейс потребител/ядро
- I/O подсистема
- VFS
- sysfs (устройства, автобус, драйвери, класове),
- kobject/ktype/kset
- модел на драйвер на ядрото на linux
- файлове на устройството
- char драйвер
- инициализация
- регистрация
- отваряне, освобождаване
- cdev, cdev add, cdev del,...
- главни/малки числа
- udev, udevmonitor, udevadm
Разширени операции на драйвера за символи
- ioctl
- отключен ioctl
- съвместим ioctl
- API за потребителско пространство
- API за пространство на ядрото
- жизнен цикъл на процеса
- заспиване/блокиране
- спане/събуждане
- опашка за изчакване
- гърмящо стадо
- анкета/избор
Отстраняване на грешки в ядрото
- бъг
- отстраняване на грешки
- отстраняване на грешки в ядрото
- двоично търсене с git
- поддръжка за отстраняване на грешки от ядрото
- printk syslogd, klogd, loglevels, ограничение на скоростта, нива на отстраняване на грешки, отстраняване на грешки в селективни подсистеми
- отстраняване на грешки чрез запитване debugfs
- опа отстраняване на грешки, утвърждаване опа
- Магически ключ SysRq
- kgdb/kdb
- JTAG
Проследяване
- gcov
- lcov
- oпрофил
- ftrace
- nop tracer
- функция за проследяване
- sched switch tracer
- проследяване на функционална графика
- динамичен трасиращ инструмент
- trace-cmd/kernelshark
- перф
- LTTng
Прекъсва
- прекъсвания срещу запитване
- прекъсвам
- програмни раздели
- повторно влизане
- събития
- манипулатор на прекъсвания
- споделен манипулатор на прекъсвания
- прекъсване на потока
- контрол на прекъсванията
Отлагане на работа
- горна/долна половина
- softirqs
- задачи
- работни опашки
- резбовани прекъсвания
Паралелност
- критичен регион/участък
- атомен
- състезателно състояние
- синхронизация
- заключване
- заключващи решения
- задънена улица
- спор
- какво да заключа?
- какво може да се използва?
- атомни операции
- центрофуги
- завъртане на четец-писач
- семафор
- двоичен семафор
- мютекс
- читател-писател семафор
- променливи за завършване
- последователни ключалки
- деактивирайте превключването
- ред и бариери
време
- HZ
- Джифи
- големи/малки закъснения
- таймери на ядрото
Хардуерен I/O
- I/O портове
- I/O памет
- Как да се справим със страничните ефекти при достъп до регистри?
Потребителско ядро Communication
- put(get)_user()
- копиране на (от)_user()
- I/O на ядрото
- картографиране на паметта
- procfs
- sysfs
- debugfs
- релета
- мрежова връзка
- ioctl
Преносимост
- размер на думата
- непрозрачни видове
- подписан/неподписан char
- подравняване на данните
- интегрална промоция
- повторно използване на кода
- ендианство
- системна отметка
- размер на страницата
- поръчка на инструкции
- SMP/изпреварване/висока памет
Освен когато е посочено друго, съдържанието и този план на курса са лицензирани съгласно Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).
Изисквания
- Основни познания за използването на система GNU/Linux като краен потребител
- Основно запознаване с обвивката на командния ред
- Основни познания за потребителско пространство / разработка на приложения
- Средни познания по програмиране на C
- Трябваше да е посещавал Embedded GNU/Linux Systems Architecture преди (силно препоръчително!) и/или да разбира добре темите, изложени там
Oтзиви от потребители (5)
Едуард е страхотен фасилитатор
Zibusiso Ncube - Agricatural Research Council
Курс - Ionic 4 and Angular for Developers
Машинен превод
Може би повече упражнения биха били по-добри за учене, но времето беше твърде малко
Gianpiero Arico' - Urmet Spa
Курс - Embedded Linux Systems Architecture
Машинен превод
Miguel's knowledge of the subject was extensive. He made the training easy to understand and the flow was balanced; adding on to each section with new features as needed. He covered everything that was asked and answered each and every question thoroughly. It was a very pleasant experience.
Paul Coaton - SEMPCheck Services
Курс - Flutter Development Bootcamp with Dart
That the trainer adapts to our needs
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Курс - The Yocto Project - An Overview - hands-on
The trainer was enthusiastic, kind, and loved the topic