Представен е първият релиз на операционната система QSOE, проектирана в стил QNX и предоставяна с две сменяеми микроядра „Skimmer“ и „seL4“. На ядрото работят само системата за разпределение на ресурси, механизмът за синхронна комуникация (QNX IPC) и минималистично ядрo, а всички останали компоненти са реализирани в потребителското пространство. Поддържа работа на 64-битови CPU с архитектура RISC-V. ОС е тествана на платката SiFive HiFive Unmatched и в QEMU. Кодът на проекта е написан на езика C и се разпространява под лицензия Apache 2.0.
На разположение са два варианта: QSOE/N с собственото микроядро Skimmer и QSOE/L на базата на микроядрото seL4, което има формална верификация на надеждността за архитектура RISC-V. Освен това се развива зареждачът mr-bml на базата на GRUB 2.13, стандартната библиотека libc и наборът от програми quser. Включва се командната обвивка qsh на базата на mksh, системата за инициализация и набор от типични unix утилити, като ls, cat, ps, lspci и login.
Микроядрото Skimmer използва заимстваната от проекта DragonFly BSD реализация на леките потоци в ядрото (LWKT, Light Weight Kernel Threads) с привързани към CPU работни опашки и примитиви за предаване на съобщения msgport. QSOE позволява използването на различни ядра с едно потребителско пространство и набор от драйвери, които не се променят при смяна на ядрото. В привързаните ядра се събират само мениджърът на задачите (taskman) и библиотеката libc, която служи като обвивка над QNX-подобните API, предоставяни от микроядрата.
┌──────────────────────────────────────────────────────────┐
│ qsh + drivers + utils (динамично свързани) │
├──────────────────────────────────────────────────────────┤
│ libc.so (споделено тяло; LQ-специфичен шев в lq/libc/) │
│ rtld (основан на FreeBSD; BSD-2-Clause) │
├──────────────────────────────────────────────────────────┤
│ taskman мениджър на процеси / памет / пътеки │
│ libtaskman преносимо тяло на taskman (пътека / права / │
│ syscfg / синхронизация / пренос / cpio / elf) │
├──────────────────────────────────────────────────────────┤
│ seL4 микроядро (RISC-V Sv39, формално верифицирано) │
│ elfloader (зарежда ядрото + taskman) │
└──────────────────────────────────────────────────────────┘
Първият релиз на QSOE е забележителен с възможността за зареждане и достъп до командната обвивка на реалната платформа SiFive Unmatched (FU740) с NVMe хранилище. Успешното зареждане е реализирано за конфигурации с и двете ядра (QSOE/L и QSOE/N).
Източник: opennet.ru
