UNIVERSIDADE FEDERAL DO MARANHÃO DEPARTAMENTO DE INFORMÁTICA CURSO DE CIÊNCIA DA COMPUTAÇÃO Disciplina: Teoria das Filas e Simulação Prof: Mário Meireles Teixeira Trabalho de Simulação: Sistema de Tempo Compartilhado Objetivo Implementar um programa de simulação para um sistema computacional de tempo compartilhado. Configuração e Parametrização do Sistema Considere um sistema de tempo compartilhado composto de 16 estações de trabalho conectadas a um servidor de arquivos com dois discos, como mostrado na figura a seguir. As características da carga de trabalho são as mesmas para os 16 usuários; os usuários possuem um tempo de pensar (think time) segundo uma distribuição exponencial com média de 5 segundos. O processamento de uma requisição requer um tempo médio de CPU de 480 ms e uma média de 12 acessos a disco. O intervalo médio de execução da CPU por acesso a disco é, portanto, de 40 ms e os intervalos entre os acessos aos discos são exponencialmente distribuídos. Para efeito de modelagem do sistema, pode-se assumir que, quando um acesso ao disco se completa, inicia-se (i) um outro intervalo de execução da CPU, com probabilidade px, ou (ii) o processamento da requisição do usuário se completa (e um novo tempo de pensar é iniciado), com probabilidade 1 – px. A probabilidade px é definida como 1 – 1/nio, onde nio é o número médio de acessos a disco por requisição de usuário (neste caso, nio = 12). As requisições aos discos são distribuídas aleatoriamente, independentemente e uniformemente entre os dois discos. O tempo de serviço de um disco é a soma do tempo de busca (seek time), da latência e do tempo de transferência, sendo os dados transferidos em unidades de bloco. O tempo de busca pode ser modelado com uma distribuição uniforme entre [0; 50] ms; o tempo de latência, igualmente entre [0; 16,7] ms; e o tempo de transferência é fixado em 0,52 ms por bloco. Considere que cada requisição precisa transferir somente um bloco de dados por vez. Parte I Elabore um programa de simulação, segundo a descrição acima, que forneça o tempo médio de resposta por estação de trabalho e também o tempo médio de resposta global. Todas as filas são do tipo FIFO e não há preempção. O sistema de filas é fechado, portanto os 16 clientes devem ser criados no início da simulação; use o exemplo cpudisco.zip como ponto de partida. Execute uma simulação com 2.000 requisições e verifique se os resultados fornecidos pelo SimPack estão de acordo com as leis operacionais. Calcule o número médio de requisições no sistema. Parte II No caso acima, assuma que o sistema é multiprogramado e pode atender, no máximo, m clientes por vez. Quando uma estação de trabalho envia uma requisição ao sistema, esta somente terá sua execução iniciada se o número de clientes atual for menor que m; caso contrário, o sistema colocará a requisição em uma fila de espera até que uma das m requisições em execução se complete. Uma possibilidade de implementação é representar a área de espera como uma fila com m servidores. Assuma que o nível de multiprogramação m é 6 (M/M//6/16). Execute uma simulação com 2.000 requisições e calcule os tempos médios de espera, CPU e disco por requisição. Compare os valores do tempo médio de resposta e do número médio de requisições no sistema com os obtidos na Parte I. Verifique se os resultados estão de acordo com as leis operacionais. Documentação do Trabalho A seguinte documentação deverá ser entregue quando da apresentação do trabalho: • • • • Programa fonte organizado e minimamente comentado (enviar por e-mail); Relatório das simulações executadas, fornecido pelo SimPack; Planilha com os resultados e gráficos; Apreciação crítica dos resultados e suas conclusões.