8000 GitHub - casuffitsharp/ProcSim: Process Scheduling Simulator
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

casuffitsharp/ProcSim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 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 MIT Build Status Última Release


Índice

  1. Sobre o Projeto
  2. Principais Funcionalidades
  3. Capturas de Tela
  4. Tecnologias Utilizadas
  5. Como Executar o Projeto
  6. Arquitetura do Projeto
  7. 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 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, permitindo que estudantes e entusiastas possam experimentar e entender o impacto de diferentes algoritmos e configurações de sistema.

2. 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 como Disco e USB, 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 (finito, infinito ou aleatório).
  • 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 inspirado em sistemas operacionais comerciais, que ajusta a prioridade dinâmica dos processos com base em heurísticas como:
      • Aging (Envelhecimento): Para evitar a inanição de processos de baixa prioridade.
      • Boost de Prioridade: Para processos I/O-bound, melhorando a responsividade do sistema.
      • Penalidade de Fila: Para gerenciar a contenção na fila de prontos.
  • 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, PIDs 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 em tempo real para:

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

3. 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

4. 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

5. 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, sem a necessidade de seguir os passos abaixo. As instruções a seguir são para desenvolvedores que desejam compilar o código-fonte.

Pré-requisitos

Passos para Execução

  1. Clone o repositório para a sua máquina local:
    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 o projeto ProcSim como projeto de inicialização (Startup Project).
  4. Pressione F5 ou clique no botão "Start" para compilar e executar a aplicação.

5. Arquitetura do Projeto

O simulador é projetado com uma arquitetura modular e desacoplada, dividida em duas soluções principais, visando a manutenibilidade e a extensibilidade:

  • ProcSim.Core: Esta é a biblioteca de classes que contém todo o "motor" da simulação. Ela é responsável pelo Kernel, pelos escalonadores, pela lógica da CPU e dos dispositivos de I/O. Por não ter nenhuma dependência de UI, este núcleo pode ser reutilizado em outras plataformas (ex: web, mobile) no futuro.

  • ProcSim: Este é o projeto da interface do usuário, desenvolvido em WPF. Ele implementa o padrão MVVM e é responsável por toda a camada de apresentação, consumindo os serviços e os dados fornecidos pelo ProcSim.Core.

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

6. Licença

Este projeto está licenciado sob a Licença MIT. Veja o arquivo LICENSE para mais detalhes.

About

Process Scheduling Simulator

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

0