2019/2020
Ядро Linux
Статус:
Дисциплина общефакультетского пула
Кто читает:
Департамент программной инженерии
Где читается:
Факультет компьютерных наук
Когда читается:
3, 4 модуль
Язык:
русский
Кредиты:
2
Контактные часы:
24
Программа дисциплины
Аннотация
Курс про устройство ядра Linux, от самых простых понятий до сложных концепций. Курс будет интересен и полезен студентам, кто хочет подробнее разобраться в том, как устроены операционные системы Linux, какие механизмы и подходы в них реализованы, а также набраться опыта низкоуровневой разработки.
Цель освоения дисциплины
- Познакомиться и изучить основные механизмы и понятия семейства операционных систем Linux
Планируемые результаты обучения
- Знать базовые понятия ядра Linux
- Знать основные структуры ядра
- Иметь базовые навыки работы в CLI
- Уметь разворачивать виртуальные машины
- Понимать, что такое аппаратная и программная виртуализация
- Знать основные программные средства для виртуализации
- Знать базовые понятия о процессах
- Иметь понимание о работе планировщика в Linux
- Ознакомиться с реализацией планировщика в Linux
- Знать, что такое прерывания
- Уметь реализовывать обработчик прерывания
- Знать основные термины прерываний
- Знать, что такое атомарные операции и спин-блокировки
- Знать и уметь работать с мьютексами и семафорами
- Знать, что такое барьеры и каких типов они бывают
- Знать, как устроена работа со временем в Linux
- Уметь реализовывать таймеры и их обработчики
- Уметь реализовывать задержку выполнения
- Знать, что такое страничная организация памяти, выделение страниц
- Понимать, как работает блочное распределение памяти
- Понимать, как работает выделение памяти для конкретного процессора
- Понимать, что такое области виртуальной памяти
- Уметь работать с областями памяти
- Знать методики кэширования
- Знать, что такое буферный кэш
- Знать, что такое потоки синхронизатора
- Уметь понимать диагностические сообщения
- Уметь задавать конфигурацию для отладки ядра
Содержание учебной дисциплины
- Базовые понятияУстройство ядра Linux. Подсистемы Linux. Системные функции. Структуры данных ядра
- ВиртуализацияАппаратная и программная виртуализация. Виртуализация в Linux. KVM. Qemu, Virtualbox.
- Управление процессамиУправление процессами: понятие процесса, дескриптор процесса, реализация потоков в ядре. Системный планировщик и диспетчеризация процессов: стратегия планирования, алгоритм работы планировщика, реализация планировщика в Linux, планирование в режиме реального времени.
- Прерывания и их обработка: верхняя и нижняя половины.Верхняя половина: регистрация обработчика прерывания, написание обработчика прерывания, контекст прерывания, система обработки прерывания и ее реализация, управление прерываниями. Нижняя половина: отложенные прерывания, тасклеты, очереди отложенных действий, блокировки между нижними половинами обработчиков.
- Синхронизация кода ядраСинхронизация кода ядра: критические участки, доступ к системным ресурсам, блокировки и взаимоблокировки. Средства синхронизации ядра: атомарные операции, спин-блокировки, семафоры, мьютексы, условные переменные. BKL. Последовательные блокировки. Барьеры.
- Отладка ядраОтладка ядра. Диагностические сообщения, сообщения Oops. Параметры конфигурации для отладки ядра.
- КэшСтраничный кэш и отложенная запись страниц. Методики кэширования. Реализация страничного кэша в Linux. Буферный кэш. Потоки синхронизатора.
- Работа с памятьюАдресное пространство процесса. Дескриптор памяти. Области виртуальной памяти. Работа с областями памяти. Таблицы страниц.
- Управление памятьюУправление памятью. Страничная организация памяти, зоны. Блочное распределение памяти. Выделение страниц памяти. Статическое выделение памяти в стеке. Выделение памяти для конкретного процессора. Интерфейс percpu.
- Таймеры и управление временемТаймеры и управление временем. Учет времени в ядре. Переменная jiffies. Аппаратные часы и таймеры, абсолютное время. Реализация таймеров. Обработчик прерываний таймера. Задержка выполнения.
Элементы контроля
- Домашняя работа 1
- Домашняя работа 2
- Домашняя работа 3
- Домашняя работа 4
- Домашняя работа 5
- Домашняя работа 6
- Домашняя работа 7
- Домашняя работа 8
- Домашняя работа 9Оценка за дисциплину выставляется в соответствии с формулой оценивания от всех пройденных элементов контроля. Экзамен не проводится.
Промежуточная аттестация
- Промежуточная аттестация (4 модуль)0.112 * Домашняя работа 1 + 0.111 * Домашняя работа 2 + 0.111 * Домашняя работа 3 + 0.111 * Домашняя работа 4 + 0.111 * Домашняя работа 5 + 0.111 * Домашняя работа 6 + 0.111 * Домашняя работа 7 + 0.111 * Домашняя работа 8 + 0.111 * Домашняя работа 9
Список литературы
Рекомендуемая основная литература
- Назаров С.В., Широков А.И. - Современные операционные системы - Национальный Открытый Университет "ИНТУИТ" - 2016 - 351с. - ISBN: 978-5-9963-0416-5 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/100498
Рекомендуемая дополнительная литература
- Дэвид М. Харрис, Сара Л. Харрис - Цифровая схемотехника и архитектура компьютера - Издательство "ДМК Пресс" - 2017 - 792с. - ISBN: 978-5-97060-522-6 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/97336