О курсе

Курс «Разработка ядра Linux» от OTUS охватывает ключевые темы, связанные с внутренним устройством ядра Linux. В программе рассматриваются начальные сведения о ядре, его компиляция и настройка, а также инструменты работы с ядром. Отдельные модули посвящены созданию, сборке и загрузке модулей ядра, включая работу с буфером сообщений dmesg.

Значительная часть курса отведена структурам данных и алгоритмам в ядре: связанным спискам, очередям, стекам, деревьям, битовым картам, а также бинарному поиску и хэшированию. Рассматриваются реальные примеры из кода ядра Linux.

В модулях по управлению процессами и потоками разбираются API, примитивы синхронизации (spinlock, mutex, семафоры, RCU), планировщики CFS и EEVDF. Тема прерываний включает дескрипторы, IDT, top-half и bottom-half обработчики, softirq, tasklets, workqueue, а также виды Page Fault.

Также в программе: время в ядре и таймеры, preemption многозадачность, управление RAM (SLAB и SLUB аллокаторы, kmem_cache, mempool), устройства в Linux (символьные и блочные, ioctl, виртуальные файловые системы /proc, /sys, /dev, netlink). Завершается курс проектной работой с консультациями преподавателей.

Что рассматривается в программе

  • Рассматривается разработка, сборка и интеграция модулей ядра
  • Разбираются структуры данных и алгоритмы в ядре Linux
  • Изучаются примитивы синхронизации процессов и потоков
  • Рассматриваются обработчики прерываний и механизмы отложенного выполнения
  • Разбирается управление памятью: аллокаторы SLAB и SLUB, kmem_cache, mempool
  • Изучаются таймеры и preemption многозадачность
  • Рассматриваются символьные и блочные устройства, ioctl, виртуальные файловые системы

Кому может быть полезен курс

  • Системным администраторам и DevOps-инженерам, интересующимся оптимизацией и настройкой серверов
  • Программистам, желающим перейти в системное программирование и разработку модулей ядра
  • Инженерам по безопасности, занимающимся тестированием и анализом уязвимостей ядра
  • Разработчикам на C, которым нужно углублённое понимание внутреннего устройства ОС
  • Разработчикам embedded-систем, сталкивающимся с созданием драйверов и взаимодействием с аппаратным обеспечением

Вопросы о программе

Какие предварительные знания нужны для курса?

Требуется умение работать в ОС Linux, базовое знание Bash и Python, уверенный уровень разработки на C, а также умение работать и подключаться к виртуальной машине.

Какие темы рассматриваются в программе?

В программе рассматриваются введение в разработку ядра, модули ядра, структуры данных и алгоритмы, управление процессами и потоками, прерывания, таймеры, управление памятью и устройства в Linux.

Предусмотрена ли проектная работа?

Да, заключительный месяц курса посвящён проектной работе. В рамках проекта предусмотрены выбор темы, консультации преподавателей и защита проектных работ.

Кто преподаватели курса?

Преподаватели — Глеб Коробейников (Senior-разработчик ядра Linux в Astra Linux) и Алексей Иванов (инженер-программист в ПАО «Яковлев»).