Проект Tilck развивает упрощённое Linux-совместимое ядро

В рамках проекта Tilck сотрудник VMware развивает монолитное ядро, фундаментально отличающееся от Linux, но спроектированное для совместимости с Linux на бинарном уровне и возможности запуска приложений, собранных для Linux. Код написан на языке Си и распространяется под лицензией BSD. На текущем этапе развития ядром поддерживается только архитектура x86, но код разработан с оглядкой универсальность и на реализацию в будущем поддержки других архитектур.

Ядро поддерживает вытесняющую многозадачность и реализует около 100 основных системных вызовов Linux, например, fork (), waitpid (), read (), write (), select () и poll (), которых достаточно для выполнения консольных приложений, таких как BusyBox, Vim, TinyCC, Micropython и Lua, а также графических приложений, использующих фреймбуфер, таких как игра fbDOOM. Для сборки программ для Tilck предлагается инструментарий на базе библиотеки Musl.

CFD0C5CECEC5D4_1673285840.png

Разработка нацелена на реализацию минимально необходимых возможностей, избегания перегруженности функциональностью, простую и понятную архитектуру, максимальное упрощения кода, небольшой размер бинарных файлов, предсказуемое (детерминированного) поведение, обеспечение минимальных задержек, достижение высокой надёжности и упрощение процессов разработки и тестирования.

Проект не ставит перед собой цели использования в многопользовательских серверных окружениях или десктоп-системах. Поддерживается только монолитная сборка с встраиваемыми на этапе компиляции модулями. Из файловых систем поддерживаются FAT16 и FAT32 в режиме чтения, а также ramfs, devfs и sysfs. Блочные устройства пока не реализованы, т.е. всё размещается в памяти. Для абстрагирования операций с ФС предоставляется VFS. Многопоточность на текущем этапе развития доступна только на уровне ядра (в пространстве пользователя пока не предоставляется).

Предложенный набор драйверов позволяет запускать Tilck как в окружении QEMU, так и на обычных системах, загружаясь с USB-накопителя. Имеется поддержка расширенных наборов инструкций SSE, AVX и AVX2. Для запуска предлагается собственный интерактивный загрузчик, поддерживающий системы с BIOS и UEFI, но возможно использование и сторонних загрузчиков, таких как GRUB2. При загрузке в QEMU ядро может работать в окружении с 3 МБ ОЗУ.

В настоящее время проект позиционируется как учебный, но в долгосрочной перспективе не исключено, что Tilck дорастёт до уровня, пригодного для применения в качестве ядра для встраиваемых систем, на которых требуется предсказуемое поведение и низкие задержки. Ожидается, что Tilck может занять промежуточную нишу между решениями на базе ядра Linux и специализированными ОС, работающими в режиме реального времени, такими как FreeRTOS и Zephyr. Среди планов упоминается портирование Tilck для процессоров ARM и процессоров без блока управления памятью (MMU), добавление сетевой подсистемы, поддержка блочных устройств и дополнительных ФС, таких как ext2.



Источник: http://www.opennet.ru/opennews/art.shtml? num=58450

©  OpenNet