Операционка как пет-проект — подборка «экспериментов». DIY или Сделай сам.. DIY или Сделай сам. MWS.. DIY или Сделай сам. MWS. Блог компании MWS.. DIY или Сделай сам. MWS. Блог компании MWS. Блог компании МТС.. DIY или Сделай сам. MWS. Блог компании MWS. Блог компании МТС. операционная система.. DIY или Сделай сам. MWS. Блог компании MWS. Блог компании МТС. операционная система. операционные системы.. DIY или Сделай сам. MWS. Блог компании MWS. Блог компании МТС. операционная система. операционные системы. ос.. DIY или Сделай сам. MWS. Блог компании MWS. Блог компании МТС. операционная система. операционные системы. ос. Программирование.. DIY или Сделай сам. MWS. Блог компании MWS. Блог компании МТС. операционная система. операционные системы. ос. Программирование. разработка операционных систем.
Операционка как пет-проект — подборка «экспериментов» - 1

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

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.

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

Автор: randall

Источник

Rambler's Top100