Renato Cunha Luiz Rodrigo Castro Helder Brito Nascimento Uanderson Sigler Gomes Guilherme Monteiro Garcia
A função principal, portanto, se encarrega de criar o número de processos requisitado e de montar as filas 1, 2 e de bloqueados (as duas últimas, inicialmente vazias), passando depois o controle para a função escalona, que realiza o escalonamento propriamente dito. Após a execução de todos os processos, é gerado um sumário demonstrando as estatísticas de execução de cada processo.
A função de escalonamento se encarrega de chamar as outras funções necessárias para se simular o comportamento dos processos ao longo de sua vida.
./escalonador 10
Para o caso de um número de processos muito grande, sugerimos que se utilize um pipe para um paginador, como o less, por exemplo. Tornando a chamada ao programa para:
./escalonador 10 | less
trovao:~/escalonador$ ./escalonador 2
ID do processo: 0 Tipo de processo: I/O Bound (faixa = 0.430) Passagens pela fila 1: 3 Passagens pela fila 2: 0 Numero de vezes que foi bloqueado: 2 Tempo de espera: 0.000011 s ______________________________________________
ID do processo: 1 Tipo de processo: CPU Bound (faixa = 1.823) Passagens pela fila 1: 3 Passagens pela fila 2: 12 Numero de vezes que foi bloqueado: 2 Tempo de espera: 0.000040 s ______________________________________________
Sumario:
Total de processos: 2 Total de processos CPU Bound: 1 Total de processos I/O Bound: 1
Tempo medio de espera: 0.000026 s Tempo medio de espera de processos CPU Bound: 0.000040 s Tempo medio de espera de processos I/O Bound: 0.000011 s
Tempo total de simulacao: 0.000295 s
Como se pode perceber, a saída do programa é auto-explicativa, mostrando as estatísticas de cada processo e, ao final da execução, mostrando o sumário com tempos de espera médios, números de processos (total, CPU e I/O Bound) e tempo total de execução do programa.
1.4.0