
Поговорим о трёх пет-проектах, авторы которых не претендуют на разработку второго Linux, но интересуются устройством системного программного обеспечения. Расскажем про операционки Snowdrop, Banan, Serena и их уникальные черты.
Banan-OS

Молодая unix-подобная операционная система, написанная на C++ и ориентированная на современное железо. Ее автор — студент из Финляндии Оскари Аларанта, который пожелал глубже погрузиться в низкоуровневое программирование и получить навыки, которых ему так не хватало в учебных материалах.
Оскари написал загрузчик, ядро и свою версию стандартной библиотеки C++, взяв за основу идеи из libstdc++, но адаптировав под свои нужды. Система предлагает многозадачность, базовый графический интерфейс, свой сетевой стек и файловую систему по образу Unix. Разработка ведется активно; репозиторий проекта обновляется, а сама операционная система обрастает новыми возможностями.
Аларанта отмечает, что при разработке Banan-OS сложности у него вызывало изучение технических спецификаций (например, чтобы внедрить поддержку USB-устройств). В целом Banan-OS впечатляет масштабом работы и реализацией сложных компонентов: от сетевого стека до поддержки современного железа, без использования стороннего ПО.
Snowdrop OS

16-битная операционная система с адресацией памяти в реальном режиме для вычислительных систем на архитектуре x86. Она полностью написана на языке ассемблера. Автор проекта — разработчик Себастьян Михай, который в свободное время пишет отладчики и эмуляторы. Он приступил к разработке Snowdrop, чтобы проверить свои возможности и написать ОС без высокоуровневых языков и библиотек.
В ходе проекта автор написал и включил в «дистрибутив» несколько утилит и приложений: файловый менеджер, текстовый редактор, интерпретатор BASIC, отладчик и компьютерную игру aSMtris (клон Tetris), которую портировал с DOS.
Разработчик также написал собственный ассемблер — транслятор программы на языке ассемблера. Свое решение он объясняет необходимостью собственной низкоуровневой платформы, дополняющей высокоуровневый интерпретатор BASIC.
В то же время автор вел журнал проекта на протяжении 600 дней. Там он отмечал реализованные фичи и произведённые баг-фиксы (а также количество сэкономленных байтов после рефакторинга) — делился опытом разработки и проблемами. Так, прямо на второй день работы над проектом сгенерированный образ перестал загружаться — всему виной был отсутствующий байт в BIOS Parameter Block.
Snowdrop OS сравнивают с другими достаточно известными и любительскими операционными системами MenuetOS и TempleOS.
Интересно, что сборка Snowdrop работает только на старых версиях Windows: XP, 98 и 95.
Serena OS

Операционная система для Amiga-систем с процессором Motorola 68030 и выше. Автор проекта — Дитмар Планитцер. Операционная система управляет задачами через диспетчерские очереди, распределяя их между виртуальными процессорами. Такой подход позволяет выполнять задачи параллельно.
В то же время Serena OS реализует структуру иерархических процессов, похожую на POSIX. Процесс может запустить несколько дочерних процессов и передавать им ввод командной строки или переменные окружения. Процесс получает доступ к I/O-ресурсам с помощью I/O-каналов, которые напоминают дескрипторы в POSIX.
Однако есть два заметных различия между процессной моделью в POSIX и Serena OS. Во-первых, для запуска процессов вместо комбинации функций fork() и exec() используется одна — Process_Spawn(), что ускоряет создание новых процессов. Во-вторых, дочерний процесс не наследует файловые дескрипторы родителя (за исключением дескрипторов, связанных с терминальным вводом и выводом).
Ядро реализует кастомную иерархическую файловую систему — SerenaFS — с поддержкой групп пользователей и прав доступа. Она может быть примонтирована в директорию с другой файловой системой для расширения пространства имен.
Можно отметить уникальную архитектуру Serena OS и семафоры для прерываний и очереди. Система работает только с контроллерами USB xHCI, без поддержки старых Amiga.