На выбор предлагаются варианты: QSOE/N с собственным микроядром Skimmer и QSOE/L на базе микроядра seL4, имеющего формальную верификацию надёжности для архитектуры RISC-V. Помимо этого развиваются загрузчик mr-bml на базе GRUB 2.13, стандартная библиотека libc и набор программ quser. В состав набора программ входит командная оболочка qsh на базе mksh, система инициализации и набор типовых unix-утилит, таких как ls, сat, ps, lspci и login.
Микроядро Skimmer использует заимствованную у проекта DragonFly BSD реализацию легковесных потоков в ядре (LWKT, Light Weight Kernel Threads) с привязанными к CPU рабочими очередями и примитивами передачи сообщений msgport. QSOE позволяет использовать разные ядра с одним пользовательским окружением и набором драйверов, не меняющимся при смене ядра. В привязке к ядрам собираются только менеджер задач (taskman) и библиотека libc, выступающая в роли обвязки над QNX-подобными API, предоставляемыми микроядрами.
┌──────────────────────────────────────────────────────────┐ │ qsh + drivers + utils (dynamically linked) │ ├──────────────────────────────────────────────────────────┤ │ libc.so (shared body; LQ-specific seam in lq/libc/) │ │ rtld (FreeBSD-derived; BSD-2-Clause) │ ├──────────────────────────────────────────────────────────┤ │ taskman process / memory / path manager │ │ libtaskman portable taskman body (path / cred / │ │ syscfg / sync / reloc / cpio / elf) │ ├──────────────────────────────────────────────────────────┤ │ seL4 microkernel (RISC-V Sv39, formally verified) │ │ elfloader (loads kernel + taskman) │ └──────────────────────────────────────────────────────────┘
Первый выпуск QSOE примечателен достижением возможности загрузки и входа в командную оболочку на реальной плате SiFive Unmatched (FU740) c накопителем NVMe. Успешная загрузка реализована для конфигураций с обоими ядрами (QSOE/L и QSOE/N).
Источник: http://www.opennet.ru/opennews/art.shtml?num=65768
