O memGer é um simulador educacional que implementa algoritmos clássicos de substituição de página utilizados em sistemas operacionais para gerenciamento de memória virtual. O projeto foi desenvolvido em C com foco na clareza didática e interface interativa.
┌─────────────────────────────────────────┐
│ 🔄 FIFO (First In, First Out) │
│ 📊 LRU (Least Recently Used) │
└─────────────────────────────────────────┘
- 🎮 Interface Interativa: Menu amigável com navegação simples
- 📊 Visualização em Tempo Real: Acompanhe cada passo da simulação
- ⚖️ Comparação de Algoritmos: Compare FIFO vs LRU lado a lado
- 🔢 Entrada Customizável: Defina suas próprias sequências de referência
- 📈 Relatórios Detalhados: Estatísticas completas de page faults
- ✅ Validação de Entrada: Tratamento robusto de dados inválidos
memGer/
├── 📁 src/
│ ├── 📄 main.c # Função principal e menu
│ ├── 📄 fifo.c # Implementação do algoritmo FIFO
│ ├── 📄 lru.c # Implementação do algoritmo LRU
│ ├── 📄 utils.c # Funções auxiliares e I/O
│ └── 📄 page_replacement.h # Definições e protótipos
├── 📄 Makefile # Script de compilação
└── 📄 README.md # Este arquivo
- GCC Compiler
- Sistema Linux/Unix
- Terminal
# Clone o repositório (se aplicável)
git clone <repo-url>
cd memGer
# Compile o projeto
make
# Execute o simulador
./bin/memger
# Ou compile manualmente
gcc -o memger src/*.c -I src/
./memger╔════════════════════════════════════════════╗
║ SIMULADOR DE SUBSTITUIÇÃO DE PÁGINA ║
╠════════════════════════════════════════════╣
║ 1. Algoritmo FIFO ║
║ 2. Algoritmo LRU ║
║ 3. Comparar ambos os algoritmos ║
║ 4. Sair ║
╚════════════════════════════════════════════╝
Escolha uma opção: 3
Digite o número de referências: 8
Digite as referências: 1 2 3 4 1 2 5 1
Digite o número de frames: 3
Saída do FIFO:
=== Simulação FIFO ===
Passo 1: Página 1 (FAULT) -> Frames: [ 1 | - | - ]
Passo 2: Página 2 (FAULT) -> Frames: [ 1 | 2 | - ]
Passo 3: Página 3 (FAULT) -> Frames: [ 1 | 2 | 3 ]
Passo 4: Página 4 (FAULT) -> Frames: [ 4 | 2 | 3 ]
Passo 5: Página 1 (FAULT) -> Frames: [ 4 | 1 | 3 ]
...
Total de page faults: 6
- Princípio: Substitui a página que está há mais tempo na memória
- Vantagens: Simplicidade de implementação
- Desvantagens: Pode sofrer da Anomalia de Belady
- Princípio: Substitui a página menos recentemente usada
- Vantagens: Boa aproximação do algoritmo ótimo
- Desvantagens: Maior complexidade de implementação
typedef struct {
int page_faults; // Número total de faltas de página
int final_pages[MAX_PAGES]; // Estado final da memória
int num_frames; // Quantidade de frames utilizados
} SimulationResult;Este projeto foi desenvolvido para demonstrar:
- ✅ Compreensão dos algoritmos de substituição de página
- ✅ Implementação modular em linguagem C
- ✅ Tratamento de entrada e validação de dados
- ✅ Visualização clara de algoritmos complexos
- ✅ Comparação quantitativa de desempenho
Referências: 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
Frames: 3
Referências: 1 2 3 4 1 2 5 1 2 3 4 5
Frames: 3 vs 4
Referências: 1 1 1 2 2 2 3 3 3 1 1 1
Frames: 2
Gabriel Silva
Kaique Carvalho
Rogério Rodrigues
Este projeto foi desenvolvido para fins acadêmicos e educacionais.