diff options
| author | esquizo <esquizo+noreply@esquizo.net> | 2026-07-05 18:08:37 -0300 |
|---|---|---|
| committer | esquizo <esquizo+noreply@esquizo.net> | 2026-07-05 18:08:37 -0300 |
| commit | 8a217e3e019a2944619b628fc89845701a1b15f8 (patch) | |
| tree | 958c43e17872d49fd264a9cefe44b69423d3bce2 | |
| parent | 74ad058ff31d0c0d1a2df290b249d80f75db149b (diff) | |
adicionado posts/plan9-diferencas-tecnicas.md
| -rw-r--r-- | blogs.csv | 2 | ||||
| -rw-r--r-- | posts/plan9-diferencas-tecnicas.md | 97 |
2 files changed, 99 insertions, 0 deletions
@@ -1,3 +1,4 @@ +Diferenças técnicas entre o Plan 9 e UNIX|/posts/plan9-diferencas-tecnicas.html|Sun, 05 Jul 2026 18:05:00 -0300 "Tudo dentro do Rust, nada fora do Rust"|/posts/problemas-rust.html|Tue, 12 May 2026 11:24:27 -0300 Espaços liminares e backrooms|/posts/espacos-liminares.html|Sun, 05 Apr 2026 15:10:23 -0300 Você não precisa criar contas pra acompanhar seus criadores...|/posts/rss.html|Sun, 22 Mar 2026 13:39:53 -0300 @@ -7,3 +8,4 @@ Yep, eu deletei a conta do xitter|/posts/conta-deletada.html|Tue, 17 Mar 2026 20 Lei Felca é só consequência da centralização da internet|/posts/centralizacao-lei-felca.html|sáb 14 mar 2026 22:48:07 -03 Anonimato é só estatistica|/posts/anonimato-estatistica.html|sex 13 mar 2026 10:58:31 -03 First!|/posts/first.html|sex 13 mar 2026 00:36:42 -03 + diff --git a/posts/plan9-diferencas-tecnicas.md b/posts/plan9-diferencas-tecnicas.md new file mode 100644 index 0000000..3577310 --- /dev/null +++ b/posts/plan9-diferencas-tecnicas.md @@ -0,0 +1,97 @@ +# Diferenças técnicas entre o Plan 9 e UNIX + +Eu venho estudado o kernel do Plan 9 e comparando com as implementações de UNIX +que temos hoje, e muitas das coisas que eu comento pela internet sobre o Plan 9 +são mal interpretadas ou rotuladas como "lentas" ou contraditórias e que +precisam funcionar por outro caminho. Eu fui a fundo entender essa diferença de +comunicação que estamos tendo e pretendo remover esses mal-entendidos com esse +post. + +## "Plan 9 tem comunicação baseada em arquivo e, portanto, é lento" + +Apesar dos syscalls de arquivo serem semelhantes, o comportamento desses +syscalls divergem bastante conforme a complexidade aumenta. + +Se você estiver operando um arquivo, tanto o Plan 9 quanto o UNIX vão triggar +uma mudança de privilégio, que então o número do file descriptor é usado pra +selecionar uma entry de um lista de virtual table que contém as operações +corretas para o driver que lida com o arquivo aberto. Até aqui, não há trocas +de contexto e os dois operam mais ou menos na mesma forma. + +A diferença é que o UNIX abandonou completamente a ideia de tudo ser um arquivo +e, como o Rob Pike disse uma vez: "é tudo um arquivo, mas alguns arquivos são +mais iguais que outros". Se você quiser desenhar algo na tela de um UNIX, você +não faz um `write(2)` para o kernel, você é obrigado a se comunicar via IPC ou +tornar o processo mais acoplado com o *driver* do sistema operacional através +de shared memory. + +O Plan 9, por outro lado, leva isso até as ultimas consequências e de forma +mais enxuta. Os drivers dos file descriptors ficam mapeados no processo, o que +reduz a quantidade de trocas de contexto, e o driver lida diretamente com o +buffer passado pelo programa. Um exemplo mais voltado para o gráfico como +citado anteriormente, o driver `draw(3)` fica mapeado junto com o kernel, que +então lida diretamente com os comandos enviados pelo programa, que realiza as +operações e devolve o programa para o modo de usuário, sem realizar uma troca +de contexto. + +Vale ressaltar que sim, operações de I/O no Plan 9 podem causar uma troca de +contexto a depender do driver, então operações em rede ou sistemas de arquivo +montados em 9p ou usando o `pipe(3)` geralmente triggam uma troca de contexto. +A diferença é que o Plan 9 simplificou a operação e tornou I/O mais leve. + +[Esse documento](https://ondoc.logand.com/d/5736/pdf) descreve melhor as +decisões de arquitetura do Plan 9, com as vantagens e desvantagens. + +## "Plan 9 é confuso" + +O Plan 9 é confuso porque ainda temos a mentalidade de como um computador +funciona pelo UNIX. + +O Plan 9 separa o sistema operacional em 3 grandes "servers": CPU server, File +server e Auth server; e esses 3 têm suas configurações feitas de forma isolada, +então toda instalação de um Plan 9 "standalone" é uma composição de 3 ambientes +diferentes, que significa que são 3 configurações diferentes no mesmo sistema. +Ou então você pode fazer 3 configurações em 3 sistemas diferentes (inclusive +sendo sistemas operacionais diferentes), que foi para o quê o Plan 9 foi feito. + +E também muitas das coisas que temos por garantido dos UNIXes modernos são +feitas de forma diferente, e como eu costumo dizer no IRC da bolha dev, o Plan 9 +tem uma tendência a transformar código em infraestrutura. Um exemplo que eu +posso dar é sobre o `audio/mixfs` do 9front, que é o equivalente ao `pulseaudio` +ou `pipewire` do linux. + +O audio do Plan 9 funciona ao escrever e ler no `/dev/audio` do sistema, como +nos antigos UNIXes, e esse `/dev/audio` é oferecido pelo dispositivo de sistema +chamado `#A`, e como nos antigos UNIXes ele tem o problema de só um poder usar +ele, etc. O `audio/mixfs` oferece um file system por 9p que tem a mesma +estrutura do `#A`, que então é bindado no `/dev` do namespace e então todo +software desse namespace vai rodar através do contexto do mixer e não no +contexto do kernel, permitindo mixagem de audio. + +Com esse exemplo, fica claro como que as coisas acabam funcionando no Plan 9: +é tudo sobre uma composição de namespaces, você monta o ambiente adequado que você +quer que o processo rode e então roda o processo. + +## "Plan 9 é inseguro" + +De fato o Plan 9 tem algumas coisas que estão atrasadas pois se trata de um +sistema operacional de pesquisa de 3 décadas atrás, então você não vai +encontrar criptografias mais recentes, como o ed25519, e também VPNs do mercado +como o wireguard ou openvpn. Porém o modelo de segurança do Plan 9 não é +baseado em modelo de segurança ativa, como um firewall, mas de forma mais +passiva, "se um software não precisa ou não pode ver tais coisas, ele +simplesmente não vê isso". Isso dá através de namespaces e, no caso do 9front, +também por mecanismos parecidos com o `pledge(2)` do OpenBSD em nível de +namespace, o `chdev(1)` e comunicações com o `#c/drivers`. + +## Conclusão + +Com isso, eu acredito que algumas coisas fiquem mais claras. O Plan 9 tem um +modelo de arquivo, mas a implementação desse modelo é mais enxuta e simples, +permitindo uma maior performance, segurança e flexibilidade. No máximo, o Plan +9 é um sistema operacional de uso geral mas incompleto e com umas falhas devido +ao tempo que foi deixado de lado, o que é triste mas interessante para explorar +devido a sua codebase ser menor e mais simples, pode-se considerar como um +grande uncharted territory assim como vários outros modelos que foram deixado +de lados com o passar do tempo. + |
