Компания Google запустила сайт fuchsia.dev (https://fuchsia.dev) с информацией о развиваемой в недрах компании операционной системе Fuchsia. На сайте опубликована подборка имеющейся документации и ссылки на исходные тексты компонентов ОС, включая микроядро Zircon (https://fuchsia.googlesource.com/fuchsia/+/master/zircon/REA...). Документация охватывает (https://fuchsia.dev/fuchsia-src/development) вопросы разработки Fuchsia и приложений для данной ОС, сборки (https://fuchsia.dev/fuchsia-src/zircon/getting_started) системы из исходных текстов, описания (https://fuchsia.dev/fuchsia-src/the-book) основных составных частей и фреймворков.Напомним, что в рамках проекта Fuchsia развивается универсальная операционная система, способная работать на любых типах устройств, от рабочих станций и смартфонов до встраиваемой и потребительской техники. Разработка ведётся с учётом опыта создания платформы Android и учитывает недостатки в области масштабирования, обеспечения безопасности и доставки обновлений.
В зависимости от решаемых задач в Fuchsia предлагаются два ядра, а также ряд прослоек:
- LK предоставляет ядро для систем с ограниченным размером ОЗУ и небольшой производительностью процессора, которые обычно применяются во встраиваемых решениях. Ядро LK построено на наработках проекта littlekernel</a и может рассматриваться как открытая альтернатива таким системам, как FreeRTOS (http://www.freertos.org/) и ThreadX.
- Zircon (https://github.com/fuchsia-mirror/zircon) является полнофункциональным микроядром, ориентированным на применение на достаточно мощных устройствах, таких как смартфоны и персональные компьютеры. Ядро Zircon оформлено в виде надстройки над LK с реализацией дополнительных концепций. Например, в Zircon имеется поддержка процессов, а в LK нет, но реализация процессов в Zircon вовлекает компоненты LK для работы с памятью и потоками. В Zircon также поддерживаются такие отсутствующие в LK возможности, как уровень пользователя, система обработки объектов и модель обеспечения безопасности на основе capability.
- Слой Garnet (https://github.com/fuchsia-mirror/garnet) реализован поверх Zircon и отвачает за драйверы устройств;
- Слой Topaz (https://github.com/fuchsia-mirror/topaz) предоставляет интерфейс для создания модулей-расширений.
Для Fuchsia подготовлен (https://www.opennet.ru/opennews/art.shtml?num=46517) собственный графический интерфейс Armadillo (https://fuchsia.googlesource.com/topaz/+/master/shell/), написанный на языке Dart с использованием фреймворка Flutter. Проектом также развиваются (https://github.com/fuchsia-mirror/docs/blob/master/the-book/...) фреймворк для построения интерфейсов пользователя Peridot (https://github.com/fuchsia-mirror/peridot), пакетный менеджер Fargo (https://github.com/fuchsia-mirror/fargo), стандартная библиотека libc (https://github.com/fuchsia-mirror/docs/blob/master/the-book/...), система рендеринга Escher (https://fuchsia.googlesource.com/garnet/+/master/public/lib/.../), Vulkan-драйвер Magma (https://fuchsia.googlesource.com/garnet/+/master/lib/magma/), композитный менеджер Scenic (https://fuchsia.googlesource.com/garnet/+/master/docs/ui_sce...), файловые системы (https://github.com/fuchsia-mirror/docs/blob/master/the-book/...) MinFS, MemFS, ThinFS (FAT на языке Go) и Blobfs.
Для обеспечения совместимости с Linux в Fuchsia предлагается (https://www.linux.com/blog/2018/6/googles-fuchsia-adds-emula...) библиотека Machina, которая позволяет запускать Linux-программы в специальной изолированной виртуальной машине, формируемой при помощи гипервизора на базе ядра Zircon и спецификаций Virtio, по аналогии с тем, как организован (https://www.opennet.ru/opennews/art.shtml?num=48563) запуск Linux-приложений в Chrome OS. Для обеспечения безопасности предлагается продвинутая система sandbox-изоляции (https://github.com/fuchsia-mirror/docs/blob/master/the-book/...), в которой новые процессы не имеют доступа к объектам ядра, не могут выделять память и не могут запускать код, а для доступа к ресурсам применяется система пространств имён (https://github.com/fuchsia-mirror/docs/blob/master/the-book/...), определяющая доступные полномочия.
URL: https://news.ycombinator.com/item?id=20311071
Новость: https://www.opennet.ru/opennews/art.shtml?num=51000