Repository navigation
Introduction
O CPU Reader é um projeto desenvolvido para Linux com o objetivo de explorar, de forma prática, como obter e interpretar informações sobre o processador diretamente a partir do sistema operacional.
O projeto surgiu de uma necessidade simples: entender melhor o que acontece entre o hardware e o software.
Ferramentas como htop, btop e outros monitores de sistema apresentam informações como utilização da CPU, quantidade de núcleos, frequência e outros dados relevantes. Porém, utilizar essas ferramentas não necessariamente significa compreender de onde essas informações vêm, como são obtidas ou como o sistema operacional as disponibiliza para um programa.
A proposta do CPU Reader é investigar justamente essa camada.
Em vez de tratar a CPU apenas como um recurso abstrato utilizado pelo programa, o projeto busca aproximar o desenvolvimento do hardware e do sistema operacional, estudando conceitos como:
- arquitetura e organização de CPUs;
- núcleos e threads;
- frequência e utilização do processador;
- informações expostas pelo Linux;
- leitura e interpretação de dados do sistema;
- gerenciamento de recursos;
- interfaces entre software e sistema operacional;
- programação em C e conceitos de baixo nível.
O CPU Reader nasceu como um projeto de aprendizado, mas com uma abordagem diferente de simplesmente estudar conceitos de forma isolada.
A ideia é transformar cada conceito estudado em uma implementação real.
Ao investigar como obter uma determinada informação da CPU, surgem naturalmente outras perguntas:
De onde esse dado veio?
Como o Linux obtém essa informação?
Qual interface fornece esse dado?
Como essa informação é representada na memória?
Como um programa em C consegue acessar e interpretar esses dados?
Essas perguntas conduzem o desenvolvimento.
Dessa forma, o projeto funciona simultaneamente como uma ferramenta experimental e como um laboratório para estudar programação de sistemas.
O objetivo principal é construir uma compreensão progressiva da relação entre hardware, sistema operacional e software.
O projeto parte de informações relativamente simples e pretende evoluir gradualmente para conceitos mais próximos do funcionamento interno da máquina.
A intenção não é simplesmente reproduzir um monitor de sistema existente, mas compreender os mecanismos envolvidos na obtenção dessas informações e desenvolver uma implementação própria.
A evolução do CPU Reader deverá acompanhar o aprofundamento dos estudos em C, sistemas operacionais, arquitetura de computadores e Assembly.
Entre os objetivos estão ampliar a quantidade de informações coletadas, melhorar a interpretação dos dados, estudar diferentes interfaces disponibilizadas pelo Linux e compreender cada vez melhor o caminho existente entre o hardware e a aplicação.
O projeto, portanto, não começa com a intenção de construir uma ferramenta definitiva.
Ele começa com uma pergunta:
o que realmente acontece entre a CPU e o programa que está tentando observá-la?
O CPU Reader é a tentativa de responder essa pergunta através de código, experimentação e investigação técnica.