Понимание ядра Linux: от архитектуры до разработки эффективных модулей Для кого этот курс: Системные администраторов и DevOps-инженеров, которые хотят улучшить навыки для решения сложных задач, связанных с оптимизацией и настройкой серверов. Программистов, желающих перейти в системное программирование, но не понимающих как и с чего начать заниматься системным программированием и разрабатывать модули для ядра. Инженеров по безопасности информационных систем, сосредоточенных на тестировании и анализе уязвимостей, которые сталкиваются со сложностями в быстром реагировании на уязвимости, возникающие в ядре, из-за недостатка практического опыта в его разработке и модификации Разработчики на C, которым нужны углубленные знания о внутреннем устройстве операционной системы для написания более эффективного кода. Системные программисты, у кого есть необходимость глубокого понимания внутренней архитектуры ОС для создания эффективного программного обеспечения Разработчики embedded-систем, которые сталкивается с трудностями при необходимости создания драйверов и взаимодействия с аппаратным обеспечением Системные администраторы с навыками программирования на C, которые часто сталкиваются с проблемами при настройке и отладке системы, для которых требуется знание ядра Вы научитесь: Разрабатывать и интегрировать собственные модули ядра: Напишут, соберут и запустят модули, а также смогут анализировать выводы отладки через dmesg Владеть алгоритмами и структурами: Применят темы, изученные о структуре данных для решения реальных задач в проекте на ядре Linux Реализовывать синхронизацию процессов и потоков: Используют различные примитивы синхронизации в собственных разработках Анализировать и обрабатывать прерывания: Понимают, как работают обработчики прерываний и смогут их отлаживать Управлять памятью в ядре: Разработают решения для эффективного управления памятью, включая использование аллокаторов и механизмов управления страницами Участвовать в проектах на основе Linux: Подготовят себя к работе в команде на проектах, связанных с разработкой и поддержкой ядра Linux. Необходимые знания: Уметь работать в ОС Linux Базовое знание Bash Базовое знание Python Уверенный уровень разработки на языках программирования C Умение работать и подключаться к Виртуальной машине Программа Введение в разработку ядра Linux Модули ядра Linux Структуры данных и алгоритмы в ядре Linux Управление процессами и потоками Прерывания. Обработчики прерываний. Cинхронизация в контексте прерываний. Виды Page Fault в Linux Время в ядре Linux. Таймеры. Preemption многозадачность. Управление RAM памятью Устройства в Linux Проектная работа Что даст курс: Основы разработки ядра: Понимание архитектуры и базовых компонентов ядра Linux, включая его функции и принципы работы Создание и отладка модулей: Навыки разработки, компиляции и интеграции модулей ядра, а также работы с буфером сообщений ядра (dmesg) Работа со структурами данных и алгоритмами: Освоение операций со сложными структурами данных, такими как связанные списки, очереди, стеки и деревья, с реальными примерами из кода ядра Управление процессами и потоками: Понимание работы процессов и потоков в ядре, включая API и примитивы синхронизации (spin блокировки, mutex, семафоры) Обработка прерываний: Освоение работы с прерываниями и их обработчиками в контексте ядра, включая аспекты синхронизации Управление памятью: Знание методов управления физической и виртуальной памятью, включая различия между SLAB- и SLUB-аллокаторами и механизмами страниц. Преподаватели: - Коробейников Глеб Astra Linux. Senior-разработчик ядра Linux 1 год в Otus 4 года опыта разработчиком в ядре Linux. Работал в таких фирмах как RAIDIX, YADRO, SBERTECH. Есть несколько багрепортов и коммитов в ядро Linux. Практический опыт базируется на знании языков C, bash и знании инструментов для отладки ядерного кода таких как kmemleak, KASAN, KGDB, ftrace, eBPF. Теоретический опыт базируется на знании архитектуры amd64, архитектуры современных операционых систем в том числе Linux. Окончил ИГУ по специальности чистая математика. - Алексей Иванов ПАО "Яковлев" - филиал"ОАК". Инженер-программист 1 год в Otus Занимаюсь разработкой и модернизацией PLM систем; Разработкой ПО для автоматизации обработки Конструкторско-технологической информации. В IT 3 года. Практический опыт базируется на знании языков С и С#. Окончил ИГУ по направлению "Математика", и курс повышения квалификации "Программирование на C# Продвинутый уровень - часть 1" от Трайтек