Entrevista com Andreas Kling do Serenity OS (2022)
O entusiasmo por sistemas operativos de hobby está a alimentar o debate sobre o que um OS “de raiz” poderia fazer de forma diferente dos designs ao estilo Unix, desde sistemas de ficheiros transacionais e APIs unificadas de subscrição de eventos até armazenamento baseado em bases de dados ou centrado em objetos. Os comentadores trocam recursos e histórias sobre como começar com kernels, bootloaders e programação de baixo nível, ao mesmo tempo que contrastam esta aprendizagem prática com simplesmente personalizar Linux ou outros sistemas existentes. Por baixo das ideias técnicas, há uma tensão entre projetos movidos pela nostalgia e esforços que procuram repensar genuinamente a arquitetura do OS, o desempenho e a experiência do utilizador.
Motivações para Novos / Toy OSes
- Vários comentadores sentem-se tentados a construir OSes “toy” ou experimentais para explorar ideias que não se encaixam bem nos kernels existentes (especialmente Linux).
- As motivações incluem valor educacional, a diversão visceral do trabalho de baixo nível e a insatisfação com as abstrações atuais (POSIX, “tudo é um ficheiro”, pipes de fluxo de bytes).
- Alguns prefeririam, em vez disso, basear o trabalho em kernels/distribuições existentes e inovar principalmente nas APIs de userland e na UX.
Sistema de Ficheiros, Bases de Dados e Transações
- Forte interesse em semânticas de sistema de ficheiros mais adequadas a bases de dados e à segurança contra falhas:
- Barreiras de escrita ou I/O transacional para evitar o overhead de
fsynce a corrupção de dados. - Persistência estruturada ao nível do kernel em vez de I/O bruto de ficheiros para a maioria das apps.
- Barreiras de escrita ou I/O transacional para evitar o overhead de
- Debate sobre DB vs sistema de ficheiros:
- Alguns argumentam que bases de dados grandes deveriam usar dispositivos brutos ou partições dedicadas; outros observam que isso não ajuda as ubíquas “small DBs” dentro das apps.
- Propostas para implementar sistemas de ficheiros por cima de bases de dados reais (metadados ricos, tags, triggers, pesquisa rápida); são mencionadas tentativas passadas como WinFS e vários modelos de mainframe / AS/400.
- Outros alertam que sistemas de ficheiros transacionais anteriores tinham desempenho horrível e deadlocks, sugerindo que as semânticas de DB podem ser inadequadas para sistemas de ficheiros gerais.
APIs Unificadas de Eventos e Subscrição
- Desejo por uma API única e coerente do kernel para “obter estado e subscrever alterações” para qualquer recurso (ficheiros, dispositivos, processos, etc.), em vez da mistura heterogénea de hoje (polling em procfs, inotify, syscalls personalizadas).
- Preocupações com corridas TOCTOU; as ideias incluem reservar acesso a recursos ou fluxos de eventos ao estilo snapshot.
- Há resistência que observa que mecanismos síncronos de autorização e reserva (como em alguns produtos de segurança) podem travar o sistema; qualquer desenho tem de evitar lentidões visíveis para o utilizador.
- Sugestões relacionadas: sinais ao estilo Fuchsia, filas de comandos ao estilo io_uring (com consciência dos respetivos riscos de segurança), execução especulativa com commit/rollback transacional.
Modelo de Execução e Isolamento
- Uma ideia: executar todo o userland como WebAssembly em ring 0, usando verificações de limites em software em vez de isolamento por hardware; evita flushes de TLB / trocas de contexto mas provavelmente é mais lento para código intensivo em computação.
- Discussão sobre quando isto poderia superar processos nativos e sobre partilhar um único espaço de endereçamento.
Dificuldade e Pontos de Entrada para o Desenvolvimento de OS
- Consenso: escrever algum OS é viável; a parte difícil é evitar virar uma confusão impossível de manter e atingir a sofisticação dos sistemas modernos.
- Recursos e caminhos sugeridos: wiki OSDev, tutoriais bare-metal de “hello world”, xv6, tutoriais de Rust no Raspberry Pi, Linux From Scratch (para montagem de sistema, não para desenho de kernel), QEMU/Bochs para experimentação segura.
- Alguns defendem começar com hardware simples ou kernels existentes; outros defendem designs greenfield.
Modelos e Inspirações de OS Alternativos
- Referências a Plan 9, BeOS, seL4, sistemas baseados em capacidades, Inferno, Haiku, Redox, Fuchsia, Nix/Guix e ideias de linguagem-como-OS (Smalltalk, Forth, sistemas à Lisp).
- Propostas para repensar ficheiros como objetos inteligentes, desktops espaciais/3D-first e imagens de sistema sem estado, ao estilo Git, com upgrades e rollbacks transacionais.
Debate sobre Valor, Nostalgia e UX
- Entusiastas veem OSes de hobby como aprendizagem valiosa e uma forma de explorar novos modelos.
- Céticos veem projetos retro ao estilo Win95 como movidos pela nostalgia e de baixo valor social, argumentando que o esforço deveria ir para trabalho mais virado para o futuro ou mais impactante.
- Debate paralelo em curso sobre se a UX de desktop melhorou significativamente desde os anos 90; alguns veem regressões, outros destacam launchers baseados em pesquisa, tiling/snapping e a estabilidade geral como ganhos reais.