-
Notifications
You must be signed in to change notification settings - Fork 1
Arquitetura
CPU-reader-proc segue uma arquitetura em camadas simples:
Fonte de Dados ↓ Aquisição ↓ Parsing ↓ Modelo Interno ↓ Apresentação
Cada camada possui responsabilidade única para reduzir acoplamento e facilitar manutenção.
┌─────────────────┐
│ Linux Kernel │
└──────┬──────────┘
│
▼
┌─────────────────┐
│ /proc │
│ (procfs) │
└──────┬──────────┘
│ leitura
▼
┌─────────────────┐
│ Reader │
│ Entrada bruta │
└──────┬──────────┘
│ parsing
▼
┌─────────────────┐
│ Parser │
│ Interpretação │
└──────┬──────────┘
│ estrutura
▼
┌─────────────────┐
│ Internal Model │
│ Dados tratados │
└──────┬──────────┘
│ saída
▼
┌─────────────────┐
│ CLI / Output │
└─────────────────┘
Responsável pela origem das informações.
Entrada típica:
/proc/stat
/proc/cpuinfo
/proc/loadavg
Responsabilidades:
- Expor dados do sistema;
- Fornecer snapshots;
- Não armazenar estado.
Responsável por leitura bruta.
Operações comuns:
open()
read()
close()Saída esperada:
cpu 11320 120 5310 ...
Responsabilidades:
- Abrir arquivos;
- Capturar conteúdo;
- Isolar I/O.
Não deve:
- Interpretar valores;
- Aplicar regras.
Transforma texto em estruturas.
Entrada:
cpu 11320 120 5310
Saída:
CPUData {
user = 11320,
system = 5310
}Responsabilidades:
- Tokenização;
- Conversão numérica;
- Validação básica.
Representação do estado.
Exemplo:
struct cpu_snapshot {
long user;
long nice;
long system;
long idle;
};Objetivos:
- Centralizar dados;
- Facilitar cálculos;
- Separar coleta da exibição.
Transformação final.
Exemplo:
CPU Usage: 37%
Idle: 63%
Pode evoluir futuramente para:
- JSON
- CSV
- API
- TUI
CPU-reader-proc/
│
├── src/
│ ├── reader/
│ ├── parser/
│ ├── model/
│ ├── output/
│ └── main.c
│
├── include/
│
├── docs/
│
├── tests/
│
└── Makefile
Regra:
output
↓
model
↓
parser
↓
reader
↓
procfs
Camadas superiores conhecem inferiores.
Camadas inferiores não conhecem superiores.
Motivo: facilita testes e reduz acoplamento.
Motivo: evitar propagação de strings.
Motivo: aproximação do comportamento real do sistema.
- Dependente de Linux
- Snapshot local
- Sem histórico persistente
- Sem coleta contínua
→ Instalação