MAC 324 Estruturas de Dados para Engenharia
Departamento de Ciência da Computação - USP
PROFESSOR: RONALDO FUMIO
HASHIMOTO
TERCEIRA FASE DO
PROJETO
PRAZO DE ENTREGA:
ATé
12/06/2000
Multiprogramação - Filas das Impressoras
1 Descrição do modelo simplificado
a ser simulado nesta fase
Nessa fase do projeto incluiremos as filas das impressoras no sistema que
estamos simulando. Essas filas deverão ser implementadas como filas
de prioridade.
O modelo a ser simulado segue o esquema de fila única para as
impressoras (são 5 impressoras), cada impressora com velocidade
de 3000 linhas por minuto. Quando uma impressora fica disponível,
o primeiro processo da fila passará à impressão, a
menos que algum processo já esteja no sistema há mais de
10 minutos (Veja Figura 1).
Os processos devem ser gerados como nas fases anteriores. Imprima, para
cada processo que termina sua impressão também as informações
relativas à fila das impressoras. Além disso, mostre o tempo
médio gasto nessa fila. Valem as mesmas observações
quanto a qualidade da saída e documentação de seu
programa. A seguir, mostramos as especificações da implementação
do modelo
Figure 1: Ilustração do sistema que será simulado.
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.
-
Considere que um processo pode ter um tempo mínimo de 10 milisegundos.
-
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).
-
Para simplificar o modelo, um processo entra na fila das impressoras imediatamente
após o término da execução do mesmo pela CPU.
-
Velocidade das impressoras: 3000 linhas por minuto.
-
Número máximo de processos na fila da CPU a cada instante:
20.
-
Os processos na fila das impressoras estarão em duas filas ao mesmo
tempo: uma por ordem de ingresso na fila e outra pelo tempo de permanência
no sistema. Processos que estão no sistema a mais do que 10 minutos
têm prioridade para serem impressos. Se não houver processos
com mais de 10 minutos no sistema, então a impressão será
por ordem de ingresso. Estas filas devem ser implementadas de modo a permitir
que inserções em ambas as filas e remoção do
primeiro elemento de cada fila possam ser feitas em tempo no máximo
O(log n). Para isto, implemente a primeira fila utilizando uma lista circular
duplamente ligada com ou sem cabeça-de-lista, e para representar
a outra fila, utilize uma fila de prioridade implementada num heap.
3 Especificações da saída
do programa
-
Sempre que terminar a execução de um processo, imprima as
seguintes informações:
a) características do processo (número de identificação,
classe, tempo de CPU e número de linhas impressas);
b) tempo total de permanência no sistema;
c) tempo gasto em cada uma das filas;
d) 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, inclusive as duas filas para as impressoras:
a) Fila das classes. Imprima para cada processo o seu número
e o tempo que está na fila.
b) Fila da CPU. Imprima para cada processo o seu número, tempo
de CPU, e tempo restante de execução.
c) Fila das impressoras por ordem de chegada. Imprima para cada processo
o seu número, número de linhas que irá imprimir, e
o tempo que esta na fila.
d) Fila das impressoras por tempo de permanência no sistema. Imprima
para cada processo o seu número, número de linhas que irá
imprimir, e o tempo de permanência no sistema.
-
Se você achar conveniente imprimir mais informações
está ótimo. A saída do programa deve, principalmente,
ajuda-lo a verificar se a simulação (ou seja, o seu programa)
está correta.
File translated from TEX by TTH,
version 2.33.
with some manually modifications.
On 22 May 2000, 11:26.