Курс по разработке операционной системы на базе HellOS (Александр Андреев, OSEDUCONF-2022)

Материал из 0x1.tv

Докладчик
Александр Андреев™

В прошлом году была анонсирована операционная система HellOS, предназначенная для целей обучения разработки операционных систем. Перед студентами ставятся задачи по развитию этой небольшой операционной системы в рамках мини-проектов, и за последний год была реализована новая функциональность: поддержка 64-битных процессоров x86, 4-уровневая адресация памяти, Multiboot 2, инструкции syscall/sysret вместо прерываний.

Также запланированы улучшения поддержки SMP а архитектуры AArch64.

Видео

on youtube

Презентация

Курс по разработке операционной системы на базе HellOS (Александр Андреев, OSEDUCONF-2022).pdf Курс по разработке операционной системы на базе HellOS (Александр Андреев, OSEDUCONF-2022).pdf Курс по разработке операционной системы на базе HellOS (Александр Андреев, OSEDUCONF-2022).pdf Курс по разработке операционной системы на базе HellOS (Александр Андреев, OSEDUCONF-2022).pdf Курс по разработке операционной системы на базе HellOS (Александр Андреев, OSEDUCONF-2022).pdf Курс по разработке операционной системы на базе HellOS (Александр Андреев, OSEDUCONF-2022).pdf Курс по разработке операционной системы на базе HellOS (Александр Андреев, OSEDUCONF-2022).pdf Курс по разработке операционной системы на базе HellOS (Александр Андреев, OSEDUCONF-2022).pdf Курс по разработке операционной системы на базе HellOS (Александр Андреев, OSEDUCONF-2022).pdf Курс по разработке операционной системы на базе HellOS (Александр Андреев, OSEDUCONF-2022).pdf Курс по разработке операционной системы на базе HellOS (Александр Андреев, OSEDUCONF-2022).pdf

Thesis

Использование в учебном процессе

В этом году состоялась новая итерация курса, которая потребовала определённых правок в ядре HellOS. Основные изменения, которые реализованы:

  • Поддержка 64-битных процессоров x86. 32-битная версия x86 имеет ряд механизмов, которые не используются современными ОС (например, hardware multitasking и non-flat segmentation). Изучение этих рудиментарных особенностей усложняет понимание материала лекций, семинаров и домашних заданий, не добавляя полезных знаний. К тому же на сегодняшний день 32-битные процессоры на основе x86 — довольное редкое явление.
  • 4-уровневая адресация памяти. С появлением 64-битной адресации в HellOS требуется обеспечить также 64-битное адресное пространство. Поэтому в OC, а также в материалы курса была добавлена поддержка 4-уровневой адресации памяти.

Кроме этого, вся подсистема управления памятью была структурирована и переработана.

  • Инструкции syscall/sysret. Исторически самый первый способ вызова сисколлов — через программные прерывания (int 0x80). Однако это довольно медленный механизм, требующий много проверок со стороны процессора. Вместе с реализацией поддержки x86-64 стало возможным использование современных способов для вызова сисколлов — через инструкцию syscall.

Реализация системы и учебного курса

Система HellOS реализована на языке С для архитектуры x86-64 и предназначена для работы в виртуальной машине QEMU, эмуляторе BOCHS и на обычных компьютерах. Представляет собой простое монолитное ядро, расположенное в верхних адресах памяти.

В HellOS реализованы базовые функции для работы с примитивами x86: обработка прерываний, работа с виртуальной памятью и другая базовая функциональность операционной системы. Реализованы функции парсинга и валидации ACPI таблиц. Для управления обработкой прерываний APIC/LAPIC HellOS имеет базовый не fair-share планировщик процессов, который не поддерживает приоритеты процессов. Все эти расширения остаются в качестве лабораторных работ.

Также в HellOS есть драйвер для ATA-совместимых устройств, в качестве механизма трансфера данных используется DMA вместо устаревшего PIO. Поверх драйвера реализована виртуальная простая виртуальная файловая система, на текущий момент поддерживается только ext2.

Основываясь на архитектуре HellOS, курс разбит на следующие темы:

  1. Процесс загрузки и bootloader'ы.
  2. Прерывания процессора.
  3. Виртуальная память.
  4. User-space процессы, системные вызовы и переключение контекста.
  5. Многопроцессорность.
  6. Работа с HDD (режимы PIO и DMA).
  7. Базовые принципы работы файловых систем на примере ext2.


Итоги

Реализована операционная система, которая опубликована на GitHub под лицензией MIT. Система уже второй год подряд успешно используется в курсе «Архитектура операционных систем» в качестве наглядного пособия, а также в качестве платформы для домашних заданий.


Курс по разработке операционной системы на базе HellOS (Александр Андреев, OSEDUCONF-2022)!.jpg

Примечания и ссылки