Simulador didático de um sistema operacional simples em Python com interface gráfica Tkinter, focado em gerenciamento básico de processos, memória e deadlocks.
- Gerenciamento de Processos: Criação, listagem, finalização individual ou em massa de processos.
- Gerenciamento de Memória: Alocação dinâmica de memória, liberação e monitoramento do uso total.
- Detecção e Resolução de Deadlocks: Simulação de deadlock entre processos com recursos compartilhados e possibilidade de resolver finalizando processos envolvidos.
- Interface Gráfica com Tkinter: Menu interativo para iniciar programas, finalizar processos, listar processos ativos e simular deadlocks com escolha visual para resolver conflitos.
- Programas Pré-definidos: Lista fictícia de programas com diferentes requisitos de memória para iniciar processos.
- Python 3.7 ou superior
- Tkinter instalado (normalmente já vem com Python)
- Clone o repositório:
git clone https://github.com/seuusuario/SO.git
cd SO.git- Execute o simulador:
python main.py- Tela principal com botões para iniciar programas, finalizar processos (por PID ou todos), simular deadlock e listar processos.
- Logs de eventos e mensagens exibidos em tempo real.
- Ao detectar deadlock, janela popup para escolha do processo a ser finalizado para resolver o conflito.
- Process, ProcessManager: definem e gerenciam processos criados.
- MemoryManager: controla uso e alocação de memória.
- DeadlockDetector: simula solicitações de recursos e detecta ciclos de deadlock.
- OperatingSystem: coordena todos os componentes e operações.
- OSApp: interface gráfica em Tkinter que conecta o sistema operacional simulado com a interação do usuário.
A simulação cria dois processos que seguram recursos diferentes e solicitam o recurso um do outro, formando um ciclo clássico de deadlock. O sistema detecta esse ciclo, exibe uma mensagem e permite ao usuário escolher qual processo finalizar para resolver o deadlock, liberando recursos e memória.
- Diogo Buzatto – 111809
- Lucas Ferreira – 111519
- Mauricio Sarpa – 112824
- Pablo Novais – 112070