Desmistificando Debuggers: A Anatomia de um Programa em Execução
Este artigo mergulha na mecânica de baixo nível de um programa em execução. Usando a analogia de um cartucho de videogame em um NES, ele explica como os sistemas operacionais modernos virtualizam a execução de programas. Conceitos-chave como espaços de endereço virtual, threads de execução, imagens executáveis, carregadores, módulos e processos são detalhados. O artigo explica como os espaços de endereço virtual, por meio de tabelas de páginas, mapeiam endereços virtuais para endereços físicos, permitindo que vários programas compartilhem a memória física sem interferência. Também abrange o agendamento de threads, formatos de imagens executáveis (PE e ELF), o papel do carregador e o carregamento/descarregamento dinâmico de módulos. Finalmente, resume o conceito de um processo, que integra threads, módulos e espaços de endereço virtual.