Repository navigation
Introduction
Biblioteca em C para Linux voltada à leitura, interpretação e monitoramento de informações relacionadas ao processador e aos recursos do sistema.
O CPU Reader é um projeto de programação de sistemas desenvolvido para facilitar o acesso programático a informações disponibilizadas pelo Linux sobre o hardware e o estado do sistema.
A proposta é criar uma camada de abstração entre as interfaces do sistema operacional e as aplicações que precisam consumir essas informações.
┌─────────────────────────┐
│ Aplicação │
├─────────────────────────┤
│ CPU Reader API │
├─────────────────────────┤
│ Coletores e Parsers │
├─────────────────────────┤
│ Interfaces Linux │
│ /proc · /sys · etc. │
├─────────────────────────┤
│ Kernel │
├─────────────────────────┤
│ Hardware │
└─────────────────────────┘
O Linux disponibiliza diversas informações sobre o estado do computador, mas aplicações que precisam desses dados frequentemente precisam conhecer detalhes de baixo nível, realizar parsing de arquivos e implementar seu próprio tratamento de erros.
O CPU Reader busca centralizar essa responsabilidade em uma biblioteca reutilizável.
Em vez de cada aplicação implementar:
ler → interpretar → validar → calcular → tratar erros
a aplicação pode utilizar uma API especializada:
Aplicação
↓
CPU Reader
↓
Sistema Linux
O projeto tem como objetivos:
- fornecer uma API simples para acesso a informações do sistema;
- abstrair detalhes de leitura e parsing;
- facilitar o desenvolvimento de ferramentas de monitoramento;
- manter uma implementação modular e extensível;
- oferecer uma base para estudos de C e programação de sistemas;
- aproximar o desenvolvimento de software da arquitetura real do computador.
O escopo do projeto contempla informações como:
- identificação do processador;
- quantidade de CPUs lógicas;
- núcleos de processamento;
- utilização da CPU;
- informações de memória;
- temperatura e sensores, quando disponíveis;
- métricas relacionadas ao estado do sistema.
A disponibilidade de determinadas informações depende do sistema operacional, kernel, arquitetura e hardware utilizados.
O CPU Reader foi pensado principalmente para:
- estudantes de programação;
- desenvolvedores C;
- estudantes de computação;
- entusiastas de hardware;
- interessados em Linux;
- desenvolvedores de ferramentas de monitoramento;
- pesquisadores interessados em programação de sistemas.
Não é necessário conhecer profundamente o kernel Linux para começar.
A documentação procura apresentar os conceitos progressivamente:
Programação em C
↓
Linux
↓
Arquitetura de computadores
↓
Interfaces do sistema
↓
CPU Reader
Uma das ideias centrais do projeto é entender que informações como utilização de CPU não são simplesmente "lidas" como um número pronto.
O sistema operacional disponibiliza contadores e informações que precisam ser interpretados.
De forma simplificada:
Estado do sistema
↓
Contadores
↓
CPU Reader
↓
Parsing
↓
Cálculo
↓
Métrica
↓
Aplicação
Isso torna o CPU Reader também uma ferramenta prática para compreender como software de alto nível pode obter informações provenientes de camadas mais próximas do sistema.
Uma aplicação poderia utilizar o CPU Reader para construir uma ferramenta semelhante a:
CPU Reader Monitor
────────────────────────────
CPU Usage 31.42%
Logical CPUs 8
Memory Usage 7.8 GB
Temperature 52.0 °C
────────────────────────────
O objetivo da biblioteca, entretanto, não é necessariamente fornecer a interface visual. Ela deve funcionar como a camada responsável pela coleta e disponibilização dos dados.
Assim, diferentes aplicações podem consumir a mesma infraestrutura:
CPU Reader
│
┌────────────┼────────────┐
↓ ↓ ↓
CLI GUI Dashboard
O CPU Reader não é apenas uma biblioteca para exibir informações da CPU.
Ele também funciona como um laboratório prático para compreender a relação entre software e hardware:
Código C
↓
Biblioteca
↓
Sistema operacional
↓
Kernel
↓
Hardware
A intenção é tornar essa relação observável, estudável e reutilizável através de uma API bem definida.
Projeto em desenvolvimento.
A API, os recursos disponíveis e a arquitetura podem evoluir conforme o desenvolvimento do projeto.