Tilck Project é um kernel simplificado compatível com Linux

Polêmica: desenvolvedores discutem se devem converter o kernel Linux de C para C++
tux

Acaba de aparecer uma nova opção de kernel simplificado compatível com o Linux chamado de Tilck Project. O “Projeto Tilck” tem a iniciativa de um funcionário da VMware. A ideia é desenvolver um kernel monolítico que é fundamentalmente diferente, porém, capaz de ser compatível com Linux e que poderá executar aplicativos criados para Linux. Portanto, o Tilck Project é um kernel simplificado compatível com Linux.

O desenvolvimento visa a implementação dos recursos mínimos necessários, evitando sobrecarga de funcionalidade, arquitetura simples e compreensível, simplificação máxima de código, tamanho pequeno de arquivos binários, comportamento previsível (determinístico), garantindo atrasos mínimos, alcançando alta confiabilidade e simplificando os processos de desenvolvimento e teste .

O Tilck é fundamentalmente diferente do Linux porque não tem como alvo servidores multiusuários ou máquinas de desktop, nem um pouco porque isso não faria sentido: o Linux não é grande e complexo por causa de uma implementação ruim, mas por causa do número incrível de recursos que possui. ofertas e a complexidade intrínseca que elas exigem. Em outras palavras, o Linux é ótimo devido ao problema que resolve. A Tilck oferecerá menos recursos em troca de:

código mais simples (de longe)
tamanho binário menor
comportamento extremamente determinístico
latência ultrabaixa
desenvolvimento mais fácil e teste de
robustez adicional

Tilck Project é um kernel simplificado compatível com Linux

O projeto não se destina ao uso em ambientes de servidor multiusuário ou sistemas de desktop. Dos sistemas de arquivos, FAT16 e FAT32 são suportados no modo de leitura, assim como ramfs, devfs e sysfs. Dispositivos de bloco ainda não foram implementados; tudo está na memória.

O VFS é fornecido para abstrair as operações do FS. O multithreading no estágio atual de desenvolvimento está disponível apenas no nível do kernel (ainda não fornecido no espaço do usuário).

O kernel suporta multitarefa preemptiva e implementa cerca de 100 chamadas básicas do sistema Linux, como fork(), waitpid(), read(), write(), select() e poll(), que são suficientes para executar aplicativos de console como o BusyBox , Vim, TinyCC, Micropython e Lua, bem como aplicativos gráficos baseados em framebuffer, como o jogo fbDOOM. Para criar programas para Tilck, é fornecido um conjunto de ferramentas baseadas na biblioteca Musl.

É mencionado que o conjunto de drivers proposto permite a execução do Tilck tanto no ambiente QEMU quanto em sistemas convencionais inicializados a partir de uma unidade USB. Além disso, também é observado que há suporte para conjuntos de instruções estendidas SSE, AVX e AVX2. Ele oferece seu próprio gerenciador de inicialização interativo que suporta sistemas BIOS e UEFI, mas também é possível usar gerenciadores de inicialização de terceiros, como GRUB2. Quando carregado no QEMU, o kernel pode rodar em um ambiente com 3 MB de RAM.

Conheça melhor o Tilck Project

O projeto atualmente está posicionado como um projeto educacional , mas a longo prazo é possível que o Tilck cresça a um nível adequado para uso como kernel para sistemas embarcados que requerem comportamento previsível e baixa latência.

Embora Tilck use internamente o conceito de thread, o multithreading não está atualmente exposto ao espaço do usuário (existem threads de kernel, é claro). Ambos fork() e vfork() são implementados corretamente e copy-on-write é usado para processos bifurcados. A chamada de sistema waitpid() é totalmente implementada (o que implica grupos de processos, etc.).

Uma característica interessante nesta área merece uma menção especial: apesar da falta de multithreading no espaço do usuário, o Tilck tem suporte total para TLS.

Espera -se que Tilck preencha a lacuna entre as soluções baseadas em kernel do Linux e sistemas operacionais dedicados em tempo real, como FreeRTOS e Zephyr. Os planos incluem a migração do Tilck para processadores ARM e não-Memory Management Unit (MMU), adicionando um subsistema de rede, suporte para dispositivos de bloco e sistemas de arquivos adicionais como ext2.

O código é escrito em C e é distribuído sob a licença BSD. No estágio atual de desenvolvimento, o kernel suporta apenas a arquitetura x86, mas o código é projetado com universalidade e implementação em mente para suporte futuro a outras arquiteturas.

Por fim, se você estiver interessado em saber mais sobre isso, pode conferir os detalhes no link a seguir.