next up previous
Next: Especificações da saída do Up: MAC 2301 Laboratório de Previous: Descrição do modelo simplificado

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:

  1. Tempo total da simulação: 1 hora.

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

  3. O scheduler também deve decider 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).

  4. Tempo gasto pelo scheduler para decidir qual é o próximo processo que deverá ser executado: 0.25 milisegundos.

  5. Velocidade das impressoras: 3000 linhas por minuto.

  6. Número máximo de processos na fila da CPU a cada instante: 7.

  7. Cada classe de processos tem permissões diferentes com relação ao limite máximo de execução na CPU e ao número máximo de linhas a serem impressas. Estas restrições estão descritas na tabela a abaixo:
    Classe CPU (em segs.) Linhas impressas
    1 5 500
    2 30 10000
    Um novo processo deve ser ativado a cada 5 segundos, com probabilidade 0.7 que seja de Classe 1 e probabilidade 0.3 que seja da Classe 2. Ao ativar um processo, gere aleatoriamente o tempo de CPU e o número de linhas que esse processo irá imprimir (dentro dos limites de sua classe). Atribua ainda um número de identificação a cada processo.

  8. As filas da Classe 1 e Classe 2 devem ser implementadas em listas lineares ligadas com cabeça-de-lista.

  9. A fila da CPU deve ser implementada numa lista circularmente ligada (com ou sem cabeça-de-lista).

  10. 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. 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 $ O(\log n)$. Para isto, implemente a primeira fila utilizando uma lista circular duplamente ligada com cabeça-de-lista, e para representar a outra fila, utilize uma fila de prioridade implementada num heap.

  11. As filas da Classe 1 e Classe 2, e a fila das impressoras devem ser implementadas utilizando alocação dinâmica. Mas, para a fila da CPU, implemente e utilize as rotinas de manipulação de uma lista livre.


next up previous
Next: Especificações da saída do Up: MAC 2301 Laboratório de Previous: Descrição do modelo simplificado
Alfredo Goldman 2002-04-11