План на курса

Въведение

    бърза история на GNU/Linux лицензиране Версиониране на ядрото цикъл на освобождаване дървета на ядрото основно ядро спрямо потребителско пространство механизъм срещу политика алтернативи на драйвер на ядрото RTOS срещу Linux

Памет Management

    Виртуална памет срещу физическа памет Разпределение на паметта в зоните на страниците на ядрото API плоча

Корекция на ядрото

    жизнен цикъл git източник на ядрото създаване на корекция проверка корекция корекция корекция изпращане корекция одитиран код

Модули на ядрото

    получаване на източници на ядрото конфигуриране/изграждане/инсталиране на драйвери на устройства (статично свързани, заредени по време на изпълнение) init/exit лицензиране EXPORT SYMBOL GPL извън дървото makefile module-init-tools module в дървото на ядрото Kconfig parameter passing sparse

Char драйвери

    архитектура потребител/ядро интерфейс I/O подсистема VFS sysfs (устройства, шина, драйвери, класове), kobject/ktype/kset linux ядро драйвер модел устройство файлове char драйвер инициализация регистрация отворена, освобождаване cdev, cdev добавяне, cdev del,... главни/малки числа udev, udevmonitor, udevadm

Разширени операции на драйвера за символи

    ioctl отключен ioctl compat ioctl потребителско пространство API пространство на ядрото API процес жизнен цикъл заспиване/блокиране заспиване/събуждане изчакване опашка гръмотевично стадо анкета/избор

Отстраняване на грешки в ядрото

    отстраняване на грешки отстраняване на грешки в ядрото бинарно търсене с git поддръжка за отстраняване на грешки от ядрото printk syslogd, klogd, loglevels, ограничение на скоростта, нива на отстраняване на грешки, отстраняване на грешки селективни подсистеми отстраняване на грешки чрез запитване debugfs oops отстраняване на грешки, потвърждаване на oops Magic SysRq Key kgdb/kdb JTAG

Проследяване

    gcov lcov oprofile ftrace nop tracer функция tracer sched превключвател tracer функция graph tracer динамичен tracer
trace-cmd/kernelshark
  • перф
  • LTTng
  • Прекъсва
  • прекъсвания срещу прекъсване на запитване програмни секции събития за повторно влизане манипулатор на прекъсване споделен манипулатор на прекъсване поток на прекъсване контрол на прекъсване

      Отлагане на работа

    горна/долна половина softirqs tasklets работни опашки резбовани прекъсвания

      Паралелност

    критичен регион/секция състояние на атомна надпревара синхронизация заключване заключващи решения съперничество безизходица какво да заключвам? какво може да се използва? атомарни операции spin locks reader-writer spin locks semaphore binary semaphore mutex reader-writer semaphore completion variables sequential locks disable preemption orderig и бариери

      време

    HZ Jiffies големи/малки забавяния на таймерите на ядрото

      Хардуерен I/O

    I/O портове I/O памет Как да се справим със страничните ефекти при достъп до регистри?

      Потребителско ядро Communication

    put(get)_user() copy to(from)_user() Картографиране на I/O памет на ядрото procfs sysfs debugfs relayfs netlink ioctl

      Преносимост

    размер на думата непрозрачни типове подписан/неподписан char подравняване на данни интегрален промоционален код повторно използване на endiness система отметка на размер на страница инструкция подреждане SMP/изпреварване/висока памет

      Освен когато е посочено друго, съдържанието и този план на курса са лицензирани съгласно Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).

    Изисквания

    • Основни познания за използването на система GNU/Linux като краен потребител
    • Основно запознаване с обвивката на командния ред
    • Основни познания за потребителско пространство / разработка на приложения
    • Средни познания по програмиране на C
    • Трябваше да е посещавал Embedded GNU/Linux Systems Architecture преди (силно препоръчително!) и/или да разбира добре темите, изложени там
     35 Hours

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



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

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

    Свързани Kурсове

    Buildroot: a Firmware Generator for Embedded Systems

    7 Hours

    The Yocto Project - An Overview - hands-on

    28 Hours

    IBM MobileFirst Platform for Hybrid Mobile Application Development

    21 Hours

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