Blog
Como o Computador Funciona
Para quem já sabe o básico e quer ir fundo. Aqui o assunto é como os modelos funcionam em produção: memória, roteamento, ferramentas, agentes. O lado técnico que pouca gente explica direito.
⚙️ CPU: pipeline, cache L1/L2/L3, branch prediction
Fetch-Decode-Execute em detalhe, por que cache miss mata performance, como branch prediction funciona — e o que isso significa para o código que você escreve.
🧠 Memória: stack, heap, virtual memory, page fault
Stack vs heap, por que stack overflow acontece, virtual memory como abstração, page fault e swapping — como o SO gerencia memória de todos os processos.
🚧 Syscalls: a fronteira entre user-space e kernel
O que é uma syscall, por que trocar entre user mode e kernel mode tem custo, como strace revela o que seu programa faz de verdade.
📁 File descriptors e I/O: o que todo processo compartilha
stdin/stdout/stderr como file descriptors, por que tudo é arquivo no Linux, pipes, redirecionamento — e como isso afeta performance de I/O.
⚡ I/O bloqueante, não-bloqueante, async: select/poll/epoll
Por que servidores web usam epoll em vez de um thread por conexão. Blocking vs non-blocking vs async I/O — o fundamento de event loops como asyncio e Node.js.
🔀 Threads vs processos vs fibras: modelo de concorrência
O que diferencia um thread de um processo no SO, context switch, por que green threads existem, e como Go goroutines e Python asyncio resolvem diferente.
📦 Containers por baixo: namespaces e cgroups no Linux
Docker não é mágica — é Linux namespaces + cgroups + union filesystem. Entender isso explica por que containers são mais leves que VMs e como security funciona.
📡 Serialização, endianness, UTF-8: os bytes que viajam
Por que "olá" tem bytes diferentes em UTF-8 e Latin-1. Big-endian vs little-endian. JSON vs Protobuf vs MessagePack — trade-offs de serialização.
🕐 Tempo distribuído: NTP, clock skew, monotonic vs wall
Por que relógios em servidores diferentes mentem. NTP e PTP, clock drift, por que nunca usar wall clock para medir duração, e como sistemas distribuídos lidam com tempo.