def mostrar_resultados(self): media_de_espera = 0 media_em_memoria = 0 for processo in self.processos: fatias_gastas = len(processo.historico) fatias_gastas_em_memoria = fatias_gastas - processo.inicio fatias_em_espera = fatias_gastas_em_memoria - processo.fatias media_de_espera += fatias_em_espera media_em_memoria += fatias_gastas_em_memoria Console.quebrar_linha(2) Console.mostrar(f'Resultados do processo {processo.nome}') Console.adicionar_separador(13) Console.mostrar(f'Tempo de espera -> {fatias_em_espera}') Console.mostrar(f'Tempo de execução -> {fatias_gastas_em_memoria}') Console.adicionar_separador(13) quantidade_de_processos = len(self.processos) media_de_espera /= quantidade_de_processos media_em_memoria /= quantidade_de_processos Console.quebrar_linha(2) Console.adicionar_separador(19) Console.mostrar( f'Tempo médio de espera -> {media_de_espera :.2f} fatias') Console.mostrar( f'Tempo médio de execução -> {media_em_memoria :.2f} fatias') Console.adicionar_separador(19)
def mostrar_execucao(self): def obter_espacos(valor): return (2 - len(f'{valor}')) * ' ' Console.quebrar_linha(vezes=1) for i, processo in enumerate(self.fila_de_execucao): faltando = processo.fatias - processo.processado n = ' | ' Console.mostrar(f'{i+1} -> {processo.nome}', n=n) espacos = obter_espacos(faltando) Console.mostrar(f'Faltando -> {espacos}{faltando}', n=n, t='') espacos = obter_espacos(processo.processado) Console.mostrar(f'Processado -> {espacos}{processo.processado}', n=n, t='') espacos = obter_espacos(processo.fatias) Console.mostrar(f'Necessario -> {espacos}{processo.fatias}', n=n, t='') estado = processo.estado() if i == 0 and estado != 'finalizado': estado = 'executou' Console.mostrar(f'Estado -> {estado}', t='')
def carregar_via_console(self): Console.quebrar_linha(vezes=1) self.quantum = int(Console.obter('De quanto é o quantum ?')) self.contexto = int( Console.obter('Qual o custo da troca de contexto ?')) quantidade_de_processos = int( Console.obter('Qual a quantidade de processos ?')) for i in range(quantidade_de_processos): Console.adicionar_separador(tamanho=22) nome = Console.obter(f'Qual o nome do processo {i + 1} ?').upper() inicio = int( Console.obter( f'Em que fatia de tempo "{nome}" entra na memoria ?')) fatias = int( Console.obter( f'Quantas fatias de tempo "{nome}" irá precisar ?', linhas=0)) Console.adicionar_separador(tamanho=22) Console.quebrar_linha(vezes=2) self.processos.append({ 'nome': nome, 'inicio': inicio, 'fatias': fatias })
def mostrar_tabela(self): Console.quebrar_linha(2) n = '\033[0;0m' if self.fatias_executadas < 27: tamanho_da_fatia_em_tela = 3 * ' ' elif self.fatias_executadas < 43: tamanho_da_fatia_em_tela = 2 * ' ' else: tamanho_da_fatia_em_tela = 1 * ' ' for processo in self.processos: Console.mostrar(f'{processo.nome} -> ', n=n, t=' ') for estado in processo.historico: representacao = f'{CORES[estado]}{tamanho_da_fatia_em_tela}' Console.mostrar(f'|{representacao}', n=n, t='') Console.quebrar_linha(2)