35 added
16 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Понимание ядра Linux: от архитектуры до разработки эффективных модулей</p>
1
<p>Понимание ядра Linux: от архитектуры до разработки эффективных модулей</p>
2
<h2>Для кого этот курс:</h2>
2
<h2>Для кого этот курс:</h2>
3
<ul><li> <strong>Системные администраторов и DevOps-инженеров</strong>, которые хотят улучшить навыки для решения сложных задач, связанных с оптимизацией и настройкой серверов.</li>
3
<ul><li> <strong>Системные администраторов и DevOps-инженеров</strong>, которые хотят улучшить навыки для решения сложных задач, связанных с оптимизацией и настройкой серверов.</li>
4
<li><strong>Программистов, желающих перейти в системное программирование,</strong>но не понимающих как и с чего начать заниматься системным программированием и разрабатывать модули для ядра.</li>
4
<li><strong>Программистов, желающих перейти в системное программирование,</strong>но не понимающих как и с чего начать заниматься системным программированием и разрабатывать модули для ядра.</li>
5
<li><strong>Инженеров по безопасности информационных систем, сосредоточенных на тестировании и анализе уязвимостей</strong>, которые сталкиваются со сложностями в быстром реагировании на уязвимости, возникающие в ядре, из-за недостатка практического опыта в его разработке и модификации</li>
5
<li><strong>Инженеров по безопасности информационных систем, сосредоточенных на тестировании и анализе уязвимостей</strong>, которые сталкиваются со сложностями в быстром реагировании на уязвимости, возникающие в ядре, из-за недостатка практического опыта в его разработке и модификации</li>
6
<li><strong>Разработчики на C</strong>, которым нужны улубленные знания о внутреннем устройстве операционной системы для написания более эффективного кода.</li>
6
<li><strong>Разработчики на C</strong>, которым нужны улубленные знания о внутреннем устройстве операционной системы для написания более эффективного кода.</li>
7
<li><strong>Системные программисты</strong>, у кого есть необходимость глубокого понимания внутренней архитектуры ОС для создания эффективного программного обеспечения</li>
7
<li><strong>Системные программисты</strong>, у кого есть необходимость глубокого понимания внутренней архитектуры ОС для создания эффективного программного обеспечения</li>
8
-
<li><strong>Разработчики embedded-систем</strong>, которые сталкивается с трудностями при необходимости создания драйверов и взаимодействия с аппаратным обеспечением</li>
8
+
<li><strong>Разработчики встраиваемых (embedded) систем</strong>, которые сталкивается с трудностями при необходимости создания драйверов и взаимодействия с аппаратным обеспечением</li>
9
<li><strong>Системные администраторы с навыками программирования на C</strong>, которые часто сталкиваются с проблемами при настройке и отладке системы, для которых требуется знание ядра</li>
9
<li><strong>Системные администраторы с навыками программирования на C</strong>, которые часто сталкиваются с проблемами при настройке и отладке системы, для которых требуется знание ядра</li>
10
</ul><h3><strong>Необходимые знания:</strong></h3>
10
</ul><h3><strong>Необходимые знания:</strong></h3>
11
<ul><li>Уметь работать в ОС Linux</li>
11
<ul><li>Уметь работать в ОС Linux</li>
12
<li>Базовое знание Bash</li>
12
<li>Базовое знание Bash</li>
13
<li>Базовое знание Python</li>
13
<li>Базовое знание Python</li>
14
<li>Уверенный уровень разработки на языках программирования C</li>
14
<li>Уверенный уровень разработки на языках программирования C</li>
15
<li>Умение работать и подключаться к Виртуальной машине</li>
15
<li>Умение работать и подключаться к Виртуальной машине</li>
16
</ul><h2>Что даст вам этот курс</h2>
16
</ul><h2>Что даст вам этот курс</h2>
17
<ul><li><strong>Основы разработки ядра:</strong>Понимание архитектуры и базовых компонентов ядра Linux, включая его функции и принципы работы</li>
17
<ul><li><strong>Основы разработки ядра:</strong>Понимание архитектуры и базовых компонентов ядра Linux, включая его функции и принципы работы</li>
18
<li><strong>Создание и отладка модулей:</strong>Навыки разработки, компиляции и интеграции модулей ядра, а также работы с буфером сообщений ядра (dmesg)</li>
18
<li><strong>Создание и отладка модулей:</strong>Навыки разработки, компиляции и интеграции модулей ядра, а также работы с буфером сообщений ядра (dmesg)</li>
19
<li><strong>Работа со структурами данных и алгоритмами:</strong>Освоение операций со сложными структурами данных, такими как связанные списки, очереди, стеки и деревья, с реальными примерами из кода ядра</li>
19
<li><strong>Работа со структурами данных и алгоритмами:</strong>Освоение операций со сложными структурами данных, такими как связанные списки, очереди, стеки и деревья, с реальными примерами из кода ядра</li>
20
<li><strong>Управление процессами и потоками:</strong>Понимание работы процессов и потоков в ядре, включая API и примитивы синхронизации (spin блокировки, mutex, семафоры)</li>
20
<li><strong>Управление процессами и потоками:</strong>Понимание работы процессов и потоков в ядре, включая API и примитивы синхронизации (spin блокировки, mutex, семафоры)</li>
21
<li><strong>Обработка прерываний:</strong>Освоение работы с прерываниями и их обработчиками в контексте ядра, включая аспекты синхронизации</li>
21
<li><strong>Обработка прерываний:</strong>Освоение работы с прерываниями и их обработчиками в контексте ядра, включая аспекты синхронизации</li>
22
<li><strong>Управление памятью:</strong>Знание методов управления физической и виртуальной памятью, включая различия между SLAB- и SLUB-аллокаторами и механизмами страниц.</li>
22
<li><strong>Управление памятью:</strong>Знание методов управления физической и виртуальной памятью, включая различия между SLAB- и SLUB-аллокаторами и механизмами страниц.</li>
23
</ul><h2><strong>Вы научитесь</strong>:</h2>
23
</ul><h2><strong>Вы научитесь</strong>:</h2>
24
<ul><li>Разрабатывать и интегрировать собственные модули ядра: Напишут, соберут и запустят модули, а также смогут анализировать выводы отладки через dmesg</li>
24
<ul><li>Разрабатывать и интегрировать собственные модули ядра: Напишут, соберут и запустят модули, а также смогут анализировать выводы отладки через dmesg</li>
25
<li>Владеть алгоритмами и структурами: Применят темы, изученные о структуре данных для решения реальных задач в проекте на ядре Linux</li>
25
<li>Владеть алгоритмами и структурами: Применят темы, изученные о структуре данных для решения реальных задач в проекте на ядре Linux</li>
26
<li>Реализовывать синхронизацию процессов и потоков: Используют различные примитивы синхронизации в собственных разработках</li>
26
<li>Реализовывать синхронизацию процессов и потоков: Используют различные примитивы синхронизации в собственных разработках</li>
27
<li>Анализировать и обрабатывать прерывания: Понимают, как работают обработчики прерываний и смогут их отлаживать</li>
27
<li>Анализировать и обрабатывать прерывания: Понимают, как работают обработчики прерываний и смогут их отлаживать</li>
28
<li>Управлять памятью в ядре: Разработают решения для эффективного управления памятью, включая использование аллокаторов и механизмов управления страницами</li>
28
<li>Управлять памятью в ядре: Разработают решения для эффективного управления памятью, включая использование аллокаторов и механизмов управления страницами</li>
29
<li>Участвовать в проектах на основе Linux: Подготовят себя к работе в команде на проектах, связанных с разработкой и поддержкой ядра Linux.</li>
29
<li>Участвовать в проектах на основе Linux: Подготовят себя к работе в команде на проектах, связанных с разработкой и поддержкой ядра Linux.</li>
30
</ul><h2>Процесс обучения</h2>
30
</ul><h2>Процесс обучения</h2>
31
<p>Обучение проходит онлайн: вебинары, общение с преподавателями и вашей группой в Telegram, сдача домашних работ и получение обратной связи от преподавателя.</p>
31
<p>Обучение проходит онлайн: вебинары, общение с преподавателями и вашей группой в Telegram, сдача домашних работ и получение обратной связи от преподавателя.</p>
32
<p><strong>Вебинары проводятся 2 раза в неделю по 2 ак. часа </strong>и <strong>сохраняются в записи </strong>в личном кабинете. Вы можете посмотреть их в любое удобное для вас время.</p>
32
<p><strong>Вебинары проводятся 2 раза в неделю по 2 ак. часа </strong>и <strong>сохраняются в записи </strong>в личном кабинете. Вы можете посмотреть их в любое удобное для вас время.</p>
33
<p>В ходе обучения вы будете выполнять домашние задания. Каждое из них посвящено одному из компонентов вашего выпускного проекта.</p>
33
<p>В ходе обучения вы будете выполнять домашние задания. Каждое из них посвящено одному из компонентов вашего выпускного проекта.</p>
34
<p>После выполнения всех домашних заданий вы получите готовый выпускной проект.</p>
34
<p>После выполнения всех домашних заданий вы получите готовый выпускной проект.</p>
35
<h3>Оптимальная нагрузка</h3>
35
<h3>Оптимальная нагрузка</h3>
36
<p>Возможность совмещать учебу с работой</p>
36
<p>Возможность совмещать учебу с работой</p>
37
<h3>Портфолио</h3>
37
<h3>Портфолио</h3>
38
<p>Индивидуальная разработка итоговой проектной работы </p>
38
<p>Индивидуальная разработка итоговой проектной работы </p>
39
<h3>Перспективы</h3>
39
<h3>Перспективы</h3>
40
<p>Получите знания, которые помогут повысить вашу востребованность и доход</p>
40
<p>Получите знания, которые помогут повысить вашу востребованность и доход</p>
41
<h2>Партнеры</h2>
41
<h2>Партнеры</h2>
42
<p>Многие студенты еще во время прохождения первой части программы находят или меняют работу, а к концу обучения могут претендовать на повышение в должности. Мы оказываем помощь в вопросах карьеры на протяжении всего обучения и спустя полгода после его завершения.</p>
42
<p>Многие студенты еще во время прохождения первой части программы находят или меняют работу, а к концу обучения могут претендовать на повышение в должности. Мы оказываем помощь в вопросах карьеры на протяжении всего обучения и спустя полгода после его завершения.</p>
43
<ul><li><b>Получите помощь с оформлением резюме</b>, портфолио и сопроводительного письма</li>
43
<ul><li><b>Получите помощь с оформлением резюме</b>, портфолио и сопроводительного письма</li>
44
<li><b>Разместите свое резюме в базе OTUS</b>и сможете получать приглашения на собеседования от партнеров</li>
44
<li><b>Разместите свое резюме в базе OTUS</b>и сможете получать приглашения на собеседования от партнеров</li>
45
<li><b>Пройдете карьерную консультацию</b>с нашим HR-специалистом</li>
45
<li><b>Пройдете карьерную консультацию</b>с нашим HR-специалистом</li>
46
<li><b>Получите рекомендации, как искать работу</b>, и советы по прохождению собеседования</li>
46
<li><b>Получите рекомендации, как искать работу</b>, и советы по прохождению собеседования</li>
47
</ul><h5>Формат обучения</h5>
47
</ul><h5>Формат обучения</h5>
48
<h3>Интерактивные вебинары</h3>
48
<h3>Интерактивные вебинары</h3>
49
<p>2 занятия по 2 ак.часа в неделю. Доступ к записям и материалам остается навсегда</p>
49
<p>2 занятия по 2 ак.часа в неделю. Доступ к записям и материалам остается навсегда</p>
50
<h3>Обратная связь</h3>
50
<h3>Обратная связь</h3>
51
<p>Домашние задания с поддержкой и обратной связью наших преподавателей помогут освоить изучаемые технологии</p>
51
<p>Домашние задания с поддержкой и обратной связью наших преподавателей помогут освоить изучаемые технологии</p>
52
-
<h3>Активное комьюнити</h3>
52
+
<h3>Активное сообщество</h3>
53
<p>Чат в Telegram для общения преподавателей и студентов</p>
53
<p>Чат в Telegram для общения преподавателей и студентов</p>
54
<h2>Программа</h2>
54
<h2>Программа</h2>
55
<h5>Введение в разработку ядра Linux</h5>
55
<h5>Введение в разработку ядра Linux</h5>
56
<p>В этом модуле вы рассмотрите общие сведения о ядре Linux, его сборке и установке.</p>
56
<p>В этом модуле вы рассмотрите общие сведения о ядре Linux, его сборке и установке.</p>
57
<p>Тема 1: Начальные сведения о ядре Linux</p>
57
<p>Тема 1: Начальные сведения о ядре Linux</p>
58
<p>Тема 2: Компиляция и настройка ядра. Инструменты работы с ядром</p>
58
<p>Тема 2: Компиляция и настройка ядра. Инструменты работы с ядром</p>
59
<p>Тема 3: Ядро Linux. Обзор ядра Linux и его архитектуры. Основные функции ядра // ДЗ</p>
59
<p>Тема 3: Ядро Linux. Обзор ядра Linux и его архитектуры. Основные функции ядра // ДЗ</p>
60
<p>Тема 4: Q&A занятие по ДЗ</p>
60
<p>Тема 4: Q&A занятие по ДЗ</p>
61
<h5>Модули ядра Linux</h5>
61
<h5>Модули ядра Linux</h5>
62
<p>В этом модуле вы рассмотрите что такое модуль ядра; научитесь собирать, загружать и выгружать модули ядра.</p>
62
<p>В этом модуле вы рассмотрите что такое модуль ядра; научитесь собирать, загружать и выгружать модули ядра.</p>
63
-
<p>Тема 1: Что такое модуль ядра Linux. Как его написать, собрать, запустить. Что такое буффер сообщений ядра (dmesg) // ДЗ</p>
63
+
<p>Тема 1: Модуль ядра Linux. Буффер сообщений ядра (dmesg)</p>
64
-
<p>Тема 2: Написание модуля ядра "Hello, World!"</p>
64
+
<p>Тема 2: Написание модуля ядра "Hello, World!" // ДЗ</p>
65
<p>Тема 3: Q&A занятие по ДЗ</p>
65
<p>Тема 3: Q&A занятие по ДЗ</p>
66
+
<h5>Отладка модулей ядра</h5>
67
+
<p>В этом модуле вы познакомитесь с инструментами отладки ядра и их основными возможностями.</p>
68
+
<p>Тема 1: Отладка с помощью kgdb</p>
69
+
<p>Тема 2: Другие инструменты отладки</p>
66
<h5>Структуры данных и алгоритмы в ядре Linux</h5>
70
<h5>Структуры данных и алгоритмы в ядре Linux</h5>
67
<p>В этом модуле вы рассмотрите базовые структуры данных и алгоритмы в ядре Linux.</p>
71
<p>В этом модуле вы рассмотрите базовые структуры данных и алгоритмы в ядре Linux.</p>
68
<p>Тема 1: Связанные списки в ядре Linux. Реальные примеры из кода ядра Linux // ДЗ</p>
72
<p>Тема 1: Связанные списки в ядре Linux. Реальные примеры из кода ядра Linux // ДЗ</p>
69
<p>Тема 2: Очереди в ядре Linux. Реальные примеры из кода ядра Linux // ДЗ</p>
73
<p>Тема 2: Очереди в ядре Linux. Реальные примеры из кода ядра Linux // ДЗ</p>
70
-
<p>Тема 3: Стеки в ядре Linux. Реальные примеры из кода ядра Linux</p>
74
+
<p>Тема 3: Битовые карты в ядре Linux. Реальные примеры из кода ядра Linux // ДЗ</p>
71
-
<p>Тема 4: Битовые карты в ядре Linux. Реальные примеры из кода ядра Linux // ДЗ</p>
75
+
<p>Тема 4: Алгоритмы в ядре Linux. Бинарный поиск. Поиск с помощью двоичных деревьев. Хэширование // ДЗ</p>
72
-
<p>Тема 5: Алгоритмы в ядре Linux. Бинарный поиск. Поиск с помощью двоичных деревьев. Хэширование // ДЗ</p>
76
+
<p>Тема 5: Сетевой стек в ядре Linux</p>
73
<p>Тема 6: Q&A занятие по ДЗ</p>
77
<p>Тема 6: Q&A занятие по ДЗ</p>
74
<h5>Управление процессами и потоками</h5>
78
<h5>Управление процессами и потоками</h5>
75
<p>В этом модуле вы рассмотрите процессы и потоки в ядре Linux; примитивы синхронизации и их реализацию.</p>
79
<p>В этом модуле вы рассмотрите процессы и потоки в ядре Linux; примитивы синхронизации и их реализацию.</p>
76
-
<p>Тема 1: Что такое процесс в ядре Linux. Что такое поток в ядре Linux. API для работы с процессами и потоками</p>
80
+
<p>Тема 1: Процесс в ядре Linux. Поток в ядре Linux. API для работы с процессами и потоками</p>
77
<p>Тема 2: Синхронизация процессов и потоков и зачем это надо. Что такое spin блокировка, mutex, семафоры и др. примитивы синхронизации</p>
81
<p>Тема 2: Синхронизация процессов и потоков и зачем это надо. Что такое spin блокировка, mutex, семафоры и др. примитивы синхронизации</p>
78
-
<p>Тема 3: Детально рассмотрим как работает Spinlock, Mutex, Semaphores. Deep diving в архитектурный код ядра, где реализованы эти примитивы. Разбираем RCU // ДЗ</p>
82
+
<p>Тема 3: Работа Spinlock, Mutex, Semaphores. Архитектурный код ядра, где реализованы эти примитивы. RCU // ДЗ</p>
79
<p>Тема 4: Q&A занятие по ДЗ</p>
83
<p>Тема 4: Q&A занятие по ДЗ</p>
80
<h5>Прерывания. Обработчики прерываний. Cинхронизация в контексте прерываний. Виды Page Fault в Linux</h5>
84
<h5>Прерывания. Обработчики прерываний. Cинхронизация в контексте прерываний. Виды Page Fault в Linux</h5>
81
<p>В этом модуле вы рассмотрите прерывания и их обработка в ядре Linux; разновидности прерываний, разбор PF-ов; механизмы отложенного выполнения в ядре Linux.</p>
85
<p>В этом модуле вы рассмотрите прерывания и их обработка в ядре Linux; разновидности прерываний, разбор PF-ов; механизмы отложенного выполнения в ядре Linux.</p>
82
<p>Тема 1: Прерывания, дескрипторы прерываний, IDT и как это выглядит в ядре Linux</p>
86
<p>Тема 1: Прерывания, дескрипторы прерываний, IDT и как это выглядит в ядре Linux</p>
83
<p>Тема 2: Top-half и Bottom-half обработчиков прерываний. Softirq, Tasklets, Workqueue</p>
87
<p>Тема 2: Top-half и Bottom-half обработчиков прерываний. Softirq, Tasklets, Workqueue</p>
84
-
<p>Тема 3: Что такое Page Fault. Какие виды PF бывают в Linux // ДЗ</p>
88
+
<p>Тема 3: Page Fault. Виды PF в Linux // ДЗ</p>
85
<p>Тема 4: Q&A занятие по ДЗ</p>
89
<p>Тема 4: Q&A занятие по ДЗ</p>
86
<h5>Время в ядре Linux. Таймеры. Preemption многозадачность.</h5>
90
<h5>Время в ядре Linux. Таймеры. Preemption многозадачность.</h5>
87
<p>В этом модуле вы рассмотрите таймеры в ядре Linux и виды многозадачности, в частности preemption многозадачность; обобщите знания о прерываниях, таймерах, процессах и многозадачности.</p>
91
<p>В этом модуле вы рассмотрите таймеры в ядре Linux и виды многозадачности, в частности preemption многозадачность; обобщите знания о прерываниях, таймерах, процессах и многозадачности.</p>
88
<p>Тема 1: Как протекает время в ядре Linux. API таймеров</p>
92
<p>Тема 1: Как протекает время в ядре Linux. API таймеров</p>
89
<p>Тема 2: Что такое Preemption. Обобщаем работу с процессами и прерываниями // ДЗ</p>
93
<p>Тема 2: Что такое Preemption. Обобщаем работу с процессами и прерываниями // ДЗ</p>
90
<p>Тема 3: Q&A занятие по ДЗ</p>
94
<p>Тема 3: Q&A занятие по ДЗ</p>
91
<h5>Управление RAM памятью</h5>
95
<h5>Управление RAM памятью</h5>
92
<p>В этом модуле вы рассмотрите виртуальную и физическую память; аллокаторы SLAB и SLUB в ядре; способы эффективного выделения памяти под задачу.</p>
96
<p>В этом модуле вы рассмотрите виртуальную и физическую память; аллокаторы SLAB и SLUB в ядре; способы эффективного выделения памяти под задачу.</p>
93
-
<p>Тема 1: Управление памятью в Linux. SLAB-аллокатор. SLUB-аллокатор. Плюсы и минусы этих аллокаторов. API для выделения памяти в ядре</p>
97
+
<p>Тема 1: Управление памятью в Linux. SLAB-аллокатор, SLUB-аллокатор. API для выделения памяти в ядре</p>
94
<p>Тема 2: Отличие физической памяти от виртуальной памяти. Page Table. Реализация pagging в ядре Linux</p>
98
<p>Тема 2: Отличие физической памяти от виртуальной памяти. Page Table. Реализация pagging в ядре Linux</p>
95
-
<p>Тема 3: Ситуация когда нужно выделить заранее много памяти для объектов одинакового размера. Что такое kmem_cache. Что такое mempool // ДЗ</p>
99
+
<p>Тема 3: Выделение памяти для объектов одинакового размера заранее. Kmem_cache. Mempool // ДЗ</p>
96
<p>Тема 4: Q&A занятие по ДЗ</p>
100
<p>Тема 4: Q&A занятие по ДЗ</p>
97
<h5>Устройства в Linux</h5>
101
<h5>Устройства в Linux</h5>
98
<p>В этом модуле вы изучите символьные и блочные устройства, виртуальные файловые системы и интерфейсы.</p>
102
<p>В этом модуле вы изучите символьные и блочные устройства, виртуальные файловые системы и интерфейсы.</p>
99
<p>Тема 1: Символьные устройства</p>
103
<p>Тема 1: Символьные устройства</p>
100
<p>Тема 2: Блочные устройства</p>
104
<p>Тема 2: Блочные устройства</p>
101
<p>Тема 3: Взаимодействие с устройством через ioctl. Виртуальные файловые системы /proc, /sys, /dev. Общение через сокет netlink</p>
105
<p>Тема 3: Взаимодействие с устройством через ioctl. Виртуальные файловые системы /proc, /sys, /dev. Общение через сокет netlink</p>
102
-
<p>Тема 4: Отладка модулей ядра. Инструменты отладки</p>
103
<h5>Проектная работа</h5>
106
<h5>Проектная работа</h5>
104
<p>Заключительный месяц курса посвящён проектной работе. Проект - это самая интересная часть обучения. Вы будете разрабатывать его на основе полученных на курсе навыков и компетенций. В процессе работы над проектом можно получить консультацию преподавателей.</p>
107
<p>Заключительный месяц курса посвящён проектной работе. Проект - это самая интересная часть обучения. Вы будете разрабатывать его на основе полученных на курсе навыков и компетенций. В процессе работы над проектом можно получить консультацию преподавателей.</p>
105
<p>Тема 1: Выбор темы и организация проектной работы // Проект</p>
108
<p>Тема 1: Выбор темы и организация проектной работы // Проект</p>
106
<p>Тема 2: Консультация по проектам и домашним заданиям</p>
109
<p>Тема 2: Консультация по проектам и домашним заданиям</p>
107
<p>Тема 3: Защита проектных работ</p>
110
<p>Тема 3: Защита проектных работ</p>
108
<p>Тема 4: Подведение итогов курса</p>
111
<p>Тема 4: Подведение итогов курса</p>
109
<h5>Также вы можете получить полную программу, чтобы убедиться, что обучение вам подходит</h5>
112
<h5>Также вы можете получить полную программу, чтобы убедиться, что обучение вам подходит</h5>
110
<h2>Выпускной проект</h2>
113
<h2>Выпускной проект</h2>
111
<p>Каждый курс завершается финальным проектом, который предстоит защитить перед преподавателями и командой. Вам будет, что обсудить на собеседовании!</p>
114
<p>Каждый курс завершается финальным проектом, который предстоит защитить перед преподавателями и командой. Вам будет, что обсудить на собеседовании!</p>
112
<p>Вы можете выбрать одну из предложенных преподавателем тем или реализовать свою идею.</p>
115
<p>Вы можете выбрать одну из предложенных преподавателем тем или реализовать свою идею.</p>
113
<h2>Преподаватели</h2>
116
<h2>Преподаватели</h2>
114
<h3>Коробейников Глеб</h3>
117
<h3>Коробейников Глеб</h3>
115
<p>Astra Linux</p>
118
<p>Astra Linux</p>
116
<p>Senior-разработчик ядра Linux</p>
119
<p>Senior-разработчик ядра Linux</p>
117
<p>4 года опыта разработчиком в ядре Linux. Работал в таких фирмах как RAIDIX, YADRO, SBERTECH. Есть несколько багрепортов и коммитов в ядро Linux. Практический опыт базируется на знании языков C, bash и знании инструментов для отладки ядерного кода таких как kmemleak, KASAN, KGDB, ftrace, eBPF. Теоретический опыт базируется на знании архитектуры amd64, архитектуры современных операционых систем в том числе Linux. Окончил ИГУ по специальности чистая математика.</p>
120
<p>4 года опыта разработчиком в ядре Linux. Работал в таких фирмах как RAIDIX, YADRO, SBERTECH. Есть несколько багрепортов и коммитов в ядро Linux. Практический опыт базируется на знании языков C, bash и знании инструментов для отладки ядерного кода таких как kmemleak, KASAN, KGDB, ftrace, eBPF. Теоретический опыт базируется на знании архитектуры amd64, архитектуры современных операционых систем в том числе Linux. Окончил ИГУ по специальности чистая математика.</p>
118
<h4>Преподает на курсах</h4>
121
<h4>Преподает на курсах</h4>
119
<ul><li>Разработка ядра Linux</li>
122
<ul><li>Разработка ядра Linux</li>
120
</ul><h3>Вячеслав Степанов</h3>
123
</ul><h3>Вячеслав Степанов</h3>
121
<p>НТЦ Модуль</p>
124
<p>НТЦ Модуль</p>
122
<p>Начальник сектора разработки embedded Linux</p>
125
<p>Начальник сектора разработки embedded Linux</p>
123
<p>Мой профессиональный путь начался с должности инженера-программиста в этой же компании. На собственном опыте прошел все ступени развития: начинал с написания низкоуровневых библиотек для микроконтроллеров, а затем перешел к созданию сложных систем на Embedded Linux. Имел опыт работы с отечественными процессорами "Эльбрус", где занимался адаптацией драйверов и прикладных программ. Моим ключевым проектом стала разработка программного обеспечения для встраиваемого бортового вычислителя "NM Pilot", который сегодня используется в реальных промышленных задачах, например, в самоходных буровых установках горнорудной промышленности. Магистр МАИ по специальности "Конструирование и технология электронных средств".</p>
126
<p>Мой профессиональный путь начался с должности инженера-программиста в этой же компании. На собственном опыте прошел все ступени развития: начинал с написания низкоуровневых библиотек для микроконтроллеров, а затем перешел к созданию сложных систем на Embedded Linux. Имел опыт работы с отечественными процессорами "Эльбрус", где занимался адаптацией драйверов и прикладных программ. Моим ключевым проектом стала разработка программного обеспечения для встраиваемого бортового вычислителя "NM Pilot", который сегодня используется в реальных промышленных задачах, например, в самоходных буровых установках горнорудной промышленности. Магистр МАИ по специальности "Конструирование и технология электронных средств".</p>
124
<h4>Преподает на курсах</h4>
127
<h4>Преподает на курсах</h4>
125
<ul><li>Программист С</li>
128
<ul><li>Программист С</li>
126
<li>Разработка ядра Linux</li>
129
<li>Разработка ядра Linux</li>
127
</ul><p>Эксперты-практики делятся опытом, разбирают кейсы студентов и дают развернутый фидбэк на домашние задания</p>
130
</ul><p>Эксперты-практики делятся опытом, разбирают кейсы студентов и дают развернутый фидбэк на домашние задания</p>
131
+
<h2>Ближайшие мероприятия</h2>
132
+
<p>Открытый вебинар - это настоящее занятие в режиме он-лайн с преподавателем курса, которое позволяет посмотреть, как проходит процесс обучения. В ходе занятия слушатели имеют возможность задать вопросы и получить знания по реальным практическим кейсам.</p>
133
+
<p>Платформенные драйвера. Как управлять периферией систем на кристалле (SoC)</p>
134
+
<p>Вячеслав Степанов</p>
135
+
<p>На уроке рассмотрятся механизмы взаимодействия ядра Linux с периферией SoC: как ядро "видит" железо через файл дерева устройств (Device Tree), и путь от описания пинов в DTS до работы готового платформенного драйвера. Что будет рассмотрено на открытом уроке: - Роль Device Tree в современных SoC: Почему на смену "платформенным данным" (platform_data) пришло дерево устройств и как оно описывает нестандартную периферию . - Как ядро анализирует бинарный blob (.dtb), преобразует его в дерево структур struct device_node и создает экземпляры platform_device . - Как осуществляется поиск правильного драйвера. Детальный разбор поля compatible в DTS и таблицы of_match_table в драйвере . - Практический пример: Написание каркаса собственного платформенного драйвера с нуля, включая обработку полученных из DTS ресурсов и взаимодействие с аппаратурой . Какие результаты на выходе: - Понимать, как ядро Linux абстрагирует аппаратные различия SoC с помощью Device Tree. - Уметь находить связь между узлом в файле .dts и конкретным драйвером в коде ядра. - Знать структуру платформенного драйвера (struct platform_driver) и порядок действий при его написании. Кому будет полезно присутствовать - Начинающим embedded-разработчикам: которые хотят понять, с чего начинать написание драйверов для новой платы. - Системным программистам: желающим систематизировать знания о подсистеме platform driver и Device Tree. - Студентам и инженерам: работающим с одноплатными компьютерами (Raspberry Pi, BeagleBone и др.)...</p>
136
+
<p>9 апреля в 17:00</p>
137
+
<p>Открытый вебинар</p>
138
+
<p>Связанные списки в ядре Linux: от API до реального кода</p>
139
+
<p>Коробейников Глеб</p>
140
+
<p>Связанные списки - одна из базовых структур данных в ядре Linux и важный инструмент для разработки драйверов и модулей ядра. На занятии разберём API связанных списков в ядре Linux, посмотрим реальные примеры из кода ядра и драйверов, а также закрепим материал на практике. Покажем, где и зачем используются связанные списки, как писать с ними корректный и безопасный код, и на какие типичные ошибки стоит обращать внимание при работе с динамическими структурами данных в ядре. Что разберём: - API связанных списков и очередей в ядре Linux - Реальные кейсы использования связанных списков в драйверах - Примеры простых модулей ядра с использованием связанных списков - Типовые ошибки при работе с динамическими структурами данных и способы их избежать После занятия вы сможете: - Писать код в ядре Linux с использованием связанных списков; - Понимать, в каких сценариях связанные списки - оптимальный выбор; - Уверенно работать с API связных списков и очередей ядра; - Находить и исправлять ошибки при работе с динамическими структурами данных; - Разрабатывать и отлаживать модули ядра с поддержкой связанных списков. Кому будет полезно - Разработчикам, изучающим внутреннее устройство ядра Linux; - Инженерам, работающим с драйверами и модулями ядра;...</p>
141
+
<p>21 апреля в 17:00</p>
142
+
<p>Открытый вебинар</p>
128
<h2>Прошедшие мероприятия</h2>
143
<h2>Прошедшие мероприятия</h2>
129
<p>Коробейников Глеб</p>
144
<p>Коробейников Глеб</p>
130
<p>Открытый вебинар</p>
145
<p>Открытый вебинар</p>
131
<p>Вход в ядро: системные вызовы и граница между user space и kernel space</p>
146
<p>Вход в ядро: системные вызовы и граница между user space и kernel space</p>
132
<p>Вячеслав Степанов</p>
147
<p>Вячеслав Степанов</p>
133
<p>Открытый вебинар</p>
148
<p>Открытый вебинар</p>
134
<p>Как ядро Linux взаимодействует с устройствами: драйверы, шины и модель устройств</p>
149
<p>Как ядро Linux взаимодействует с устройствами: драйверы, шины и модель устройств</p>
135
-
<p>Оставьте заявку, чтобы получить доступ ко всем записям прошедших мероприятий. Записи всех мероприятий появятся в этом блоке</p>
150
+
<p>Для доступа ко всем прошедшим мероприятиям необходимо пройти</p>
151
+
<p><b>входное тестирование</b>Возможность пройти вступительное тестирование повторно появится только через<b>3 дня</b>Результаты тестирования будут отправлены вам<b>на email</b>, указанный при регистрации.Тест рассчитан на<b>30</b>минут, после начала тестирования отложить тестирование не получится!</p>
136
<h2>Этот курс может оплатить ваш работодатель</h2>
152
<h2>Этот курс может оплатить ваш работодатель</h2>
137
<p>Обучайтесь за счёт работодателя или разделите оплату 50/50</p>
153
<p>Обучайтесь за счёт работодателя или разделите оплату 50/50</p>
138
<ul><li>Подробно расскажем об интересующем вас курсе</li>
154
<ul><li>Подробно расскажем об интересующем вас курсе</li>
139
<li>Объясним, как договориться с работодателем</li>
155
<li>Объясним, как договориться с работодателем</li>
140
<li>Сообщим стоимость обучения и варианты оплаты</li>
156
<li>Сообщим стоимость обучения и варианты оплаты</li>
141
<li>Ответим на вопросы</li>
157
<li>Ответим на вопросы</li>
142
<li>Предоставим шаблон договора и счёт на оплату</li>
158
<li>Предоставим шаблон договора и счёт на оплату</li>
143
</ul><h2>Отзывы</h2>
159
</ul><h2>Отзывы</h2>
144
<p>Последнее моё место работы - инженер-программист в концерне "Телематика". Имею достаточно широкий опыт в разработке ПО для программно-аппаратных устройств, а также участие в построении архитектуры разрабатываемых систем. В этом году я решил углубить свои познания в разработке драйверов устройств для ОС "Linux", собственно, ради этого я и выбрал этот курс. Скажу, что нисколько не жалел потраченного времени и денег, хочу выразить признательность преподавателям-авторам этого курса. Главное его преимущество - это возможность учиться у действующих практикующих разработчиков модулей ядра, это очень ценно. Понравилась в Отусе также и гибкость расписания, возможность просмотра записей лекций при отсутствии возможности очного присутствия. Касаемо собственно курса: мог бы посоветовать при его доработке для будущих потоков добавить больше иллюстративных материалов и поработать над доступностью изложения. Касаемо результатов обучения, я не питаю никаких иллюзий относительно трудоустройства и понимаю, что в случае смены своей специальности и при переквалификации в разработчики ядра мне только предстоит освоить огромный пласт информации, набраться опыта, и т.п. Никакой курс не сможет меня обучить на супер-пупер-разработчика, все нужно постигать своим умом и трудом. Но понять направление, куда двигаться, мне удалось.</p>
160
<p>Последнее моё место работы - инженер-программист в концерне "Телематика". Имею достаточно широкий опыт в разработке ПО для программно-аппаратных устройств, а также участие в построении архитектуры разрабатываемых систем. В этом году я решил углубить свои познания в разработке драйверов устройств для ОС "Linux", собственно, ради этого я и выбрал этот курс. Скажу, что нисколько не жалел потраченного времени и денег, хочу выразить признательность преподавателям-авторам этого курса. Главное его преимущество - это возможность учиться у действующих практикующих разработчиков модулей ядра, это очень ценно. Понравилась в Отусе также и гибкость расписания, возможность просмотра записей лекций при отсутствии возможности очного присутствия. Касаемо собственно курса: мог бы посоветовать при его доработке для будущих потоков добавить больше иллюстративных материалов и поработать над доступностью изложения. Касаемо результатов обучения, я не питаю никаких иллюзий относительно трудоустройства и понимаю, что в случае смены своей специальности и при переквалификации в разработчики ядра мне только предстоит освоить огромный пласт информации, набраться опыта, и т.п. Никакой курс не сможет меня обучить на супер-пупер-разработчика, все нужно постигать своим умом и трудом. Но понять направление, куда двигаться, мне удалось.</p>
145
<p>Я занимался разработкой программ на языке Си (userspace), работаю над балансировщиком трафика. Я выбрал этот курс, так как хотел расширить свои знания в области kernelspace. Курс мне в целом понравился. Обучение мне дало систематизацию знаний в области ядра linux.</p>
161
<p>Я занимался разработкой программ на языке Си (userspace), работаю над балансировщиком трафика. Я выбрал этот курс, так как хотел расширить свои знания в области kernelspace. Курс мне в целом понравился. Обучение мне дало систематизацию знаний в области ядра linux.</p>
146
<p>Ринат Гадельшин</p>
162
<p>Ринат Гадельшин</p>
147
<p>14.10.2025</p>
163
<p>14.10.2025</p>
148
<p>Курс мне понравился. Денег своих точно стоит. Уложил в моей голове базовые концепции кода ядра (контейнеры, kthread, память, ну и вообще про драйвера). Вероятно совсем новеньким в Linux будет тяжело, т.к. если каждую тему до конца разжёвывать, то надо курс в разы по времени увеличивать (возможно стоит разбить курс на несколько). Отдельное спасибо за лекцию с отладкой ядра!</p>
164
<p>Курс мне понравился. Денег своих точно стоит. Уложил в моей голове базовые концепции кода ядра (контейнеры, kthread, память, ну и вообще про драйвера). Вероятно совсем новеньким в Linux будет тяжело, т.к. если каждую тему до конца разжёвывать, то надо курс в разы по времени увеличивать (возможно стоит разбить курс на несколько). Отдельное спасибо за лекцию с отладкой ядра!</p>
149
<h2>Подтверждение знаний и навыков</h2>
165
<h2>Подтверждение знаний и навыков</h2>
150
<p>OTUS осуществляет лицензированную образовательную деятельность. В конце прохождения специализации вы получите сертификат OTUS и официальный диплом о получении новой специальности</p>
166
<p>OTUS осуществляет лицензированную образовательную деятельность. В конце прохождения специализации вы получите сертификат OTUS и официальный диплом о получении новой специальности</p>
151
<h2>После обучения вы:</h2>
167
<h2>После обучения вы:</h2>
152
<ul><li>Получите материалы по пройденным занятиям (видеозаписи курса и дoполнительные материалы)</li>
168
<ul><li>Получите материалы по пройденным занятиям (видеозаписи курса и дoполнительные материалы)</li>
153
<li>Создадите свой проект, который поможет при прохождении собеседований</li>
169
<li>Создадите свой проект, который поможет при прохождении собеседований</li>
154
<li>Повысите свою ценность и конкурентоспособность как IT-специалист</li>
170
<li>Повысите свою ценность и конкурентоспособность как IT-специалист</li>
155
<li>Получите сертификат об окончании курса</li>
171
<li>Получите сертификат об окончании курса</li>
156
</ul><h2>Разработка ядра Linux</h2>
172
</ul><h2>Разработка ядра Linux</h2>
157
<p>Доступные способы оплаты. Стоимость указана для оплаты физическими лицами</p>
173
<p>Доступные способы оплаты. Стоимость указана для оплаты физическими лицами</p>
158
<p>Верните с помощью налогового вычета до 13% стоимости обучения.</p>
174
<p>Верните с помощью налогового вычета до 13% стоимости обучения.</p>
159
<p>Пройдите тестирование и менеджер вас проконсультирует</p>
175
<p>Пройдите тестирование и менеджер вас проконсультирует</p>
160
-
<p>Запишитесь сегодня</p>
176
+
<p>Пройдите тестирование</p>
161
-
<p>Старт занятий 16 апреля</p>
177
+
<p>Старт занятий 30 апреля</p>
178
+
<p>Доступные способы оплаты. Стоимость указана для оплаты физическими лицами</p>
179
+
<p>Верните с помощью налогового вычета до 13% стоимости обучения.</p>
180
+
<p>Пройдите тестирование и менеджер вас проконсультирует</p>
162
<h2>Частые вопросы</h2>
181
<h2>Частые вопросы</h2>
163
<h5>Что, если в середине курса я не смогу продолжать обучение?</h5>
182
<h5>Что, если в середине курса я не смогу продолжать обучение?</h5>
164
<p>У вас есть право одного бесплатного трансфера в другую группу</p>
183
<p>У вас есть право одного бесплатного трансфера в другую группу</p>
165
<h5>Обязательно ли защищать выпускной проект?</h5>
184
<h5>Обязательно ли защищать выпускной проект?</h5>
166
<p>Для получения сертификата OTUS необходимо сдать проект. Кроме того, проект необязательно защищать перед аудиторией, а можно сдать в чате с преподавателем.</p>
185
<p>Для получения сертификата OTUS необходимо сдать проект. Кроме того, проект необязательно защищать перед аудиторией, а можно сдать в чате с преподавателем.</p>
167
<h5>Я могу вернуть деньги?</h5>
186
<h5>Я могу вернуть деньги?</h5>
168
<p>Да, вы можете сделать возврат средств пропорционально оставшимся месяцам обучения.</p>
187
<p>Да, вы можете сделать возврат средств пропорционально оставшимся месяцам обучения.</p>