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
Telas do SO-SSEGADO no terminal: o logo, o menu principal e uma tabela com sint1 bloqueado, sint2 executando e sint3 pronto.
Saída real do programa, recompilado e executado em outubro de 2026.

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

  1. Kernel

    Escalona os processos entre pronto, executando e bloqueado.

  2. Semáforos

    Bloqueiam e liberam processos que disputam o mesmo recurso.

  3. Disco

    Algoritmo C-SCAN: o cabeçote percorre o disco num sentido só e volta ao início.

  4. 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);
Trecho do main.c no repositório público: uma thread para cada parte do sistema.

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.