Português / English
Este repositório contém um script Python simples que simula o algoritmo Round-Robin (RR), uma técnica de escalonamento de processos preemptivo usada por sistemas operacionais.
A simulação demonstra visualmente como a CPU aloca uma "fatia de tempo" (quantum) para cada processo em uma fila circular, e como o contexto de um processo (como o Program Counter e registradores) é salvo e restaurado durante a troca de contexto.
-
Garanta que você tenha o Python 3 instalado.
-
Clone este repositório ou salve o arquivo
.pyem seu computador. -
Abra um terminal e navegue até o diretório onde o arquivo está.
-
Execute o script:
python SimpleRoundRobinSimulator.py
O script é composto por três componentes principais:
Classe Processo: Armazena o estado de um processo, incluindo seu PID, tempo de execução, tempo restante e um contexto simulado (Program Counter e registradores).Classe CPU: Simula a CPU, com métodos paracarregarContextoesalvarContextode um processo.Função roundRobin: É o escalonador principal. Ele gerencia a fila de prontos (usandoarray.arraycomo uma fila circular FIFO) e o loop principal da simulação, decidindo quem executa e quando realizar a troca de contexto.
Você pode alterar os processos de teste e a fatia de tempo modificando as variáveis no final do script:
# Quantos processos cabem na fila
quantidadeProcessosSistema = 8
# tempo máximo que cada processo usa a CPU antes de sair
timeSlice = 3
#Processos simulados
processosExemplo = [
Processo(pid=101, tempoChegada=0, totalLinhas=12, pcInicial=1000),
Processo(pid=102, tempoChegada=2, totalLinhas=8, pcInicial=2000),
# ... adicione mais processos ...
]
roundRobin(processosExemplo)- Implementar Estados Bloqueados (para simular I/O).
- Adicionar Prioridade Dinâmica aos processos.
This repository contains a simple Python script that simulates the Round-Robin (RR) algorithm, a common preemptive process scheduling technique used in operating systems.
The simulation visually demonstrates how the CPU allocates a "time slice" (quantum) to each process in a circular queue, and how a process's context (like the Program Counter and registers) is saved and restored during a context switch.
-
Ensure you have Python 3 installed.
-
Clone this repository or save the
.pyfile to your computer. -
Open a terminal and navigate to the directory where the file is located.
-
Run the script:
python SimpleRoundRobinSimulator.py
The script is composed of three main components:
ProcessoClass: Stores the state of a process, including its PID, execution time, remaining time, and a simulated context (Program Counter and registers).CPUClass: Simulates the CPU, with methods tocarregarContexto(load context) andsalvarContexto(save context) for a process.roundRobinFunction: This is the main scheduler. It manages the ready queue (usingarray.arrayas a circular FIFO queue) and the main simulation loop, deciding who runs and when to perform a context switch.
You can change the test processes and the quantum (time slice) by modifying the variables at the end of the script:
# How many processes the system queue can hold
quantidadeProcessosSistema = 8
# The time slice (quantum) for each process
timeSlice = 3
#Simulated processes
processosExemplo = [
Processo(pid=101, tempoChegada=0, totalLinhas=12, pcInicial=1000),
Processo(pid=102, tempoChegada=2, totalLinhas=8, pcInicial=2000),
# ... add more processes ...
]
roundRobin(processosExemplo)- Implement Blocked States (to simulate I/O).
- Add Dynamic Priority to processes.
- Anthony Willy