План на курса

Въведение

  • бърза история на 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 преди (силно препоръчително!) и/или да разбира добре темите, изложени там
 35 Часа

Брой участници


Цена за участник

Oтзиви от потребители (5)

Предстоящи Курсове

Свързани Kатегории