Simulador educacional de gerenciamento de memoria em C (paginacao + segmentacao), com foco em fundamentos de Sistemas Operacionais.
Versao atual: 1.1.0
Este projeto simula comportamentos importantes de um gerenciador de memoria:
- paginacao sob demanda com metadados de tabela de paginas;
- substituicao de paginas por LRU quando a memoria fisica enche;
- segmentacao com alocacao first-fit no espaco de enderecamento virtual;
- metricas de execucao (faults, hits, substituicoes, dirty writes, leituras e escritas).
Ideal para estudo, demonstracoes e discussoes tecnicas de SO.
- separacao entre paginas virtuais e frames fisicos;
- implementacao real do caminho de substituicao LRU;
- operacoes de leitura/escrita por byte;
- estatisticas de execucao com hit rate;
- alocacao de segmentos por first-fit em lacunas contiguas;
- flags de CLI (
--help,--version); - Makefile melhorado para build release/debug/sanitize.
Requisitos:
gccouclangmake
Compilar binario release:
makeCompilar e executar:
make runCompilar com debug:
make debugCompilar com sanitizers (ASan + UBSan):
make sanitizeLimpar artefatos:
make cleanBuild rapido no Windows (sem make):
gcc memory_sim.c -std=c11 -Wall -Wextra -Wpedantic -O2 -o memory_sim.exe
.\memory_sim.exeExecutar simulacao padrao:
./memory_simMostrar ajuda:
./memory_sim --helpMostrar versao:
./memory_sim --versionClonar o repositorio:
git clone https://github.com/Kaua-KGzin/Simuler-Mem.git
cd Simuler-MemAtualizar sua copia local:
git pull origin mainFluxo basico para enviar alteracoes:
git checkout -b feat/minha-melhoria
git add .
git commit -m "feat: minha melhoria"
git push -u origin feat/minha-melhoria- Inicializa memoria fisica, tabela de paginas e tabela de segmentos.
- Escreve em mais paginas virtuais do que frames fisicos disponiveis.
- Dispara substituicao LRU automaticamente.
- Executa acessos em paginas quentes para atualizar recencia.
- Aloca/libera segmentos e reutiliza lacunas com first-fit.
- Exibe tabelas finais e metricas da execucao.
memory_sim.c: implementacao do simuladorMakefile: automacao de build/run/debug/sanitizeCHANGELOG.md: historico de versoesLICENSE: licenca do projeto
- politicas FIFO e CLOCK
- entrada de simulacao via arquivo de configuracao
- camada de simulacao de TLB
- tabelas de paginas por processo
- harness de testes para cenarios do alocador
Projeto sob licenca MIT. Veja LICENSE.