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

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