Sistemas · Faculdade · 2024
SO-SSEGADO
Um simulador de sistema operacional em C, com processos, memória, E/S e disco.
- Status
- Concluído
- Contexto
- Projeto da faculdade · equipe de três
- Meu papel
- Um dos três autores, com Leandro Aguiar Mota e Otávio Augusto Teixeira.
- Tecnologias
- C
- POSIX threads
- Semaphores
- GCC

Visão geral
O SO-SSEGADO carrega programas de teste e mostra, no terminal, o que o sistema operacional faz com cada recurso.
Problema
Escalonamento, semáforos e acesso a disco são difíceis de entender só na teoria. A ideia era vê-los funcionando.
Abordagem
Cada parte do sistema — kernel, memória, E/S e disco — roda numa thread própria, como num sistema de verdade. Os programas de teste são arquivos de texto com instruções simples.
Como funciona
Kernel
Escalona os processos entre pronto, executando e bloqueado.
Semáforos
Bloqueiam e liberam processos que disputam o mesmo recurso.
Disco
Algoritmo C-SCAN: o cabeçote percorre o disco num sentido só e volta ao início.
Menu
Cria processos e mostra o estado de processos, semáforos, memória e disco.
pthread_t kernel; // Thread do kernel
pthread_t sim_menu; // Thread do menu
pthread_t memory_manager; // Thread da memoria
pthread_t io_manager; // Thread de io
pthread_t disk_manager; // Thread do disco
pthread_create(&sim_menu, NULL, menu, NULL);
pthread_create(&kernel, NULL, &mainLoop, NULL);
pthread_create(&memory_manager, NULL, memoryManagerThread, NULL);
pthread_create(&io_manager, NULL, ioManagerThread, NULL);
pthread_create(&disk_manager, NULL, diskManagerThread, &disk);Decisões principais
Uma thread por recurso
Concorrência era o foco da disciplina, e isso tornou reais os problemas de dados compartilhados.
C-SCAN no disco
Percorrer o disco num sentido só deixa o tempo de espera mais uniforme.
Resultado
Concluído em 2024. Em outubro de 2026, recompilei e rodei o programa para capturar as telas.