Uma aplicação web interativa desenvolvida em JavaScript para simular, visualizar e analisar quantitativamente o comportamento de algoritmos de escalonamento de processos em sistemas operacionais.
Este projeto foi desenvolvido como parte dos requisitos práticos da disciplina MATA58 - Sistemas Operacionais.
Como a aplicação foi desenvolvida puramente em ambiente web, executá-la é extremamente simples.
# 1. Clone o repositório
git clone https://github.com/Linnzin/SchedLab.git
# 2. Acesse o diretório do projeto
cd SchedLab
# 3. Abra o index.html através de um servidor de desenvolvimento local (recomendação: Live Server para VSCode)# 1. Acesse a página inicial.
# 2. Clique no escalonador de sua escolha.
# 3. Insira os dados do processo a ser inserido no campo "Configuração do Escalonador".
# 4. Clique em "Adicionar Processo (+)" para adicionar um processo com os dados estabelecidos à fila.
# 5. Repita os passos 3 e 4 para adicionar demais processos.
# 6. Caso queira remover um ou mais processos, clique em "Remover Processo (-)". Esse botão remove o último processo inserido, em sequência.
# 7. Ao terminar de adicionar processos, clique em "Simular Escalonador" para ter a Tabela Final e o Diagrama de Gantt.
# 8. Observação: o "Quantum" e a "Sobrecarga de Contexto" são fixos e definidos a partir dos valores presentes no último processo inserido.![Gráfico de Gantt e Tabela de Métricas] 
O SchedLab foi construído utilizando o paradigma de Simulação de Eventos Discretos, garantindo precisão matemática no cálculo dos tempos do sistema.
- FIFO/FCFS (First Come, First Served) - Não preemptivo.
- SJF (Shortest Job First) - Não preemptivo.
- Prioridade - Não preemptivo.
- Round-Robin - Preemptivo com quantum fixo.
- EDF (Earliest Deadline First) - Preemptivo.
- Maior Folga (MLF) - Algoritmo preemptivo autoral desenvolvido pela equipe.
- Entradas Dinâmicas: Permite configurar atributos por processo (ID, Tempo de Chegada, Tempo de Execução, Prioridade e Deadline).
- Parâmetros Globais: Permite configurar o
quantumesobrecarga_contexto. - Gráfico de Gantt Interativo: Renderização visual seguindo a especificação de cores:
- Verde: Execução de Processo.
- Vermelho: Sobrecarga de Contexto.
- Cinza: Estouro de Deadline.
- Linha Vertical: Indicação de Deadline.
- Métricas Completas: Geração automática de relatórios de desempenho individuais e estatísticas globais (Turnaround, Tempo de Espera, Throughput e % de Ociosidade).
O projeto foi estruturado de forma modular, buscando separar a lógica matemática de escalonamento da camada de manipulação visual:
/script/escalonadores/: Contém a lógica pura de cada simulador (funções de escalonamento de cada algoritmo)./html/: Gerenciamento da interface, captura dos inputs do usuário e renderização dinâmica do Gráfico de Gantt no DOM./script/main.js: Funções gerais para cálculo automatizado das métricas e funcionamento dos escalonadores.
- Linguagem Principal: JavaScript (ES6+)
- Interface e Estilização: HTML5 / CSS3
- Bibliotecas: Highcharts
Desenvolvido por:
Lincoln Pereira da Silva - GitHub | LinkedIn
Guilherme de Santana Soares Xavier - GitHub | LinkedIn
Jacques Barreto Salah - GitHub | LinkedIn
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.