Разработка ядра Linux
26 июня 2025
3 месяца
Онлайн
Для кого этот курс:
- Системные администраторов и DevOps-инженеров, которые хотят улучшить навыки для решения сложных задач, связанных с оптимизацией и настройкой серверов.
- Программистов, желающих перейти в системное программирование, но не понимающих как и с чего начать заниматься системным программированием и разрабатывать модули для ядра.
- Инженеров по безопасности информационных систем, сосредоточенных на тестировании и анализе уязвимостей, которые сталкиваются со сложностями в быстром реагировании на уязвимости, возникающие в ядре, из-за недостатка практического опыта в его разработке и модификации
- Разработчики на C, которым нужны улубленные знания о внутреннем устройстве операционной системы для написания более эффективного кода.
- Системные программисты, у кого есть необходимость глубокого понимания внутренней архитектуры ОС для создания эффективного программного обеспечения
- Разработчики embedded-систем, которые сталкивается с трудностями при необходимости создания драйверов и взаимодействия с аппаратным обеспечением
- Системные администраторы с навыками программирования на C, которые часто сталкиваются с проблемами при настройке и отладке системы, для которых требуется знание ядра
Необходимые знания:
- Уметь работать в ОС Linux
- Базовое знание Bash
- Базовое знание Python
- Уверенный уровень разработки на языках программирования C
- Умение работать и подключаться к Виртуальной машине
Что даст вам этот курс
- Основы разработки ядра: Понимание архитектуры и базовых компонентов ядра Linux, включая его функции и принципы работы
- Создание и отладка модулей: Навыки разработки, компиляции и интеграции модулей ядра, а также работы с буфером сообщений ядра (dmesg)
- Работа со структурами данных и алгоритмами: Освоение операций со сложными структурами данных, такими как связанные списки, очереди, стеки и деревья, с реальными примерами из кода ядра
- Управление процессами и потоками: Понимание работы процессов и потоков в ядре, включая API и примитивы синхронизации (spin блокировки, mutex, семафоры)
- Обработка прерываний: Освоение работы с прерываниями и их обработчиками в контексте ядра, включая аспекты синхронизации
- Управление памятью: Знание методов управления физической и виртуальной памятью, включая различия между SLAB- и SLUB-аллокаторами и механизмами страниц.
Вы научитесь:
- Разрабатывать и интегрировать собственные модули ядра: Напишут, соберут и запустят модули, а также смогут анализировать выводы отладки через dmesg
- Владеть алгоритмами и структурами: Применят темы, изученные о структуре данных для решения реальных задач в проекте на ядре Linux
- Реализовывать синхронизацию процессов и потоков: Используют различные примитивы синхронизации в собственных разработках
- Анализировать и обрабатывать прерывания: Понимают, как работают обработчики прерываний и смогут их отлаживать
- Управлять памятью в ядре: Разработают решения для эффективного управления памятью, включая использование аллокаторов и механизмов управления страницами
- Участвовать в проектах на основе Linux: Подготовят себя к работе в команде на проектах, связанных с разработкой и поддержкой ядра Linux.
Процесс обучения
Обучение проходит онлайн: вебинары, общение с преподавателями и вашей группой в Telegram, сдача домашних работ и получение обратной связи от преподавателя.
Вебинары проводятся 2 раза в неделю по 2 ак. часа и сохраняются в записи в личном кабинете. Вы можете посмотреть их в любое удобное для вас время.
В ходе обучения вы будете выполнять домашние задания. Каждое из них посвящено одному из компонентов вашего выпускного проекта.
После выполнения всех домашних заданий вы получите готовый выпускной проект.
Оптимальная нагрузка
Возможность совмещать учебу с работой
Портфолио
Индивидуальная разработка итоговой проектной работы
Перспективы
Получите знания, которые помогут повысить вашу востребованность и доход
Партнеры
Многие студенты еще во время прохождения первой части программы находят или меняют работу, а к концу обучения могут претендовать на повышение в должности. Мы оказываем помощь в вопросах карьеры на протяжении всего обучения и спустя полгода после его завершения.
- Получите помощь с оформлением резюме, портфолио и сопроводительного письма
- Разместите свое резюме в базе OTUS и сможете получать приглашения на собеседования от партнеров
- Пройдете карьерную консультацию с нашим HR-специалистом
- Получите рекомендации, как искать работу, и советы по прохождению собеседования
Формат обучения
Интерактивные вебинары
2 занятия по 2 ак.часа в неделю. Доступ к записям и материалам остается навсегда
Обратная связь
Домашние задания с поддержкой и обратной связью наших преподавателей помогут освоить изучаемые технологии
Активное комьюнити
Чат в Telegram для общения преподавателей и студентов
Программа
Введение в разработку ядра Linux
Тема 1: Начальные сведения о ядре Linux
Тема 2: Компиляция и настройка ядра. Инструменты работы с ядром
Тема 3: Ядро Linux. Обзор ядра Linux и его архитектуры. Основные функции ядра
Тема 4: Q&A занятие
Модули ядра Linux
Тема 1: Что такое модуль ядра Linux. Как его написать, собрать, запустить. Что такое буффер сообщений ядра(dmesg).
Тема 2: Q&A занятие
Структуры данных и алгоритмы в ядре Linux
Тема 1: Связанные списки в ядре Linux. Реальные примеры из кода ядра Linux
Тема 2: Очереди в ядре Linux. Реальные примеры из кода ядра Linux
Тема 3: Стеки в ядре Linux. Реальные примеры из кода ядра Linux
Тема 4: Деревья в ядре Linux(бинарные и красно-черные). Реальные примеры из кода ядра Linux
Тема 5: Битовые карты в ядре Linux. Реальные примеры из кода ядра Linux
Тема 6: Алгоритмы в ядре Linux. Бинарный поиск. Поиск с помощью двоичных деревьев. Хэширование.
Тема 7: Q&A занятие
Управление процессами и потоками
Тема 1: Что такое процесс в ядре Linux. Что такое поток в ядре Linux. API для работы с процессами и потоками.
Тема 2: Синхронизация процессов и потоков и зачем это надо. Что такое spin блокировка, mutex, семафоры и др. примитивы синхронизации
Тема 3: Детально рассмотрим как работает Spinlock, Mutex, Semaphores. Deep diving в архитектурный код ядра, где реализованы эти примитивы. Разбираем RCU
Тема 4: Системный планировщик и диспетчеризация процессов в ядре. Планировщик CFS. Планировщик EEVDF.
Тема 5: Q&A занятие
Прерывания. Обработчики прерываний. Cинхронизация в контексте прерываний. Виды Page Fault в Linux
Тема 1: Прерывания, дескрипторы прерываний, IDT и как это выглядит в ядре Linux.
Тема 2: Top-half и Bottom-half обработчиков прерываний. Softirq, Tasklets, Workqueue
Тема 3: Что такое Page Fault. Какие виды PF бывают в Linux
Тема 4: Q&A занятие
Время в ядре Linux. Таймеры. Preemption многозадачность.
Тема 1: Как протекает время в ядре Linux. API таймеров, напишем несколько модулей ядра, чтобы пощупать таймеры. Примеры использования таймеров из кода ядра
Тема 2: Что такое Preemption. Обобщаем работу с процессами и прерываниями
Тема 3: Q&A занятие
Управление RAM памятью
Тема 1: Управление памятью в Linux. SLAB-аллокатор. SLUB-аллокатор. Плюсы и минусы этих аллокаторов. API для выделения памяти в ядре.
Тема 2: Отличие физической памяти от виртуальной памяти. Что такое Page Table, как разрешаются адреса(вирт->физ). Реализация pagging в ядре Linux
Тема 3: Ситуация когда нужно выделить заранее много памяти для объектов одинакового размера. Что такое kmem_cache. Что такое mempool
Тема 4: Q&A занятие
Устройства в Linux
Тема 1: Символьные устройства
Тема 2: Блочные устройства
Тема 3: Взаимодействие с устройством через ioctl. Виртуальные файловые системы /proc, /sys, /dev. Общение через сокет netlink.
Проектная работа
Также вы можете получить полную программу, чтобы убедиться, что обучение вам подходит
Выпускной проект
Каждый курс завершается финальным проектом, который предстоит защитить перед преподавателями и командой. Вам будет, что обсудить на собеседовании!
Вы можете выбрать одну из предложенных преподавателем тем или реализовать свою идею.
Корпоративное обучение для ваших сотрудников
- Курсы OTUS верифицированы крупными игроками ИТ-рынка и предлагают инструменты и практики, актуальные на данный момент
- Студенты работают в группах, могут получить консультации не только преподавателей, но и профессионального сообщества
- OTUS проверяет знания студентов перед стартом обучения и после его завершения
- Простой и удобный личный кабинет компании, в котором можно видеть статистику по обучению сотрудников
- Сертификат нашего выпускника за 5 лет стал гарантом качества знаний в обществе
- OTUS создал в IT более 120 курсов по 7 направлениям, линейка которых расширяется по 40-50 курсов в год
Сертификат о прохождении курса
OTUS осуществляет лицензированную образовательную деятельность.
В конце прохождения специализации вы получите сертификат OTUS и официальный диплом о получении новой специальности
После обучения вы:
- Получите материалы по пройденным занятиям (видеозаписи курса и дoполнительные материалы)
- Создадите свой проект, который поможет при прохождении собеседований
- Повысите свою ценность и конкурентоспособность как IT-специалист
- Получите сертификат об окончании курса
Разработка ядра Linux
Полная стоимость
Стоимость указана для оплаты физическими лицами
вычета до 13% стоимости обучения. Пройдите тестирование и менеджер вас проконсультирует
+7 499 938-92-02 бесплатно