- PVSM.RU - https://www.pvsm.ru -

Операционка как пет-проект — подборка «экспериментов»

Операционка как пет-проект — подборка «экспериментов» - 1

Написание собственной операционки — серьезный челендж для системных разработчиков. Мы собрали несколько проектов, авторы которых исследуют устройство ОС и предлагают свои решения, опираясь на проверенные идеи.

ExectOS

Это — система [1], которая позволяет запускать приложения, написанные для других ОС (например, совместимые с DOS или POSIX). Проект относительно молод — разработка началась в 2022 году. Поэтому до сих пор проходит стадию развития.

ОС построена на собственной архитектуре XT (neXTgen или eXTendable), вдохновленной архитектурой Windows NT. Но в отличие от последней, ExectOS не имеет слоя аппаратных абстракций (HAL [2]). ОС работает на процессорах с архитектурами i686 и x86-64, однако аппаратная часть должна поддерживать EFI.

В то же время разработчики представили собственный загрузчик XTLDR (аббревиатура от XT Loader). XTLDR считывает файл инициализации xtldr.ini. Этот файл описывает конфигурацию загрузчика и некоторые предварительно настроенные опции. Так, файл xtldr.ini может выглядеть следующим образом (полный список настроек с их описаниями можно найти в конфигурации-примере [3] из репозитория):

[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 [4]). Однако собрать работоспособный билд получится только с помощью специально разработанного для этих целей пакета инструментов — XTChain [5]. А он доступен только для Linux.

Автор проекта отметил, что использует в своей работе искусственный интеллект и порой включает в кодовую базу [6] предлагаемые сниппеты. 

NeptuneOS

Это — экспериментальная ОС [7], которая позволяет запустить файл ядра операционных систем семейства Windows NT как пользовательский процесс на микроядре seL4. NeptuneOS создает команда энтузиастов, которые хотят построить ОС с простой и надежной архитектурой. Их цель: устранить проблемы монолитных систем, используя современный подход к изоляции процессов, и доказать, что микроядерная система может быть производительной и поддерживать приложения Windows через API.

Можно сказать, что NeptuneOS проходит стадию активной разработки. На текущий момент авторы добились почти полной поддержки стека файловой системы с возможностью упреждающего чтения и кэш-памятью с обратной записью [8]. Сюда входит драйвер файловой системы 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

Это — еще одна экспериментальная микроядерная ОС [9] на x86. Разработчик вдохновляется Mach и L4, и пишет код без сторонних библиотек, чтобы глубже разобраться в низкоуровневых процессах. Код написан на Nim и выложен на GitHub [9] под лицензией MIT. 

Разработчик ведет блог проекта в формате руководства для энтузиастов, желающих написать ОС с нуля. Он пошагово описывает [10] процесс разработки микроядра, начиная с настройки окружения и заканчивая реализацией сложных механизмов, таких как управление памятью и системные вызовы.

Например, управление памятью автор предлагает реализовывать через свободный список (free list). Он также рассказывает [11] про инициализацию системных вызовов с помощью MSR (Model Specific Registers). Сам автор отмечает, что написание инструкций помогает ему улучшать дизайн и реализацию, заставляя переосмысливать свои решения. 

Разработчик выбрал для Fusion OS язык Nim, потому что его привлекли синтаксис, близкий к Python, отсутствие сборщика мусора по умолчанию (используется ARC), отличная совместимость с C.

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

Автор: randall

Источник [12]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/os/426959

Ссылки в тексте:

[1] система: https://exectos.eu.org/

[2] HAL: https://en.wikipedia.org/wiki/Hardware_abstraction

[3] конфигурации-примере: https://git.codingworkshop.eu.org/xt-sys/exectos/src/branch/master/bootdata/xtldr/xtldr.ini

[4] GitHub: https://github.com/xt-sys/exectos

[5] XTChain: https://github.com/xt-sys/xtchain/

[6] включает в кодовую базу: https://news.ycombinator.com/item?id=40742177

[7] ОС: https://github.com/cl91/NeptuneOS

[8] кэш-памятью с обратной записью: https://en.wikipedia.org/wiki/Cache_(computing)

[9] ОС: https://github.com/khaledh/fusion

[10] описывает: https://0xc0ffee.netlify.app/osdev/01-intro

[11] рассказывает: https://0xc0ffee.netlify.app/osdev/18-system-calls

[12] Источник: https://habr.com/ru/companies/mws/articles/919086/?utm_campaign=919086&utm_source=habrahabr&utm_medium=rss