О курсе
Курс «Разработка ядра 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) и Алексей Иванов (инженер-программист в ПАО «Яковлев»).