Разработка ядра Linux [OTUS]

Bot

Администратор
Команда форума
23 Янв 2020
174,391
2,998
113
89211.jpg

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