Skip to content

casuffitsharp/ProcSim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ProcSim: Simulador de Gerenciamento de Processos e Escalonamento

Uma ferramenta didática de alta fidelidade para o ensino de Sistemas Operacionais, desenvolvida como Trabalho de Conclusão de Curso em Ciência da Computação na FURB.

Banner do ProcSim

Licença: GPL v3 Build Status Última Release


Índice

  1. Sobre o Projeto
  2. Objetivo Pedagógico
  3. Principais Funcionalidades
  4. Capturas de Tela
  5. Tecnologias Utilizadas
  6. Como Executar o Projeto
  7. Arquitetura do Projeto
  8. Como Contribuir
  9. Licença

Releases / Download

A versão mais recente do ProcSim, já compilada e pronta para uso no Windows, pode ser encontrada na página de Releases do repositório.

Basta acessar a última versão, expandir a seção "Assets" e baixar o arquivo .zip que contém o executável.

1. Sobre o Projeto

O ProcSim é um simulador visual de gerenciamento de processos, desenvolvido para auxiliar no ensino de conceitos complexos de Sistemas Operacionais. A ferramenta aborda a lacuna existente em simuladores educacionais ao oferecer uma simulação de alta fidelidade, onde a execução de processos não é um simples atraso de tempo, mas sim o processamento de uma sequência de instruções e micro-operações, emulando de forma mais autêntica o funcionamento de uma CPU.

Com uma interface inspirada no Gerenciador de Tarefas do Windows, o objetivo do ProcSim é transformar a teoria abstrata de escalonamento, concorrência e gerenciamento de recursos em uma experiência visual, interativa e observável.

2. Objetivo Pedagógico

O ProcSim foi projetado para ser um laboratório virtual onde conceitos teóricos se tornam eventos mensuráveis. A ferramenta permite que estudantes e professores:

  • Visualizem o Invisível: Observem em tempo real o ciclo de vida dos processos, a troca de contexto e as decisões do escalonador.
  • Experimentem na Prática: Configurem cenários complexos com múltiplos núcleos, dispositivos de I/O e cargas de trabalho variadas para analisar o impacto no desempenho do sistema.
  • Analisem Heurísticas Modernas: Entendam na prática como funcionam mecanismos avançados, como aging e priority boost, que são implementados em sistemas operacionais comerciais.

O "Apêndice B - Jornada do Usuário" do artigo de apresentação do projeto serve como um guia prático de como a ferramenta pode ser utilizada em sala de aula.

3. Principais Funcionalidades

  • Configuração Flexível: Permite a criação de cenários de simulação customizados, com controle sobre:

    • Máquina Virtual: Número de núcleos de CPU e duração do quantum.
    • Dispositivos de I/O: Habilitação de dispositivos de I/O, com configuração de canais e latência.
    • Processos: Criação detalhada de processos, definindo prioridade estática, operações de CPU e I/O, e comportamento de loop.
  • Dois Modos de Escalonamento:

    • Round Robin: Algoritmo clássico para demonstração de preempção e tempo compartilhado.
    • Prioridades Híbrido: Um escalonador avançado que ajusta a prioridade dinâmica com base em heurísticas como aging, boost de I/O e penalidade de fila.
  • Monitoramento em Tempo Real: Uma suíte completa de visualização de dados, incluindo:

    • Gráficos de uso de CPU por núcleo, separando tempo de usuário e de sistema.
    • Gráficos de uso para cada canal de dispositivo de I/O.
    • Grade de Detalhes com a lista de todos os processos, seus estados e prioridades.
    • Aba de Histórico do Processo para análise detalhada de um único processo ao longo do tempo.
  • Interatividade Dinâmica: O usuário pode interagir com a simulação para:

    • Alterar a prioridade estática de um processo.
    • Encerrar um processo em execução.
    • Adicionar novas instâncias de processos com a simulação em andamento.
  • Persistência de Cenários: Capacidade de salvar e carregar configurações em formato JSON, garantindo a reprodutibilidade de experimentos.

4. Capturas de Tela

Tela de Configuração Monitoramento de CPU
Tela de Configuração do ProcSim Gráficos de CPU
Aba de Detalhes Histórico do Processo
Aba de Detalhes Aba de Histórico do Processo

5. Tecnologias Utilizadas

Componente Tecnologia
Backend (Camada Core) C# 12, .NET 9
Frontend (UI) WPF, XAML, Padrão MVVM, Material Design
Gráficos LiveCharts 2
Ambiente de Dev Visual Studio 2022
Controle de Versão Git & GitHub
Integração Contínua GitHub Actions

6. Como Executar o Projeto

Nota para Usuários: Se o seu objetivo é apenas utilizar o simulador, recomendamos baixar a versão mais recente diretamente da página de Releases. As instruções a seguir são para desenvolvedores.

Pré-requisitos

Passos para Execução

  1. Clone o repositório:
    git clone [https://github.com/casuffitsharp/procsim.git](https://github.com/casuffitsharp/procsim.git)
  2. Abra a solution ProcSim.sln no Visual Studio 2022.
  3. Defina ProcSim como projeto de inicialização.
  4. Pressione F5 para compilar e executar.

7. Arquitetura do Projeto

O simulador possui uma arquitetura modular dividida em duas camadas principais, visando a manutenibilidade e a extensibilidade:

  • ProcSim.Core: A biblioteca de classes que contém o "motor" da simulação. É responsável pelo Kernel, escalonadores, lógica da CPU e dispositivos de I/O. Por ser agnóstica à interface, pode ser reutilizada em outras plataformas no futuro.

  • ProcSim: O projeto da interface do usuário em WPF. Implementa o padrão MVVM e é responsável por toda a camada de apresentação, consumindo os serviços do ProcSim.Core.

Essa separação garante que a lógica da simulação seja independente de sua representação visual.

8. Como Contribuir

Este é um projeto de código aberto e toda contribuição é bem-vinda! Se você deseja reportar um bug, sugerir uma melhoria ou enviar código, por favor, leia nosso guia de contribuição para começar.

9. Licença

Este projeto está licenciado sob a Licença Pública Geral GNU v3.0 (GPLv3). Veja o arquivo LICENSE para mais detalhes. Isso significa que você tem a liberdade de usar, modificar e distribuir este software, inclusive para fins comerciais, contanto que qualquer trabalho derivado que você distribua também seja licenciado sob a GPLv3 e tenha seu código-fonte disponibilizado.

About

Process Scheduling Simulator

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages