Открыто

Разработка ядра Linux [OTUS] [Глеб Коробейников, Алексей Иванов]

Тема в разделе "Курсы по программированию", создана пользователем Graph-sh, 4 апр 2025.

Цена: 61000р.-93%
Взнос: 4219р.

Основной список: 17 участников

  1. 4 апр 2025
    #1
    Graph-sh
    Graph-sh ЧКЧлен клуба

    Складчина: Разработка ядра Linux [OTUS] [Глеб Коробейников, Алексей Иванов]

    2025-04-07_232143.png

    Понимание ядра 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
    В этом модуле вы рассмотрите общие сведения о ядре 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" от Трайтек

    Цена: 61000 руб.
    Скрытая ссылка
     
    Последнее редактирование модератором: 7 апр 2025 в 19:31
    3 пользователям это понравилось.
  2. Последние события

    1. said1962
      said1962 участвует.
      7 апр 2025 в 12:03
    2. ilya_
      ilya_ участвует.
      6 апр 2025 в 21:46
    3. gohas
      gohas участвует.
      6 апр 2025 в 21:01
    4. JeBern
      JeBern участвует.
      6 апр 2025 в 18:28