
Введение в разработку ядра 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: Подведение итогов курса