
Написание собственной операционки — серьезный челендж для системных разработчиков. Мы собрали несколько проектов, авторы которых исследуют устройство ОС и предлагают свои решения, опираясь на проверенные идеи.
ExectOS
Это — система, которая позволяет запускать приложения, написанные для других ОС (например, совместимые с DOS или POSIX). Проект относительно молод — разработка началась в 2022 году. Поэтому до сих пор проходит стадию развития.
ОС построена на собственной архитектуре XT (neXTgen или eXTendable), вдохновленной архитектурой Windows NT. Но в отличие от последней, ExectOS не имеет слоя аппаратных абстракций (HAL). ОС работает на процессорах с архитектурами i686 и x86-64, однако аппаратная часть должна поддерживать EFI.
В то же время разработчики представили собственный загрузчик XTLDR (аббревиатура от XT Loader). XTLDR считывает файл инициализации xtldr.ini. Этот файл описывает конфигурацию загрузчика и некоторые предварительно настроенные опции. Так, файл xtldr.ini может выглядеть следующим образом (полный список настроек с их описаниями можно найти в конфигурации-примере из репозитория):
[XTLDR]
Debug=COM1,115200
Default=ExectOS
KeepLastBoot=TRUE
Modules=beep
Timeout=10
Tune=400 880 2 988 2 783 2 392 2 587 3
[ExectOS]
SystemName="ExectOS Operating System"
SystemType=XTOS
BootModules=xtos_o
SystemPath=multi(0)disk(0)rdisk(0)partition(1)/ExectOS
KernelFile=xtoskrnl.exe
Parameters=DEBUG=COM1,115200
Код проекта написан на языке С и распространяется под лицензией GPLv3 (он выложен на GitHub). Однако собрать работоспособный билд получится только с помощью специально разработанного для этих целей пакета инструментов — XTChain. А он доступен только для Linux.
Автор проекта отметил, что использует в своей работе искусственный интеллект и порой включает в кодовую базу предлагаемые сниппеты.
NeptuneOS
Это — экспериментальная ОС, которая позволяет запустить файл ядра операционных систем семейства Windows NT как пользовательский процесс на микроядре seL4. NeptuneOS создает команда энтузиастов, которые хотят построить ОС с простой и надежной архитектурой. Их цель: устранить проблемы монолитных систем, используя современный подход к изоляции процессов, и доказать, что микроядерная система может быть производительной и поддерживать приложения Windows через API.
Можно сказать, что NeptuneOS проходит стадию активной разработки. На текущий момент авторы добились почти полной поддержки стека файловой системы с возможностью упреждающего чтения и кэш-памятью с обратной записью. Сюда входит драйвер файловой системы FAT12/16/32 и драйвер флоппи-контроллера. Также реализован базовый стек для работы с клавиатурой, включая драйвер kbdclass.sys и драйвер порта PS/2 (i8042prt.sys). Сборка помещается на дискету объемом 1,44 Мбайт.
Пока NeptuneOS ограничена запуском в QEMU и не поддерживает реальное оборудование. Сборка требует CMake и тулчейнов LLVM или GCC, а подготовка окружения возможна только на Linux, таких как Ubuntu или Debian. В ближайших планах у разработчиков — заняться портированием стека драйверов для работы с дисками в режимах ATA/AHCI (в качестве референса будут использовать ReactOS). И это позволит работать с большинством жестких дисков с интерфейсами PATA/SATA.
Также команда планирует разработать или адаптировать набор тестов производительности дисковой подсистемы, чтобы показать, что микроядерная архитектура не вызывает неприемлемых потерь в производительности.
Fusion OS
Это — еще одна экспериментальная микроядерная ОС на x86. Разработчик вдохновляется Mach и L4, и пишет код без сторонних библиотек, чтобы глубже разобраться в низкоуровневых процессах. Код написан на Nim и выложен на GitHub под лицензией MIT.
Разработчик ведет блог проекта в формате руководства для энтузиастов, желающих написать ОС с нуля. Он пошагово описывает процесс разработки микроядра, начиная с настройки окружения и заканчивая реализацией сложных механизмов, таких как управление памятью и системные вызовы.
Например, управление памятью автор предлагает реализовывать через свободный список (free list). Он также рассказывает про инициализацию системных вызовов с помощью MSR (Model Specific Registers). Сам автор отмечает, что написание инструкций помогает ему улучшать дизайн и реализацию, заставляя переосмысливать свои решения.
Разработчик выбрал для Fusion OS язык Nim, потому что его привлекли синтаксис, близкий к Python, отсутствие сборщика мусора по умолчанию (используется ARC), отличная совместимость с C.
В целом проект пока находится в стадии разработки: в частности, автор не добрался до реализации файловой системы и работы с драйверами.
OlegZH
То есть, разработка идёт от оборудования, а не от общей архитектуры, так?
n99
статья ради статьи, в стиле VC.RU. гляньте другие статьи автора (заглавий и сгенерированных лого достаточно), зря он взялся писать о лоулевел.
https://habr.com/ru/companies/mws/articles/880890 это facepalm.