MAC 324 Estruturas de Dados para Engenharia
Departamento de Ciência da Computação - USP
PROFESSOR: RONALDO FUMIO
HASHIMOTO
SEGUNDA FASE DO
PROJETO
PRAZO DE ENTREGA:
ATé 15/05/2000
Multiprogramação - Fila da CPU
1 Descrição do modelo simplificado
a ser simulado nesta fase
Na primeira fase do projeto, notamos que algumas vezes a CPU ficava ocupada
com um processo ``grande'', criando congestionamentos nas filas dos processos.
Em sistemas reais de multiprocessamento isso não pode ocorrer. Uma
solução encontrada é criar ciclos de execução
da CPU.
A utilização da CPU agora é dividida em intervalos
de tempo (o chamado
ciclo de intervenção do sistema timesharing
que é igual a um QUANTA) com duração
máxima fixada. No início de cada ciclo, a CPU passa a executar
o processo que está no início de sua fila. Se, ao término
do atual ciclo, a execução desse processo não for
completada, ele retorna para o fim da fila da CPU. Se a execução
de um processo terminar durante um ciclo, esse ciclo termina e a CPU passa
a executar o processo que está no início de sua fila. Em
outras palavras, cada processo pode permanecer apenas um determinado tempo
rodando na CPU. Quando esse tempo é ultrapassado, ele é suspenso
e retorna para a última posição da fila da CPU. Com
isso, um processo com grande tempo de execução necessita
de vários ciclos da CPU para ser executado.
Nessa simulação, a fila da CPU continuará comportando
no máximo 7 processos. O ciclo da CPU será de 100 milisegundos.
A fila da CPU deverá ser implementada como uma lista circularmente
ligada com ou sem cabeça de lista.
Continue gerando os processos aleatoriamente como descrito na primeira
fase do projeto, e imprima as mesmas informações pedidas
na primeira fase. Valem as mesmas observações quanto a qualidade
da saída e documentação de seu programa. Na Figura
1, mostramos o novo fluxo dos projetos no seu sistema. Faça uma
análise do ganho de performance obtido com esta alteração.

Figure 1: Ilustração do sistema
das filas de processos e da fila da CPU.
2 Especificações da implementação
do modelo
Faça um programa em C que simule o funcionamento desse
sistema de multiprocessamento com as seguintes considerações:
-
Ciclo de intervenção do sistema de timesharing: 100
milisegundos. Isto significa que a cada 100 milisegundos o scheduler
decide qual é o próximo processo que deverá ser executado.
-
O scheduler também deve decidir qual é o próximo
processo que deverá ser executado imediatamente após o término
da execução de qualquer processo, mesmo que o término
tenha ocorrido antes de se completar um ciclo de intervenção
(ou seja, 100 milisegundos).
-
A fila da CPU deve ser implementada numa lista circularmente ligada (com
ou sem cabeça-de-lista).
3 Especificações da saída
do programa
-
Sempre que terminar a execução de um processo, imprima as
seguintes informações:
-
características do processo (número de identificação,
classe, tempo de CPU e número de linhas impressas);
-
tempo total de permanência no sistema;
-
tempo gasto em cada uma das filas;
-
razão entre o tempo útil (tempo de execução
na CPU, ou seja, running time) e tempo total de permanência
no sistema (ou seja, elapsed time).
-
Ao término da simulação, imprima o número total
de processos executados, assim como a média dos itens (b), (c) e
(d) para cada classe.
-
Além disso, imprima periodicamente (digamos, a cada 100 segundos
- a escolha deste número fica a seu critério) o estado de
cada uma das filas:
-
Fila das classes. Imprima para cada processo o seu número e o tempo
que está na fila.
-
Fila da CPU. Imprima para cada processo o seu número, tempo de CPU,
e tempo restante de execução.
-
Se você achar conveniente imprimir mais informações
está ótimo. A saída do programa deve, principalmente,
ajudá-lo a verificar se a simulação (ou seja, o seu
programa) está correta.
On 9 Apr 2000, 21:45.