Вы здесь

Структура и алгоритмы ядра операционной системы

№ п/п

Название модулей

Разделы и темы лекционных занятий

Содержание

Аудиторная работа (зачетные ед./часы)

1

Введение

Введение в курс, знакомство с ОС Unix и с ядром Linux.

Определение и функции ОС. Понятие ядра ОС, классификация ядер, отличия ядер от пользовательских приложений. История развития семейства ОС UNIX и Linux. Структура ядра и дерева исходных кодов Linux. Модульность и конфигурируемость ядра Linux. Знакомство с исходными файлами ядра Linux. Задание конфигурации. Компиляция ядра Linux, запуск скомпилированного ядра. Обзор средств разработки ядра.

4

2

Процессы и потоки в Linux и их планирование

Процессы и потоки в Linux; их жизненный цикл; сигналы в Linux.

Понятие процесса. Иерархия процессов в Linux. Контекст процесса. Создание процессов в Linux. Понятие потоков исполнения и их реализация в ядре Linux. Адресные пространства процессов и потоков. Сигналы и обработчики сигналов в Linux. Завершение процессов. Задачи и алгоритмы планирования процессов.

2

3

Планирование процессов и потоков.

Системный планировщик. Планирование в режиме реального времени. Системный таймер. Приоритеты процессов и классы планирования в Linux. Переключение контекста и вызов системного планировщика. История планировщиков в Linux. Принципы работы планировщиков CFS и EEVDF. Модели вытесняемости в ядре Linux.

2

4

Системные вызовы

Системные вызовы.

Уровни и интерфейсы ОС. Понятие системного вызова, его составляющие части. Системные вызовы в Linux. Выполнение системного вызова. Проверка аргументов системного вызова. Контекст системных вызовов. Создание нового системного вызова. Утилита strace. Быстрые системные вызовы. Реализация нового системного вызова и его использование в пользовательской программе.

4

5

Подсистема прерываний

Прерывания и их обработка.

Понятие прерываний. Классификация прерываний. Программируемый контроллер прерываний. Номера и линии прерываний. Процесс обработки прерывания. Контекст прерываний. Обработчик прерываний, их установка и удаление. Вход в ядро при прерывании. Сравнение прерываний, исключений и сигналов.

2

6

Нижние половины обработчиков прерываний.

Верхняя и нижняя половины обработчика прерывания. Механизмы реализации нижних половин прерываний: отложенные прерывания, тасклеты, очереди отложенных действий, threaded interrupts, их особенности и возможности применения.

2

7

Механизмы синхронизации

Механизмы синхронизации.

Состояние гонки в программировании и его источники. Понятие критической секции. Задача синхронизации. Масштабируемость при синхронизации. Атомарные операции, их использование и реализация. Per-CPU переменные. Спинлоки, их реализация и особенности использования. Мьютексы и семафоры. Спинлоки и семафоры по чтению-записи. Сравнение блокирующих примитивов синхронизации. Порядок обращений в память. Барьеры, их виды и применение. Механизмы неблокирующей синхронизации: последовательные блокировки и RCU, их особенности.

2

8

Подсистема памяти

Управление оперативной памятью; виртуальная память и таблица страниц; аппаратная поддержка.

Иерархия памяти в современных вычислительных системах. Оперативная память, адресация в ней. Адресное пространство. Виртуальная память. Страничная организация памяти. Трансляция виртуальных адресов в физические. Таблица страниц. Структура записей в таблице страниц. Многоуровневые таблицы страниц. Таблица страниц в ядре Linux. Обход таблицы страниц. Ошибки отсутствия страницы. Преимущества и недостатки виртуальной памяти. Аппаратные устройства для поддержки виртуальной памяти: MMU, TLB, IOMMU. Прямой доступ устройств к памяти.

2

9

Выделение памяти в ядре; управление пользовательской памятью.

Механизмы выделения памяти в ядре. Buddy-аллокатор, его интерфейс и алгоритм работы. Идея блочного распределения памяти, slab-аллокатор и его интерфейсы. Функции kmalloc() и vmalloc(). Описание памяти процесса. Области виртуальной памяти. Особенности работы с памятью пользовательских программ: разделяемая память, demand paging, копирование при записи. Действия ядра при нехватке памяти.

2

10

Файловая система и ввод-вывод

Виртуальная файловая система; блочный ввод вывод; страничный кэш; модель представления устройств.

Понятие файловой системы. Иерархия файлов в Linux. Виртуальная файловая система, её свойства и основные объекты: суперблок, индексный узел, элемент каталога и файл. Операции над объектами. Схема выполнения системного вызова, работающего с файлом. Символьные и блочные устройства. Планирование блочного ввода-вывода. Страничный кеш. Отложенная запись страниц и потоки синхронизатора. Модель представления устройств в Linux. Создание простейшего модуля ядра, организующего взаимодействие с пользователем через файловый интерфейс.

4