free hosting   image hosting   hosting reseller   online album   e-shop   famous people 
Free Website Templates
Free Installer

Trabalho de Estrutura de dados, prof. Alex Avellar.

Alunos:
Sidnei M. Barrientos Junior
Sávio Brandão
Salim Jacuru Anseri
Joaquim Clemente

Resumo do Trabalho

O objetivo é fazer um algoritmo em portugol que simule o funcionamento de um sistema simplificado de computação com multiprogramação.

Trata-se de uma aplicação de filas na simulação de um timesharing computer system. Cada processo executado no computador pode ser de 'Classe 1' ou 'Classe 2'. Quando um processo é ativado, ele é colocado na fila de sua classse, onde fica esperando até poder entrar na fila do CPU. Um processo de Classe 1 tem sempre prioridade. Um processo de Classe 2 só entra na fila da CPU se a fila da Classe 1 estiver vazia ou os últimos quatro processos que entraram na fila da CPU eram de Classe 1.

A utilização da CPU é dividida em intervalos de tempo(chamado ciclo de intervenção do sistema timesharing que é igual a 1 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, ele vai para a fila das impressoras, o ciclo termina e a CPU passa a executar o processo que está no início de sua fila.

Existe uma única fila para as impressoras. Quando alguma impressora fica disponível, o primeiro processo dessa fila irá utilizar esta impressora.

Trabalho baseado no do site: http://www.ime.usp.br/~cesar/courses/mac374/

Diagrama da Simulação:

Saída do Programa

1. Sempre que terminar a execução de um processo, imprima as seguintes informações:

A-características do processo:

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 tempo total de permanência no sistema (ou seja,
elapsed time)

2. Ao término da simulação, imprima o número total de processo executados, assim como a média dos itens B, C e D para cada classe.

3. Além disso, imprima periodicamente o estado de cada uma das filas, inclusive as duas filas para as impressoras:

A-Fila das classes. Imprima 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 está 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 permaência no sistema.

4. A saída do programa deve ajudá-lo a verificar se a simulação(o programa) está correto.

Diagramas UML:

Sistema.java
Classe central(ou gerente).




CPU.java





Bugs.:

A impressão nunca termina no applet, só consegui executar perfeitamente após a compilação em standalone.

As impressoras foram implementadas inicialmente como Timertasks autoprogramáveis, mas um bug da JVM impede que uma mesma TimerTask seja programada duas ou mais vezes. A solução foi criar uma cópia da impressora, e deixá-la com a mesma ID(clonar tb poderia ser uma solução).

As barras de status ficam doidas quando uma nova simulação se inicia, recomendo atualizar a pagina no navegador, pq eu não pretendo concertar esse bug.

Conclusão do Trabalho

Para o trabalho, preferi fazer um protótipo em Java desse sistema seguindo todas as regras do trabalho original. A razão da escolha é favorecer a visualização dos resultados e facilitar o entendimento do trabalho proposto.

Aqui está o download do código fonte.

JavaDoc - Documentação do código fonte, infelismente não tive tempo de arrumar a documentação, mas já é bom pra visualizar as classes e métodos.

Protótipo Java

Autor do Applet: Sidnei M. Barrientos Junior

Creative Commons License
Esta obra está licenciada sob uma Licença Creative Commons.