Ежедневно, с 8:30 до 22:30
Предзаказ
2222

Разработка ядра Linux

Средняя оценка 0.0 из 5 на основании 0 голосов (0)
1 0
0
Автор:
9000 ₽
61000 ₽
-85%
Кэшбэк: 5% (450 ₽)
Курс будет выдан в течение 1-3 часов после оплаты.

Понимание ядра Linux: от архитектуры до разработки эффективных модулей.

Для кого этот курс:

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

Вы научитесь:

  • Разрабатывать и интегрировать собственные модули ядра: Напишут, соберут и запустят модули, а также смогут анализировать выводы отладки через dmesg
  • Владеть алгоритмами и структурами: Применят темы, изученные о структуре данных для решения реальных задач в проекте на ядре Linux
  • Реализовывать синхронизацию процессов и потоков: Используют различные примитивы синхронизации в собственных разработках
  • Анализировать и обрабатывать прерывания: Понимают, как работают обработчики прерываний и смогут их отлаживать
  • Управлять памятью в ядре: Разработают решения для эффективного управления памятью, включая использование аллокаторов и механизмов управления страницами
  • Участвовать в проектах на основе Linux: Подготовят себя к работе в команде на проектах, связанных с разработкой и поддержкой ядра Linux.

Необходимые знания:

  • Уметь работать в ОС Linux
  • Базовое знание Bash
  • Базовое знание Python
  • Уверенный уровень разработки на языках программирования C
  • Умение работать и подключаться к Виртуальной машине

    Программа курса

    Введение в разработку ядра Linux

    В этом модуле вы рассмотрите общие сведения о ядре Linux, его сборке и установке.»

    • Тема 1: Начальные сведения о ядре Linux
    • Тема 2: Компиляция и настройка ядра. Инструменты работы с ядром
    • Тема 3: Ядро Linux. Обзор ядра Linux и его архитектуры. Основные функции ядра // ДЗ
    • Тема 4: Q&A занятие по ДЗ

    Модули ядра Linux

    В этом модуле вы рассмотрите что такое модуль ядра; научитесь собирать, загружать и выгружать модули ядра.»

    • Тема 1: Что такое модуль ядра Linux. Как его написать, собрать, запустить. Что такое буффер сообщений ядра (dmesg) // ДЗ
    • Тема 2: Q&A занятие по ДЗ

    Структуры данных и алгоритмы в ядре Linux

    В этом модуле вы рассмотрите базовые структуры данных и алгоритмы в ядре Linux.»

    • Тема 1: Связанные списки в ядре Linux. Реальные примеры из кода ядра Linux
    • Тема 2: Очереди в ядре Linux. Реальные примеры из кода ядра Linux
    • Тема 3: Стеки в ядре Linux. Реальные примеры из кода ядра Linux
    • Тема 4: Деревья в ядре Linux (бинарные и красно-черные). Реальные примеры из кода ядра Linux
    • Тема 5: Битовые карты в ядре Linux. Реальные примеры из кода ядра Linux
    • Тема 6: Алгоритмы в ядре Linux. Бинарный поиск. Поиск с помощью двоичных деревьев. Хэширование // ДЗ
    • Тема 7: Q&A занятие по ДЗ

    Управление процессами и потоками

    В этом модуле вы рассмотрите процессы и потоки в ядре Linux; примитивы синхронизации и их реализацию; планировщики (CFS, EEVDF).

    • Тема 1: Что такое процесс в ядре Linux. Что такое поток в ядре Linux. API для работы с процессами и потоками
    • Тема 2: Синхронизация процессов и потоков и зачем это надо. Что такое spin блокировка, mutex, семафоры и др. примитивы синхронизации
    • Тема 3: Детально рассмотрим как работает Spinlock, Mutex, Semaphores. Deep diving в архитектурный код ядра, где реализованы эти примитивы. Разбираем RCU
    • Тема 4: Системный планировщик и диспетчеризация процессов в ядре. Планировщик CFS. Планировщик EEVDF // ДЗ
    • Тема 5: Q&A занятие по ДЗ

    Прерывания. Обработчики прерываний. Cинхронизация в контексте прерываний. Виды Page Fault в Linux

    В этом модуле вы рассмотрите прерывания и их обработка в ядре Linux; разновидности прерываний, разбор PF-ов; механизмы отложенного выполнения в ядре Linux»

    • Тема 1: Прерывания, дескрипторы прерываний, IDT и как это выглядит в ядре Linux
    • Тема 2: Top-half и Bottom-half обработчиков прерываний. Softirq, Tasklets, Workqueue
    • Тема 3: Что такое Page Fault. Какие виды PF бывают в Linux // ДЗ
    • Тема 4: Q&A занятие по ДЗ

    Время в ядре Linux. Таймеры. Preemption многозадачность.

    В этом модуле вы рассмотрите таймеры в ядре Linux и виды многозадачности, в частности preemption многозадачность; обобщите знания о прерываниях, таймерах, процессах и многозадачности. »

    • Тема 1: Как протекает время в ядре Linux. API таймеров
    • Тема 2: Что такое Preemption. Обобщаем работу с процессами и прерываниями // ДЗ
    • Тема 3: Q&A занятие по ДЗ

    Управление RAM памятью

    В этом модуле вы рассмотрите виртуальную и физическую память; аллокаторы SLAB и SLUB в ядре; способы эффективного выделения памяти под задачу.»

    • Тема 1: Управление памятью в Linux. SLAB-аллокатор. SLUB-аллокатор. Плюсы и минусы этих аллокаторов. API для выделения памяти в ядре
    • Тема 2: Отличие физической памяти от виртуальной памяти. Page Table. Реализация pagging в ядре Linux
    • Тема 3: 3 (28) Ситуация когда нужно выделить заранее много памяти для объектов одинакового размера. Что такое kmem_cache. Что такое mempool // ДЗ
    • Тема 4: Q&A занятие по ДЗ

    Устройства в Linux

    В этом модуле вы изучите символьные и блочные устройства, виртуальные файловые системы и интерфейсы.

    • Тема 1: Символьные устройства
    • Тема 2: Блочные устройства
    • Тема 3: Взаимодействие с устройством через ioctl. Виртуальные файловые системы /proc, /sys, /dev. Общение через сокет netlink

    Проектная работа

    Заключительный месяц курса посвящён проектной работе. Проект – это самая интересная часть обучения. Вы будете разрабатывать его на основе полученных на курсе навыков и компетенций. В процессе работы над проектом можно получить консультацию преподавателей.

    • Тема 1: Выбор темы и организация проектной работы // Проект
    • Тема 2: Консультация по проектам и домашним заданиям
    • Тема 3: Защита проектных работ
    • Тема 4: Подведение итогов курса

    Что даст курс:

    • Основы разработки ядра: Понимание архитектуры и базовых компонентов ядра 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» от Трайтек
    Характеристики
    Наличие Предзаказ Тип Видео Размещение на сайте 04.04.2025 Артикул 2222

    Об авторах

    Фото: OTUS
    5.0
    OTUS
    Образовательная платформа для IT-специалистов, основана в 2017 году. Более 130 авторских курсов от преподавателей-практиков — от C++ и Java до архитектуры высоких нагрузок.

    Отзывы и комментарии

    Отзывов ещё нет, будьте первыми

    Написать отзыв
    Нажимая "Отправить" Вы соглашаетесь с правилами публикации и даёте согласие на обработку персональных данных. Администрация не несёт ответственности за содержание отзывов.

    Похожие товары:

    Постер товара: Командная строка
    Скидка 77%
    Предзаказ
    Средняя оценка 0.0 из 5 на основании 0 голосов
    Командная строка
    Linux и командная строка
    Постер товара: Курс по структуре Linux, работе Bash, сетям и управлению пакетами и службами
    Скидка 80%
    Предзаказ
    Средняя оценка 0.0 из 5 на основании 0 голосов
    Курс по структуре Linux, работе Bash, сетям и управлению пакетами и службами
    Linux и Bash
    Постер товара: Разработчик C++
    Скидка 91%
    Предзаказ
    Средняя оценка 0.0 из 5 на основании 0 голосов
    Разработчик C++
    C и C++
    Постер товара: Java Developer. Advanced
    Скидка 85%
    Предзаказ
    Средняя оценка 5.0 из 5 на основании 1 голосов
    Java Developer. Advanced
    Асинхронный Python
    Постер товара: C++ Developer. Basic
    Скидка 87%
    Предзаказ
    Средняя оценка 0.0 из 5 на основании 0 голосов
    C++ Developer. Basic
    C и C++
    Постер товара: Java Advanced. Функциональное, асинхронное и реактивное программирование
    Скидка 87%
    Предзаказ
    Средняя оценка 0.0 из 5 на основании 0 голосов
    Java Advanced. Функциональное, асинхронное и реактивное программирование
    Java
    Постер товара: Linux / Git для начинающих
    Скидка 83%
    Предзаказ
    Средняя оценка 0.0 из 5 на основании 0 голосов
    Linux / Git для начинающих
    Git и GitHub/GitLab
    Постер товара: Подготовительный курс по JavaScript разработке
    Скидка 94%
    Предзаказ
    Средняя оценка 5.0 из 5 на основании 1 голосов
    Подготовительный курс по JavaScript разработке
    Основы JavaScript