Trabalho de Sistemas Operacionais - Escalonador de Processos

Versão 1.0

Desenvolvedores

 Renato Cunha
 Luiz Rodrigo Castro
 Helder Brito Nascimento
 Uanderson Sigler Gomes
 Guilherme Monteiro Garcia
 

Introdução

Implementacao em linguagem C de um escalonador de processos de curto prazo baseado em multiplas filas com realimentacao. Existem duas filas. O algoritmo entre filas trabalha de forma que, com o passar do tempo, processos I/O bound vao para a fila 1 e processos CPU bound para a fila 2. As seguintes facilidades minimas foram requeridas: criar processo, destruir processo, visualizar escalonamento e tempo medio de espera na fila.

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.

Uso - Uma breve introdução à execução do escalonador

Nosso escalonador usa a interface de linha de comando. Para executá-lo, basta digitar o nome do executável acrescido do número de processos a ser executado:

./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

Interface

Mostramos aqui, uma simples execução do escalonador com apenas um processo para que se compreenda sua saída.
 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.


Gerado em Fri May 20 13:13:41 2005 para Escalonador de Processos por  doxygen 1.4.0