Brauliro Gonçalves Leal
Modelagem e Simulação Discreta
Terceira Edição
Juazeiro – BA
O conteúdo deste livro eletrônico é totalmente livre para uso de qualquer natureza desde que citado a fonte. Toda e qualquer parte desta publicação pode ser reproduzida, distribuída ou transmitida de qualquer forma ou por qualquer meio, ou armazenada de qualquer forma ou em qualquer sistema desde que reconhecida a autoria.
Atribuição-CompartilhaIgual – esta licença permite que outros remixem, adaptem e criem a partir deste trabalho, mesmo para fins comerciais, desde que lhe atribuam o devido crédito e que licenciem as novas criações sob termos idênticos (creativecommons.org/licenses).
e-mail: [email protected]
Terceira Edição Eletrônica: Janeiro de 2021 ISBN: a ser feito#
O autor
Brauliro Gonçalves Leal
Professor do Colegiado de Engenharia da Computação Universidade Federal do Vale do São Francisco
Avenida Antônio Carlos Magalhães, 510 Santo Antônio Juazeiro/BA – Brasil 48.902-300
e-mail: [email protected]
site: www.univasf.edu.br/~brauliro.leal
Sobre este documento
Este documento foi escrito em LibreOffice (www.libreoffice.org), suas imagens foram
produzidas pelo Kolourpaint (www.kolourpaint.org), seus programas foram editados na IDE Code::Blocks (www.codeblocks.org) e compilados com o GNU GCC (gcc.gnu.org). O Sistema Operacional utilizado foi o GNU/Linux Mint Cinnamon.
Pois o conforto intelectual e o hábito têm horror das mensagens
que os incomodam.
Modelagem e Simulação Discreta
Prefácio
O objetivo principal deste livro é servir de texto para a disciplina Modelagem e Simulação do curso de Engenharia da Computação do Colegiado de Engenharia da Computação da Universidade Federal do Vale do São Francisco.
Os grandes temas deste livro são: Simulação de Sistemas de Fila, Análise de Resultados Simulados, Sistemas de Fila, Verificação e Validação de Modelos, Geração de Números Aleatórios e Geração de Variáveis Aleatórias.
A partir da Teoria de Filas e dos Modelos de Sistemas de Filas foram construídos os Modelos Analítico, Conceitual e Computacional de Sistemas de Fila. Estes modelos permitem tratar os temas deste livro e são os eixos que dão suporte à teoria e às aplicações da Modelagem e Simulação Discreta.
O Modelo Conceitual de Sistemas de Fila e seu respectivo Modelo Computacional, apresentados neste livro, foi feito em duas partes. Na primeira foi tratado o processo de simulação e na segunda a análise estatística dos resultados. Desta forma, são enfatizadas as variáveis de real interesse para a simulação, tornando o modelo mais simples e sem perdas de precisão. Esta abordagem revelou-se assaz didática.
O uso de modelos é amplamente aceito pois permite estudar problemas aos poucos – ampliando o escopo quando necessário, maior facilidade para testar um sistema antes de lhe dar forma final – reduz custos, melhora a comunicação entre os membros de uma equipe – aumento da eficiência das equipes, e contribui com a publicidade dos seus resultados – favorece o entendimento do público de interesse.
Os modelos computacionais foram implementados em C++, pelo rigor da linguagem, e em Javascript com HTML5, para permitir a visualização gráfica e a dinâmica da simulação, viabilizando seu uso em navegadores web. Esta implementação permite a avaliação gráfica do comportamento dos sistemas simulados, dando grande estímulo à aprendizagem, com resultados inspiradores.
Os algoritmos para a Geração de Variáveis Aleatórias também são contribuições relevantes, permitem gerar várias funções de distribuição acumuladas, discretas e contínuas, a partir de números aleatórios, dando suporte à simulação computacional.
Outros algoritmos foram desenvolvidos, destinados aos tópicos relevantes da Simulação de Sistemas Simples de Fila, para Verificação e Validação de Modelos e também para a Análise de Resultados Simulados, com destaque para os métodos de Replicação Independente e Média de Lotes.
O autor espera que tenha contribuído com o ensino destes conteúdos de modo a torná-los mais atraentes, visuais, dinâmicos e aplicados nas diversas áreas de conhecimento, quando cabível. Na esperança de que os estudantes descubram a expressão racional que se descobriu no mundo e que os ajude a reinventá-la.
Os softwares e material didáticos auxiliares foram incluídos no texto e tem como finalidade pedagógica, destinam-se a ilustrar os conceitos da disciplina, estão sendo melhorados e otimizados e são de uso livre. O autor não assume quaisquer responsabilidades pelo seu uso e, ou, pelas consequências de seu uso.
Construindo a Modelagem e Simulação de Sistemas Computacionais
A Modelagem e Simulação de Sistemas Computacionais permitem representar Sistemas Computacionais por meio de modelos de simulação e reproduzir suas cadeias de causalidade, estimar e avaliar resultados e subsidiar o processo de tomada de decisões em nível de engenharia.
A seguir são relacionados os principais conceitos que dão suporte à modelagem e a simulação destes sistemas.
Teorias da Filas
Mais de um século de pesquisa em sistemas de filas permitem compreender a organização dos sistemas computacionais e estabelecer suas relações físico-matemáticas sob a forma de Modelos Analíticos. Os seus resultados teóricos e experimentais atestam o sucesso desta abordagem
Estatística
Estatística é uma ferramenta usada quando não se sabe, ou é impossível saber, totalmente as informações contidas em um sistema. Desta forma, ela trabalha melhor com incertezas ao quantificá-las em níveis de confiança. Seus conceitos, métodos e técnicas dão o suporte necessário para a validação e verificação de experimentos envolvendo sistemas computacionais
Computadores, Linguagem e Técnicas
Computacionais
Computadores, com sua capacidade e velocidades extremadas, dão o suporte para a simulação. As linguagens de programação permitem escrever os softwares necessários para a simulação e análise de resultados. As técnicas computacionais, como estruturas de dados, programação orientada a objetos, cálculo numérico e computação gráfica, dão suporte à simulação. Todo e qualquer hardware ou software, os computadores, seus componentes e seus elementos de conexão são, eles mesmos, objetos de estudo
Geradores de Números Aleatórios e Geração de Variáveis Aleatórias
O acaso é um agente imprevisível e atua em todos os domínios da Natureza. Por ser um elemento explicativo nas ciências, é necessário introduzi-lo nos sistemas, o que é feito por meio de números aleatórios. Os geradores de números aleatórios são essenciais para gerar variáveis aleatórias e suas distribuições estatísticas, viabilizando a simulação computacional a partir de poucos valores medidos
Modelos Analíticos de Redes de
Computadores
Os modelos de sistema computacionais tornaram possíveis a compreensão e a verificação de resultados de simulação, extensíveis aos demais recursos de software e de hardware
Sistemas Computacionais
Os sistemas computacionais são transversais na vida das pessoas, das empresas e dos governos. Em todas as áreas, sua influência é marcante. Sistemas de computação são recursos de software e de hardware, tomados em parte ou no todo, de modo isolado ou em rede e, para sua compreensão e seu uso adequado, é necessário um conhecimento básico da terminologia da avaliação de desempenho, seus princípios e suas técnicas
Matemática
Com sua concisão e ubiquidade, a matemática é a linguagem que permite escrever o corpo teórico para a modelagem, simulação e análise de resultados. As técnicas matemáticas, como Cálculos Diferencial e Integral e Séries, são requeridas para qualificar e quantificar as teorias deste livro e seus objetos de estudo
Cabe aqui uma ressalva, a de que variáveis aleatórias diferem das variáveis deterministas habituais (da ciência e engenharia em geral). Variáveis deterministas apresentam um valor único a qual associa-se um erro de medida. Por outro lado, variáveis aleatórias têm seus valores associadas a distribuição de probabilidade, que devem ser interpretados tendo em vista estatísticas de cada resultado possível.
A simulação discreta faz uso de variáveis aleatórias de modo a representar a grande variabilidade dos seus objetos de estudo e seus usos e aplicações na sociedade global. Uma outra ressalva é que nossos modelos científicos são apenas modelos, simplificações, aproximações que funcionam muito bem e, quando surge algo novo, o modelo é
aprimorado. Esse é o modo de progresso da Ciência pois ela é inacabada, em eterna construção, como nós mesmos e a sociedade, mas busca diminuir as incertezas enquanto lida com a complexidade deste universo material.
Visão dos Tópicos Tratados no Livro
A maioria das simulações estocásticas têm a mesma estrutura básica:
1. Identificar uma variável aleatória de interesse X e desenvolver um software para sua simulação
2. Gerar uma amostra X1, ..., Xn independentes e igualmente distribuídas (iid) e com a mesma
distribuição X
3. Estimar estatísticas de X1 e avaliar a precisão da estimativa2
A Figura 1 apresenta uma visão dos principais tópicos do livro. O tema central é a simulação, ponto de convergência de quatro outros tópicos, discutidos abaixo:
Figura 1 Esquema dos principais destaques do livro.
Teoria das Filas
ramo da probabilidade que estuda a formação de filas do ponto de vista matemático, é utilizada para estabelecer as relações físico-matemáticas dos sistemas computacionais e permitem construir seus modelos analíticos, conceituais e computacionais
GVA acrônimo de gerador de variáveis aleatórias, permite gerar valores para funçõesdensidade de probabilidade a partir dos geradores de números aleatórios (GNA)
Validação e Verificação
são técnicas para comprovar se a simulação representa o sistema real com fidelidade suficiente para garantir a obtenção de soluções satisfatórias para o problema em nível de engenharia
Simulação processo que permite parametrizar, construir e reproduzir o comportamento deSistemas de Fila por meio de modelos e executá-los em computadores
Para a simulação de um sistema computacional, o primeiro passo requer a construção de um modelo, neste caso utiliza-se modelos obtidos a partir da Teoria das Filas. Em seguida, obtém-se amostras (medições) representativas de seu comportamento (em geral são requeridos poucos dados). Estes dados fornecem os parâmetros que permitem identificar a função densidade de probabilidade adequada para a amostra e, assim, gerar inúmeras
1 Em geral, a média de X.
variáveis aleatórias para simulação deste sistema. Os resultados obtidos são valores médios, desvios padrões e intervalos de confiança.
A simulação é uma técnica reducionista e sua grande vantagem é que, a partir de uns poucos dados representativos de um sistema, ela permite gerar variáveis aleatórias em grande quantidade e que são capazes de reproduzir a dinâmica deste sistema. Atendendo bem as necessidades dos engenheiros: fazer mais com menos atendendo aos critérios de qualidade estabelecidos.
Peço antecipadas desculpas por eventuais erros neste texto, que certamente existem, agradeço antecipadamente toda e qualquer correção ou sugestão de melhoramentos, que deverão ser enviadas para o e-mail da disciplina: [email protected].
Tabela de Símbolos
Nome3 Descrição
A/B/c/K/m/Z Notação de Kendall para Teoria de Fila CQ Teste χ2
d Vetor de taxa de serviço de Servidores em RSF [s] D Estatística do teste χ2
DP(X) Desvio Padrão da variável aleatória X
F Fila
F, fda Função distribuição acumulada, F(x)=∫f(x)dx f, fdp Função distribuição de probabilidade
GCL Gerador Congruente Linear
GNA Gerador de Número (pseudo)Aleatório GVA Gerador de Variável Aleatória
IC Intervalo de Confiança
ic Intervalo entre chegadas de pacotes na Fila [s-1]
iid Independente e igualmente distribuído
imc Intervalo médio entre chegadas de pacotes na Fila [s-1]
ims Intervalo médio entre saídas de pacotes do Servidor [s-1]
is Intervalo entre saídas de pacotes do Servidor [s-1]
l, λ Taxa de chegada de pacotes na Fila [s]
m, E[X] Esperança matemática de X, média aritmética ou valor esperado m, μ Taxa de serviço do Servidor [s]
n Número de elementos de uma amostra
N Número inicial de pacotes para simulações dos Sistemas de Fila ℕ Conjunto dos números naturais
nf Número de pacotes esperando na Fila (tamanho da fila)
ns Número de pacotes no Servidor
nsf Número de pacotes no Sistema de Fila
p Pacote (unidade de trabalho)
p Ordem dos pacotes, o primeiro pacote tem ordem zero (0) p Parâmetro da distribuição de probabilidade Exponencial p0 Probabilidade de Servidor Ocioso
pn Probabilidade de n pacotes no Sistema de Fila
r Coeficiente de correlação
r Vetor de rota de pacotes na RSF
RI Método que implementa o método de Repetições Independentes (MRI) s Segundo (unidade de tempo)
S Servidor
SF Sistema de Fila
SF Vetor de Sistemas de Fila M/M/1 T Duração da simulação [s]
tcf Tempo de chegada de pacote na Fila [s] tef Tempo de espera na Fila [s]
tfs tempo da saída do pacote do Servidor (fim do serviço) tis Tempo no qual o pacote chega no Servidor [s]
tms Tempo médio de serviço do Servidor [s-1]
tps Tempo de permanência no Servidor [s]
ts Tempo de serviço do Servidor para processar um pacote [s-1]
tts Tempo total no Sistema de Fila (tempo de resposta) [s]
3 O termo pacote será adotado neste texto para indicar as unidades operacionais dos Sistemas de Fila; são sinônimos de pacote os termos tarefa, transação, trabalho, instrução, flops e operação, dentre outras denominações encontradas na literatura da área.
U Utilização do Sistema de Fila U Distribuição Acumulada Uniforme
u Variável aleatória uniformemente distribuída em [0, 1] V(X) Variância da variável aleatória X
X Amostra X = {X1, X2, ..., Xn}
X Variável aleatória γ Taxa média de saída [s]
μ Esperança matemática da população ρ Autocorrelação
σ Desvio padrão da população τ Tempo entre chegadas [s]
Índice
1 Introdução...11
1.1 Sistema...12
1.2 Modelo...13
1.3 Dinâmica Temporal de Sistemas Computacionais...14
1.4 Simulação...14
1.5 Simulação de Sistemas de Eventos Discretos...16
1.6 Simulação de Sistemas Computacionais...17
1.7 Etapas de um Estudo de Simulação...18
1.8 Revisão...21 1.9 Questões...21 2 Sistemas de Fila...22 2.1 Sistemas de Fila M/M/1...25 2.2 Revisão...29 2.3 Questões...29
3 Modelo Analítico de Sistemas de Fila...30
3.1 Modelo de Sistemas de Fila M/M/1...31
3.2 Modelo Analítico de Sistemas de Fila M/M/1...32
3.3 Revisão...35
3.4 Questões...35
3.5 Exercícios...36
4 Modelo Conceitual de Sistemas de Fila...37
4.1 Dados de Entrada para Simulação...40
4.2 Valores Iniciais da Simulação...43
4.3 Cálculo de tcf...43
4.4 Cálculo de tis...43
4.5 Cálculo de tfs...44
4.6 Estatísticas do Modelo Conceitual de Sistemas de Fila...45
4.7 Algoritmo para Calcular nf...46
4.8 Algoritmo para Calcular U...47
4.9 Sumário do Modelo Conceitual de Sistemas de Filas...48
4.10 Revisão...50
4.11 Questões...52
4.12 Exercícios...52
5 Modelo Computacional de Sistemas de Fila...53
5.1 Técnica para Gerar ic e ts...54
5.2 Software SF.MM1.cpp...55
5.3 Revisão...61
5.4 Questões...62
5.5 Exercícios...63
6 Verificação e Validação de Modelos...64
6.1 Técnicas de Validação de Modelo...65
6.2 Técnicas de Verificação de Modelos...65
6.4 Questões...67
6.5 Exercícios...67
7 Análise de Resultados Simulados...68
7.1 Remoção de Transientes...69
7.1.1 Estimação por Intervalos de Confiança...70
7.1.2 Método das Médias de Lotes...71
7.1.3 Método de Replicação Independente (MRI)...72
7.2 Critério de Parada...74
7.2.1 Intervalo de Confiança como Critério de Parada...74
7.2.2 N como Critério de Parada...74
7.3 Que Nível de Confiança Estatística Usar...75
7.4 Software SF.MM1-ML-RI.cpp...75
7.5 Revisão...77
7.6 Questões...78
7.7 Exercícios...78
8 Simulação de Sistemas Computacionais...80
8.1 Modelo de Rede de Sistemas de Fila (RSF)...82
8.2 Modelo Conceitual de RSF...82
8.3 Valores Iniciais da Simulação de RSF...84
8.4 Roteamento do Primeiro Pacote (p=0)...85
8.5 Roteamento dos Demais Pacotes (p>0)...85
8.6 Revisão de RSF...87
9 Modelo Computacional de Redes de Sistemas de Filas...88
9.1 Sistema Cliente/Servidor Web em uma Camada Física...93
9.2 Sistema Cliente/Servidor Web em duas Camadas Físicas...94
9.3 Sistema Cliente/Servidor Web em três Camadas Físicas...96
9.4 Simulação de Sistemas de Hardware...98
9.5 Revisão...100
9.6 Exercícios...100
10 Geração de Números Aleatórios...101
10.1 Geradores Congruentes Lineares (GCL)...101
10.2 Aplicação do GCL...102
10.3 Sementes para o GCL...104
10.4 GCL de uso geral...104
10.5 Números Aleatórios do GNU C...105
10.6 Composição de Geradores...106
10.7 Geradores Tausworthe...108
10.8 Outros Geradores...108
10.9 Classe clGNA...108
10.10 Teste Empíricos de GNA...109
10.10.1 Testes Empíricos...110
10.11 Testes Teóricos...112
10.12 Questões...117
10.13 Exercícios...117
11 Geração de Variáveis Aleatórias...119
11.1 Método da Inversa da FDA...120
11.2 Método da Convolução...121
11.3 Método da Composição...121
11.4 Método da Aceitação Rejeição...122
11.5 Gerar FDA...123
11.6 Qualidade na Geração de Variáveis Aleatórias...124
11.7 Algoritmos para Gerar Variáveis Aleatórias...124
11.8 Gerar Processos de Chegada...127
11.9 Questões...127
11.10 Exercícios...127
12 Recursos do C++ para a Simulação...129
13.1 Independência de Observações...133
13.2 Distribuições de Probabilidade Úteis...134
13.3 Estimação de Parâmetros...136
13.3.1 Método da Máxima Verossimilhança...136
13.3.2 Método dos Mínimos Quadrados...137
13.4 Estimativa dos Parâmetros das FDP...137
13.4.1 Estimativa dos parâmetros da fdp Exponencial...137
13.4.2 Estimativa dos parâmetros da fdp Beta...138
13.4.3 Estimativa dos parâmetros da fdp Gamma...139
13.4.4 Estimativa dos parâmetros da fdp Weibull...139
13.5 Identificação da Distribuição Estatística...140
13.5.1 Teste Chi-Quadrado (CQ)...140
13.5.2 Testes CQ para fdp Beta...142
13.6 Modelos para Processos de Chegada...143
13.7 Gerando Processos de Chegada...143
13.8 Testando Homogeneidade de Amostras...144
13.9 Questões...145
13.10 Exercícios...146
14 Redução da Variância...148
14.1 Números Aleatórios Comuns...149
14.2 Variáveis Antitéticas...149
14.3 Métodos Estatísticos para Comparar Resultados Simulados...152
14.3.1 Teste para Média Zero...153
14.3.2 Observações Pareadas...154
14.3.3 Observações não Pareadas...154
14.4 Questões...155
14.5 Exercícios...156
15 Softwares para Simulação Sistemas de Fila...158
15.1 Dicionário de Dados dos Softwares...158
15.2 SF.MM1.cpp...159
15.3 SF.MM1-ML-RI.cpp...162
15.4 RSF.MM1.cpp...165
15.5 RSF.MM1-ML-RI.cpp...168
16 Modelo Analítico de Sistemas de Fila M/M/1...173
17 GVA pelo Método da Inversa...175
17.1 GVA da Distribuição de Probabilidade Exponencial...175
17.2 GVA da Distribuição de Probabilidade de Valores Extremos...176
17.3 GVA da Distribuição de Probabilidade Logística...176
17.4 GVA da Distribuição de Probabilidade de Pareto...177
17.5 GVA da Distribuição de Probabilidade Weibull...177
1 I
NTRODUÇÃO
Os sistemas computacionais prestam relevantes serviços e compartilham recursos em todos os níveis da nossa sociedade. Eles tornam-se cada vez mais necessários, mais complexos e mais abrangentes.
Devido a sua grande importância e alcance espaço-temporal, é necessário a avaliação destes sistemas via medição, emulação, simulação e modelagem. Essa abordagem empírica/matemática permite, não só o entendimento destes sistemas, mas também o melhor uso destes recursos.
A diversidade de sistemas computacionais envolve vários parâmetros que estão relacionados ao seu desempenho, o conceito de Sistema de Filas, apesar da sua simplicidade, é a ideia primária para a compreensão do mais simples ao mais complexo sistema computacional, da performance de uma CPU à grande rede mundial – a Internet, dos sistemas de hardware aos de software.
Os Sistemas de Filas são utilizados para a modelagem analítica, simulação e avaliação do desempenho de sistemas computacionais, tanto em nível de software quanto de hardware. Estes modelos permitem descrever o estado destes sistemas quantificando suas variáveis de estado e sua dinâmica temporal.
A simulação de sistemas computacionais pode ser vista como o estudo do comportamento de sistemas através de modelos de filas. Ela utiliza outras áreas do conhecimento, principalmente estatística, mas também números aleatórios, matemática discreta, teoria dos números e técnicas de programação, além de engenharia de software, cálculo numérico e computação gráfica.
O uso da simulação pode oferecer vantagens quando é necessário estimar distribuição de variáveis aleatórias, comparar cenários representando diferentes soluções de um problema, avaliar o comportamento de uma solução analítica e avaliar projetos de software e hardware.
A simulação computacional faz uso de computadores para realizar simulações. Ela utiliza linguagens de programação para implementar os modelos matemáticos de sistemas computacionais e processá-los em computadores, fazendo uso das capacidades e velocidades extremadas destas máquinas.
A execução de modelos de simulação em computador tem potencial para fornecer resultados mais precisos sem a necessidade de interferir nos sistemas reais, possibilitando gerar informações úteis na tomada de decisões para a solução de problemas.
A simulação é um instrumento com grande potencial de aplicação comercial, na pesquisa e em consultoria, principalmente em redes e aplicações. Mas vai além, como banco de dados, sistemas operacionais, sistemas embarcados, projetos de hardware e software e
gestão de recursos. Bem como na gestão de recursos de sistemas multimídia, computação em nuvem, Internet das coisas (IoT), domótica e cidades inteligentes.
1.1 Sistema
Considerando seus elementos constituintes, o termo sistema pode ser definido como um conjunto estruturado de componentes entre os quais pode-se definir alguma relação de funcionalidade. O valor dos atributos dos seus componentes, variáveis de estado e parâmetros, em um dado instante de tempo, define o estado do sistema, Figura 1.1.
Figura 1.1 Representação gráfica da relação sistema mundo real.
Para os propósitos deste livro, os sistemas de interesse são os Sistemas Computacionais, que são sistemas orientados a eventos de entrada, processamento e saída, constituídos por recursos de software e de hardware, tomados em parte ou no todo, de modo isolado ou em conjunto. Nosso estudo será focado em Sistemas de Fila representando Sistemas Computacionais, pois são capazes de reproduzir estas estruturas e seu comportamento.
Exemplo 1.1 O circuito TTL 7400 da Figura 1.2 é um exemplo de um sistema, um dispositivo que contém quatro portas NAND, cada uma delas com duas entradas e uma saída. As portas apresentam funcionamento independente; suas variáveis de estado são os valores das entradas e saída e seus parâmetros são dados do fabricante.
e seus valores constituem o estado deste sistema.
Fonte: https://materialpublic.imd.ufrn.br/curso/disciplina/1/17/3/7
Figura 1.2 Circuito integrado TTL 7400
Exemplo 1.2 Sistema Orientado
O primeiro passo na aplicação do conceito de sistema a um problema específico é definir o que constitui o sistema. Um segundo ponto a ser considerado é a escolha do nível de descrição desejado. O conceito de sistema geral pode ser considerado como o menor nível de descrição de um sistema em que somente as possíveis interações com o mundo exterior são retidas, ficando definida sua constituição e aquilo que lhe é externo. Um sistema geral é definido por um conjunto de relações entre as entidades que caracterizam as interações com o mundo exterior. Assim. sistema geral é uma relação entre as variáveis que ligam um sistema ao mundo exterior. Se forem definidas as variáveis usadas como excitação (entrada) e as variáveis usadas como resposta (saída), tem-se um sistema orientado. Um sistema orientado, pode ser caracterizado por uma relação entre o conjunto de entradas e saídas. Os conceitos de sistemas geral e orientado não incluem o tempo como intrínseco ao sistema.
1.2 Modelo
Modelos são descrições de um sistema, concebidos através de uma abstração da realidade, considerando seus aspectos relevantes, para permitir uma análise simplificada sem descartar seus aspectos importantes.
A construção de um modelo, em geral, busca viabilizar a solução de um problema de um sistema, podendo existir um número variado de modelos para um mesmo sistema, cada um deles considerando aspectos específicos do mesmo.
A utilidade de um modelo está diretamente relacionada à sua capacidade de incorporar elementos reais de forma simples, contendo seus aspectos importantes sem que a sua complexidade impossibilite a compreensão e manipulação do mesmo, Figura 1.3.
Figura 1.3 Representação gráfica da relação mundo real-sistema-modelo.
Para os propósitos deste livro, os modelos de interesse são os modelos de Sistemas de Fila, que são modelos matemáticos capazes de representar os processos de Sistemas Computacionais de modo geral, simular seu comportamento, descrever seus aspectos relevantes, permitir sua análise e fazer predição de seu comportamento.
O Modelo de Sistemas de Fila tem uso prático (valor de uso), tem predicabilidade (valor preditivo), representa os sistemas computacionais (valor de face) e permite construir modelos computacionais (valor de simulação), enfim, é útil para os fins propostos.
Exemplo 1.3 A Figura 1.4 é um modelo do circuito TTL 7400, com suas quatro portas NAND, cada uma delas com duas entradas e uma saída.. Pode-se verificar que os elementos desnecessários para caracterização do sistema da Figura 1.2 foram propositalmente abstraídos, restando tão somente aqueles que são relevantes e úteis para os propósitos da eletrônica digital. Note que foram adicionados ao modelo símbolos pictóricos necessários à sua manipulação.
Fonte: https://materialpublic.imd.ufrn.br/curso/disciplina/1/17/3/7
Figura 1.4 Um modelo do circuito integrado TTL 7400
Desafios
1. Na música Minha História, de Chico Buarque, tem o verso: “Com seu único velho vestido cada dia mais curto”. Considerando este verso, identifique e relação causa/efeito e faça um modelo matemático para quantificar esta relação.
2. Encontre o modelo matemático implícito no texto bíblico: “a quem tem, mais será dado, mas a quem não tem, até o que tiver lhe será tirado”.
1.3 Dinâmica Temporal de Sistemas Computacionais
O circuito TTL 7400 da Figura 1.4 será usado para representar da dinâmica temporal de um Sistema Computacional, suas variáveis de estado (valor das entradas e saída) e parâmetros (dados do fabricante). Neste caso, sinais entram nas portas lógicas, são processados e enviados para as saídas.
Uma característica importante dos sinais, é que não se sabe quando chegarão. Suas chegadas ocorrem ao acaso, é uma variável aleatória.
Uma vez que o sinal chegou, ele é processado. Cada porta lógica tem uma taxa de processamento, um dos seus parâmetros. Ele é um valor determinístico, não é aleatório. Generalizando estas ideias, os Sistemas Computacionais recebem tarefas para serem processadas. Eles são caracterizados por duas grandezas, a taxa de chegada e a taxa de processamento. Estas taxas dão origem a duas outras grandezas temporais, o tempo entre as chegadas e o tempo de processamento. Estes tempos, em geral, são variáveis aleatórias, o tempo entre chegadas depende do acaso, e o tempo de processamento depende do tamanho da tarefa que chega.
Exemplo 1.4 Outras grandezas, derivadas do tempo entre as chegadas e o tempo de processamento, permitem a tomada de decisão em nível de engenharia, quais sejam:
• Vazão ou Throughput: é o número de tarefas executados em um determinado intervalo de tempo. Quanto maior a vazão, maior o número de tarefas executadas em função do tempo. A maximização da vazão é desejada na maioria dos sistemas.
• Tempo de Processamento: é o tempo que uma tarefa leva para ser processada. Este parâmetro depende do sistema em uso e da tarefa.
• Tempo de Espera: é todo o tempo que a tarefa permanece aguardando ser processada. A redução deste tempo de espera é desejada de modo geral.
• Tempo de Resposta: é o tempo decorrido entre uma requisição ao sistema e o instante em que a resposta começa a ser informada.
Estas grandezas, dentre outras, são objeto de estuda da Simulação.
1.4 Simulação
Simulação consiste em manipular um modelo de um sistema, real ou hipotético, para compreender seu comportamento ou avaliar sua operação, descrever seus aspectos relevantes, permitir sua análise e fazer predição, Figura 1.5.
Figura 1.5 Representação gráfica da relação mundo real-sistema-modelo-simulação e de volta ao sistema e ao mundo real.
Uma das grandes utilidades da simulação é tornar possível fazer estimativas do comportamento de um sistema, além de estabelecer como mudanças no sistema podem afetar seu comportamento e desempenho, ou seja, a análise de sensibilidade de modelos.
A simulação pode ser classificada de várias maneiras, a mais comum usa quatro categorias: a) simulação contínua; b) simulação Monte Carlo; c) simulação de eventos discretos e d) simulação baseada em trace.
Um processo pode ser de estado discreto ou contínuo. Se os valores que suas variáveis de estado podem assumir é finito e enumerável, o processo é chamado de processo de estado discreto. Por exemplo, o número de pacotes em um sistema de fila pode ter valores discretos iguais a 1, 2, 3 e assim por diante, portanto, a formação de filas é um processo de estado discreto.
Por outro lado, se as variáveis de estado podem assumir qualquer valor real ele é um processo de estado contínuo. O tempo de espera numa fila, teoricamente, pode assumir qualquer valor real é, portanto, um processo de estado contínuo. Já o processo de chegada na fila é discreto, pois ocorre periodicamente no tempo, em momentos sucessivos do tempo, entretanto é de natureza aleatória.
A simulação contínua é utilizada para modelar sistemas cujo estado varia continuamente no tempo, sendo comum a utilização de equações diferenciais.
O Método de Monte Carlo é um método estatístico que utiliza amostragens aleatórias massivas para obter resultados numéricos, repetindo sucessivas simulações para calcular probabilidades. Tem sido utilizado como forma de obter aproximações numéricas de funções complexas, utilizando alguma distribuição de probabilidade e uma amostra para aproximar a função de interesse. Simulação de Monte Carlo é um modelo de simulação estática, a passagem do tempo é irrelevante.
Trace ou Rastreio é um registro cronológico de eventos ocorridos em um sistema real, como um log (lista ordenada de eventos de tempo e suas variáveis associadas)de um sistema operacional ou o registro de um monitoramento. A simulação baseada em trace utiliza este registro como dados de entrada e, assim, permite avaliar o comportamento do sistema e seus modelos. Eles podem ser apresentados em vários níveis de detalhe: eventos de rastreamento, procedimento trace ou rastreio de variáveis.
Traces são úteis para conhecer o comportamento de sistemas computacionais, são fontes de dados para obtenção de funções de distribuição de probabilidade de dados para uso em simulação. Como são valores medidos, podem também ser usados na validação e verificação de resultados de simulações. Para serem úteis e ter valor estatístico, traces devem ser amostras representativas do comportamento do sistema.
Os sistemas discretos são constituídos por sequência de eventos discretos no tempo. Cada evento ocorre em um determinado instante de tempo e marca uma mudança de estado no sistema. Entre eventos consecutivos, o sistema não muda4 e a simulação pode ser feita de evento em evento, sequencialmente, do início ao fim.
A Teoria da Filas é o modelo matemático usado para representar Sistemas Computacionais, ela é um ramo da probabilidade que estuda a formação de filas. Este modelo matemático demonstra o comportamento de um sistema de oferta de serviços com demanda aleatória, envolvendo clientes e provedores de serviços.
A simulação de eventos discretos consiste em processar eventos consecutivos que ocorrem em Sistemas de Filas, evento a evento, sequencialmente no tempo, do início ao fim; e produzir resultados operacionais de qualidade por meio de estatísticas das suas propriedades mensuráveis.
1.5 Simulação de Sistemas de Eventos Discretos
Os modelos de Simulação de Eventos Discretos (SED) mais simples possuem uma única Fila e um único Servidor. Os Pacotes5 são as unidades de trabalhos dos SEDs. Cada pacote possui três atributos: tempo de chegada no sistema, tempo de entrada no servidor e tempo de saída do servidor. O estado do sistema é definido pelo seu fluxo de pacotes; e o estado dos pacotes é definido pelos seus atributos.
O objetivo de um modelo de simulação de eventos discretos é representar o fluxo de pacotes através de um sistema, atribuir valores aos eventos dos pacotes e, assim estabelecer o comportamento e o desempenho deste sistema.
O fluxo de pacotes nos SEDs é caracterizado pela chegada, processamento e partida de pacotes. O fluxo de cada pacote através do SED é caracterizado por:
1) chegar no sistema 2) entrar na Fila
3) aguardar na Fila se necessário 4) entrar no Servidor
5) ser processado no Servidor 6) sair do Servidor
O estado do SED muda em três situações, que podem ocorrer de forma isoladas ou conjuntas. A primeira situação é quando o pacote chega na Fila. A segunda é quando o pacote entra no Servidor. A terceira situação é quando o pacote sai do Servidor.
As mudanças de estado dos SED são imprevisíveis pois ocorrem ao acaso. São três eventos discretos aleatórios no tempo cronológico, a saber:
1) tempo no qual o pacote chega do sistema (tempo de chegada na fila)
2) tempo no qual o pacote (sai da fila e) entra no servidor (tempo de início de serviço) 3) tempo no qual sai do servidor (tempo de fim de serviço)
A Figura 1.6 ilustra o fluxo de pacotes, eventos e tempos dos eventos em Sistema e Eventos Discretos. Vale ressalta que o fluxo de pacotes é a variável independente e que o tempo é variável dependente.
5 O termo pacote é adotado neste texto para indicar as unidades operacionais dos Sistemas de Fila; são sinônimos de pacote termos: tarefa, transação, requisição e instrução. Outras denominações para pacote são encontradas na literatura técnico-científica.
Figura 1.6 Fluxo de pacotes, eventos e tempos dos eventos em Sistema e Eventos Discretos. O eixo do tempo na vertical indica que ele é variável dependente.
Variáveis de estado derivadas dos eventos discretos:
a) número de Pacotes na Fila
b) condição do Servidor (ocioso/ocupado) c) tempo de ocupação do Servidor
d) condição de Pacote (na Fila/no Servidor) e) tempo de espera de Pacotes na Fila;
f) tempo de processamento de Pacotes no Servidor. g) duração da simulação
1.6 Simulação de Sistemas Computacionais
Na simulação de Sistemas Computacionais faz uso da Simulação de Eventos Discretos, o modelo usado é o Sistema de Filas, que é constituído de Filas e Servidores. Neste sistema, os Pacotes entram numa Fila e são atendidos por um Servidor. Os processos de chegar na Fila, entrar no Servidor e sair do Servidor são eventos discretos visto que ocorrem em pontos isolados do tempo, Figura 1.7. No eixo X desta figura é mostrada uma sequência de três pacotes e seus respectivos eventos discretos no eixo Y: chegar na Fila, entrar no Servidor e sair do Servidor.
Figura 1.7 Sequência de três Pacotes e seus respectivos eventos discretos: chegar na Fila (∎), entrar no Servidor (∎) e sair do Servidor (∎).
Pode-se ver que na Figura 1.7 o eixo X, da variável independente, refere-se a Pacote, que chegam ao sistema sucessivamente. Já o eixo Y, da variável dependente, é o tempo, e os respectivos eventos discretos de cada Pacote: tempo de chegada na Fila, tempo de entrada no Servidor e tempo de saída do Servidor.
Um evento discreto acontece em um momento do tempo. Neste caso, o tempo deixa de ser a variável independente. Como o estado de um Pacote no sistema (na Fila ou no Servidor) permanece constante entre os eventos, uma descrição completa do estado do sistema pode ser obtido inserindo e processando Pacotes sucessivamente no sistema. A simulação de sistemas computacionais consiste em representar estados de Sistemas de Filas, fazer passar por eles uma sequência de Pacotes, quantificar os tempos de ocorrência dos eventos discretos de cada Pacote e produzir resultados operacionais de qualidade por meio de estatísticas.
1.7 Etapas de um Estudo de Simulação
O processo de construção de modelos para representar sistemas pode ser organizado em uma sequência de estágios, discutidos na Tabela 1.1, segundo Jain (1991).
Tabela 1.1 Estágios da construção de modelos para simulação de sistemas
Identificação do Problema
o problema é discutido no escopo do sistema real ou seu projeto. Uma vez identificado o problema, pode-se avaliar a viabilidade do uso da simulação para sua solução. Esta avaliação acontece em consonância com os objetivos da simulação e dos seus usuários finais
Formulação do Problema
após identificado, o problema é então formulado com vistas à simulação. Devido à natureza evolucionária da modelagem e da simulação, a definição do problema é um processo contínuo, que ocorre em todos estes estágios
Objetivos
consiste em identificar claramente os resultados a serem alcançados com a simulação, definir critérios para avaliação destes resultados e apresentar suas aplicações, restrições e limites das soluções encontradas para o problema. Em seguida são definidos os objetivos específicos, para enumerar as características internas do sistema que precisam ser representadas no modelo
o modelo conceitual consiste de uma descrição estática e de uma descrição dinâmica. A descrição estática define os elementos do sistema e suas características. A descrição dinâmica define o modo como estes elementos interagem causando mudanças no seu estado no decorrer do tempo dos eventos. O modelador deve conhecer bem a estrutura e as regras de operação do sistema e saber extrair o essencial do mesmo, sem incluir detalhes desnecessários. A quantidade de detalhes incluída no modelo deve ser baseada no propósito para o qual é construído
Determinação dos Dados de Entrada e Saída
geralmente os valores de entrada são, de início, hipotéticos ou baseados em alguma análise preliminar. Dependendo do objetivo do modelo, amostras representativas do problema são requeridas e são úteis nos estágios posteriores do estudo da simulação. Dados da literatura, como dados do fabricante (datasheets) e artigos técnicos e científicos, são fontes de dados usuais
Construção do Modelo Computacional é a tradução do modelo conceitual para uma forma reconhecida pelo computador
Verificação
consiste em determinar se o modelo conceitual é executado pelo computador como esperado Validação
busca comprovar que o modelo conceitual representa o sistema real com fidelidade suficiente para garantir a obtenção de soluções satisfatórias para o problema. Normalmente são utilizados cenários em que o comportamento real já é conhecido previamente e que pode ser comparado com o comportamento obtido com a simulação. Também pode envolver uma comparação da estrutura do modelo e do sistema, e comparações do número de vezes que decisões fundamentais ou pacotes dos subsistemas são realizadas. Outros modelos do mesmo sistema também podem ser utilizados na validação
Plano de Tática e Estratégia
refere-se ao estabelecimento das ações para a execução da simulação, o plano estratégico consiste em um cronograma de atividades eficiente tanto para explicar as relações entre os resultados simulados e as variáveis controladas, quanto para determinar a combinação dos valores das variáveis controladas que minimizariam ou maximizariam a resposta simulada. Já o plano tático consiste em determinar como cada simulação deve ser realizada para se obter as informações desejadas sobre os dados
Experimentação e Análise dos Resultados execução do modelo computacional, interpretação e análise dos resultados
Implementação dos Resultados os resultados da simulação são implantados no sistema real
Documentação do Modelo documentação do modelo utilizando os diagramas da UML ou equivalente
Relatório da Simulação
relatório técnico da simulação e memória de cálculo utilizando normas técnicas ou equivalente
O seguinte exemplo trata dos modelos matemáticos.
Exemplo 1.5 Por que confiamos em modelos matemáticos?
Marcelo Girardi Schappo
Quanto tempo leva para ir de carro de São Paulo ao Rio de Janeiro? Depende da velocidade do automóvel, certo? Quanto mais rápido nos movermos, menos tempo levaremos para chegar ao destino. Na escola, muita gente aprendeu uma relação chamada de “velocidade média”, que é a razão entre a distância e o tempo necessário para percorrê-la. Usando essa equação, podemos estimar a velocidade média de um carro, de um ônibus ou de um avião. Se, ao contrário, soubermos a velocidade média, podemos usar a mesma equação para determinar, aproximadamente, o tempo da viagem. Fazendo isso, estamos, na verdade, usando um modelo matemático simples (a definição matemática da velocidade média) para tentar prever determinado fenômeno (tempo de viagem de São Paulo ao Rio).
Essa é a grande importância dos “modelos” na ciência. Eles permitem fazer previsões sobre determinados fenômenos e processos. No caso da viagem, quanto melhor for a nossa estimativa inicial para a velocidade média, melhor será a previsão sobre o tempo do percurso. Para estimarmos da melhor forma possível esse valor, precisamos levar em conta um conjunto grande de parâmetros, como a possibilidade de haver congestionamentos, acidentes, paradas para descanso, trechos de subida ou descida, e assim por diante. Como não conseguimos ter certeza sobre todos esses parâmetros, nossa previsão de tempo de viagem,
obtida pelo modelo, sempre terá uma margem de erro. Em outras palavras, toda modelagem possui algum grau de simplificação. A natureza é difícil demais.
Ao longo da história, cientistas têm tentado driblar essas dificuldades fazendo modelos cada vez mais robustos, e temos tido bastante sucesso. Veja que, atualmente, uma sonda lançada para outro astro do sistema solar terá seu caminho traçado com bastante precisão. É possível saber, de antemão, o dia e a hora da chegada ao destino final.
Os modelos são tão importantes que estão por toda a parte na ciência. Podemos usar modelos matemáticos em astrofísica, por exemplo, para estudar o comportamento futuro de um sistema de milhares de estrelas e centenas de galáxias. Como esses corpos se comportarão no futuro? Quantos colidirão, ou se fundirão? Quantos serão ejetados para fora de seus sistemas? E quanto tempo esse processo vai levar?
Podemos também fazer previsões acertadas sobre a forma correta de produzir um circuito elétrico num aparelho de rádio capaz de transmitir e receber sinais eletromagnéticos, sustentando adequadamente as comunicações, por exemplo. Usamos modelos para fazer a previsão do tempo pra amanhã e para estimar cenários futuros para o clima do planeta. Também é possível usar modelos para reações químicas para tentar entender como elas ocorrem. Em uma sala de raios-X, podemos usar modelos que nos auxiliam a determinar a proteção adequada para diminuir a exposição do operador da máquina à radiação. Os exemplos são incontáveis.
Sim, a natureza é complicada, e os modelos são simplificações. Mas essas simplificações, embora inevitáveis, não tornam o processo pouco importante ou inútil, como todos esses exemplos demonstram. Modelar a natureza é um dos grandes trunfos da humanidade, por meio da ciência.
À medida que vamos aprendendo mais e obtendo mais dados, cientistas que trabalham com os modelos da área estão de prontidão para implementar esses dados e atualizar as previsões. Esse é o poder da ciência.
Adaptado de: Schappo, Marcelo Girardi. Por que confiamos em modelos matemáticos? Revista Questão de Ciência. 2020. Disponível em: <https://www.revistaquestaodeciencia.com.br/questionador-questionado/ 2020/04/09/por-que-confiamos-em-modelos-matematicos>. Acesso em: 9 Abr 2020.
1.8 Revisão
(a) (b)
Figura 1.8 a) Simulação e seus conceitos e b) Modelo de Sistemas Computacionais.
O objetivo é associar os dois conceitos para Simular Sistemas Computacionais por computadores.
1.9 Questões
1) Discuta as maneiras de se estudar um sistema.
2) Relacione as perguntas abaixo com os estágios da construção de modelos para simulação de sistemas da Tabela 1.1, justificando sua resposta:
a) Como se relacionam os resultados com os objetivos? b) Por que o problema está sendo estudado?
c) Quais são as hipóteses e pressupostos?
d) Quais serão as respostas que o estudo espera alcançar? 3) Relacione as Figura 1.8-a e Figura 1.8-b.
4) Faça uma única figura representando as Figura 1.8-a e Figura 1.8-b. 5) Faça um resumo do texto do Exemplo 1.5 com até 1000 caracteres? 6) Crie 7 palavras-chaves para o texto do Exemplo 1.5?
2 S
ISTEMAS
DE
F
ILA
Os Sistemas de Fila são as unidades básicas da Simulação Discreta de Sistema computacionais. Sistemas de Fila podem ser descritos como pacotes chegando para serem processadas e saindo do sistema após serem atendidas. A formação de Fila ocorre quando a procura é maior do que a capacidade de atendimento do Servidor. O fluxo temporal dos pacotes, chegando nas Filas, chegando e saindo dos Servidores, determina a dinâmica do Sistemas de Fila e seus eventos ao processar pacotes.
Em termos conceituais, Sistemas de Fila são compostos por uma ou mais Filas e um ou mais Servidores, como exposto na Tabela 2.1. O Pacote é a unidade que requer atendimento.
Tabela 2.1 Componentes dos Sistemas de Fila
Pacote unidade que requer atendimento
Filas representam os pacotes que esperam atendimento, não inclui os pacotes sendo atendidosnos Servidores Servidores canais que realizam atendimento dos pacotes das Filas
A Figura 2.1 representa graficamente a estrutura de um Sistema de Fila, nela pode-se ver seus componentes, suas inter-relações e seus parâmetros. Nesta figura estão identificados seis parâmetros básicos dos Sistemas de Fila, que são descritos na Tabela 2.2: 1) processo de chegada; 2) distribuição do tempo de serviço; 3) número de Servidores; 4) capacidade do Sistema; 5) tamanho da população; 6) disciplina de Serviço.
Figura 2.1 Representação gráfica de um Sistema de Fila única com múltiplos servidores, sua estrutura, parâmetros básicos e inter-relações entre seus componentes (Jain, 1991).
Tabela 2.2 Os seis parâmetros básicos dos Sistemas de Fila
Parâmetro Descrição
1. Processo de chegada
o processo de chegada de pacotes ou entrada de pacote na Fila do sistema, é medido em termos de número médio de pacotes que chegam por unidade de tempo (λ – taxa média de chegada) ou pelo tempo médio entre chegadas sucessivas de pacotes (1/λ)
2. Distribuição do tempo
de serviço a distribuição do tempo de serviço é descrito pela taxa de serviço (μ) ou tempo de atendimento de um pacote (1/μ) 3. Número de Servidores número de servidores que prestam serviços simultaneamente. Um sistema de filas pode possuir um ou múltiplos canais de atendimento operando
independentemente um do outro.
4. Capacidade do Sistema número máximo de pacotes permitidos no sistema ao mesmo tempo, tanto aqueles sendo atendidos quanto aqueles nas filas 5. Tamanho da população tamanho potencial da população de pacotes que demandam o sistema
6. Disciplina de Serviço refere-se à maneira como os pacotes são escolhidos para entrar no servidor após afila ser formada
O modelo Fila+Servidor é a unidade básica da simulação discreta, embora possua estrutura simples ele é bem estudado e tem sido bem-sucedido em representar o comportamento dos Sistemas Computacionais. Estes modelos podem ser associados em série e, ou, em paralelo para simular Sistemas Computacionais, como circuitos integrados, componentes de hardware e software e rede de computadores.
O modelo Fila+Servidor pode ser usado para analisar os recursos individuais de sistemas de computação, por exemplo: se instruções a serem processadas por uma CPU são mantidas em uma memória. A CPU pode ser modelada por um Sistema de Fila, onde a memória é a Fila e a CPU é o Servidor do sistema.
Os seis parâmetros dos Sistemas de Fila, apresentados na Figura 2.1 e na Tabela 2.2, são resumidos pela Notação de Kendall através dos símbolos A/B/c/K/m/Z, descritos na Tabela 2.3.
Tabela 2.3 Descrição dos parâmetros da notação de Kendall para Sistemas de Fila e valores dos seus parâmetros
Símbolo Descrição Valores
A distribuição estatística dos intervalos de tempo entre chegadas M – Processo de Markov (os pacotes chegam e saem um de cada vez) B distribuição estatística do tempo de serviço M – Processo de Markov
c número de servidores ou capacidade de atendimento 1, 2, ..., ∞6
K número máximo de pacotes permitidas no sistema 1, 2, ..., ∞ m tamanho da população de pacotes 1, 2, ..., ∞
Z Disciplina da fila FIFO – o primeiro que chega é o primeiro a ser atendido
A notação M/D/1/10/∞/FIFO indica um processo com chegadas Marcovianas, atendimento determinístico, um servidor, capacidade máxima do sistema igual a 10 pacotes, população infinita e o primeiro que chega é o primeiro a sair do sistema.
A notação M/M/1 é o Sistema de Fila mais simples, com chegadas e atendimento Marcovianos, um servidor, capacidade do sistema infinita, população infinita e o primeiro que chega é o primeiro a sair do sistema, é a abreviação de M/M/1/∞/∞/FIFO, ou seja:
6 Os valores infinitos adotados para c, K e m são simplificações para evitar cálculos de probabilidade com reposição, simplificam os modelos sem afetar suas aplicações e suas interpretações – os resultados justificam tais aproximações.
A disciplina de fila FIFO (primeiro que chega é o primeiro a sair do sistema) será a adotada para os Sistemas Computacionais, por ser uma simplificação razoável.
Exemplo 2.1 Escalonamento FIFO (First in First out – Primeiro a Chegar – Primeiro a Sair)
O escalonamento FIFO (não-preemptivo7) é o de implementação mais simples. Desta forma, o primeiro
pacote que chega é o primeiro a ser enviado para o Servidor. Os pacotes são organizados em uma fila, que funciona baseado na política FIFO. Considere o seguinte conjunto de pacotes:
Pacote na Fila Tempo de Serviço (ut)
p1 3
p2 6
p3 4
p4 5
Supondo que a ordem de chegada dos pacotes seja: p1, p2, p3 e p4. Dessa forma, conforme a política FIFO, a
ordem de execução dos pacotes é mostrado diagrama de tempo abaixo.
Para este conjunto de pacotes o tempo de espera do pacote p1 é de 0 (zero) unidades de tempo; para o
pacote p2 de 3 unidades de tempo; para o pacote p3 de 9 unidades de tempo; e para o pacote p4 de 13
unidades de tempo. O tempo médio de espera na fila é de (0+3+9+13)/4, que é igual a 6,25 unidades de tempo.
A disciplina de fila SJF(Shortest Job First – Menor Tarefa Primeiro), o pacote da Fila que tem o menor tempo de serviço é encaminhado ao Servidor, Exemplo 2.2.
Exemplo 2.2 Escalonamento SJF – Shortest Job First (Menor Tarefa Primeiro)
Neste escalonamento, o pacote da Fila que tem o menor tempo de serviço é encaminhado ao Servidor. Considere o seguinte conjunto de pacotes:
Pacote na Fila Tempo de Serviço (ut)
p1 3
p2 6
p3 4
p4 5
Supondo que a ordem de chegada dos pacotes seja: p1, p2, p3 e p4, e que todos eles estão na Fila. Conforme
a política SJF, a ordem de execução dos pacotes é mostrado diagrama de tempo abaixo.
Neste escalonamento, o tempo de espera do pacote p1 é de 0 unidade de tempo (ut); para o pacote p3 é de
3 ut; para o pacote p4 é de 7 ut; e para o pacote p2 é de 12 ut. O tempo médio de espera na Fila é de 5,5 ut,
(0+3+7+12)/4.
Segundo Silberschatz, trata-se de um escalonamento ótimo, em média, neste escalonamento, os pacotes esperam menos para serem processados pelo Servidor.
7 No escalonamento não-preemptível um pacote não pode ser retirado do Servidor.
M / M /1⇔ M / M /1/∞/∞/ FIFO
2.1 Sistemas de Fila M/M/1
O modelo mais simples dos Sistemas de Fila é aquele que possui uma única Fila e apenas um Servidor, a Figura 2.2 é o seu símbolo.
Figura 2.2 Representação gráfica de Sistemas de Fila simples destacando sua estrutura, os processos de chegada e saída, a formação da Fila com pacotes em espera e o Servidor. Em Sistemas de Fila M/M/1, os pacotes chegam na Fila à taxa média λ, o processo de chegada é Marcoviano, com distribuição de probabilidade exponencial. Os pacotes são atendidos à taxa de serviço μ, o processo de atendimento é Marcoviano, com distribuição de probabilidade exponencial.
Inicialmente, o Sistemas de Fila está ocioso, não há pacote na Fila e nem no Servidor. A Fila está vazia e o Servidor ocioso. O primeiro pacote que chega no sistema passa pela Fila e vai para o Servidor. A Fila continua vazia e o Servidor fica ocupado. À medida que chegam mais e mais pacotes, em geral, há formação de Fila e o Servidor processa continuamente os pacotes que chegam.
Vale destacar que os eventos discretos, chegar na Fila, entrar no Servidor e sair do Servidor, serão de grande valia nos Modelos Conceitual e Computacional de Sistemas de Fila M/M/1.
Em Sistemas de Fila M/M/1, pode-se considerar dois tipos de grandezas para descrever seu comportamento. A primeira é o número de pacotes na Fila e no Servidor. A segunda é o tempo dos pacotes na Fila e no Servidor. Essas variáveis são aleatórias e são denominadas variáveis fundamentais dos Sistemas de Fila M/M/1, e estão representadas na Figura 2.3 e descritas na Tabela 2.4.
Na Figura 2.3 pode-se destacar cinco níveis relacionados às variáveis aleatórias fundamentais dos Sistemas de Fila M/M/1, a saber:
1. no nível superior, tem-se os processos que ocorrem nestes sistemas, a chegada, a espera, o serviço e a saída
2. no nível abaixo, destacam-se as taxas de chegada (λ) e de serviço (μ)
3. nível intermediário, estão os números do sistema, nq, ns e n, número de pacotes na Fila, no Servidor e no Sistema de Fila, respectivamente, n = nq + ns
4. no próximo nível, estão os eventos discretos do sistema, a saber, chegar na Fila, entrar no Servidor e sair do Servidor
5. no último nível estão os tempos do sistema, w, s e r, tempo de espera na Fila, tempo de permanência no Servidor e tempo total no Sistema de Fila, respectivamente, sendo r = w + s. O intervalo entre chegadas é a diferença entre os tempos de duas chegadas sucessivas.
Figura 2.3 Representação gráfica das variáveis aleatórias fundamentais dos Sistemas de Fila M/M/1, adaptado de Jain (1991).
Exemplo 2.3 Representação gráfica das variáveis aleatórias temporais relacionadas aos eventos dos Sistemas de Fila M/M/1
Em termos de simulação, a entrada sucessiva de pacotes em um Sistema de Fila, como os pacotes Pi-1 e Pi da
figu-ra ao lado, e seus três eventos discretos (∎ - chegar na Fila, ∎ - entrar no Servidor e ∎ - sair do Servidor), permi-tem definir cinco variáveis aleatórias permi-temporais relacio-nadas à dinâmica do sistema.
Considerando o mesmo pacote, temos os tempos even-tos:
∎ - tempo de chegada na Fila (tcf)
∎ - tempo de início de serviço (tis)
∎ - tempo de fim de serviço (tfs)
Considerando dois pacotes sucessivos, temos os tempos eventos:
∎ - intervalo entre chegadas na Fila (ic)
∎ - intervalo entre saídas do Servidor (is) Em termos de modelagem matemática:
r = tfs – tcf
s = tfs – tis
w = tis – tcf
ici = tfsi – tfsi-1
isi = tcfi – tcfi-1
Estas variáveis temporais permitem calcular as estatísticas do sistema e seu estudo detalhado.
Tabela 2.4 Variáveis aleatórias fundamentais dos Sistemas de Fila Simples (Jain, 1991)
Variável Descrição
λ taxa média de chegada na Fila por unidade de tempo μ taxa média de serviço por Servidor por unidade de tempo n número de pacotes no Sistema de Fila, na Fila e no Servidor nq número de pacotes esperando na Fila ou comprimento da Fila
ns número de pacotes no Servidor ou número de pacotes sendo atendidos
r tempo de resposta do sistema ou tempo no Sistema de Fila w tempo de espera na Fila
Na Tabela 2.5 estão as Leis de Little, Equações 2.1, 2.2 e 2.3. Em termos práticos, estas leis permitem converter valores de Tempo no Sistema em seus respectivos valores de Número no Sistema.
Tabela 2.5 Estabilidade, Tempo e Número no Sistema de Fila e na Fila. Condição de estabilidade
• λ < μ, λ e μ são variáveis aleatórias
Número no Sistema x Número na Fila
• n = nq + ns, onde n, nq e ns são variáveis aleatórias
• E[n] = E[nq] + E[ns], o número médio de pacotes no Sistema de Fila é igual à soma do número médio
de pacotes na Fila e o número médio de pacotes no Servidor
• se a taxa de serviço do é independente do número de pacotes na Fila, tem-se que Cov(nq,ns) = 0 e
V[n] = V[nq] + V[ns]. A variância do número de pacotes no Sistema de Fila é igual à soma da
variância do número de pacotes na Fila e a variância do número de pacotes no servidor
Tempo no Sistema x Tempo na Fila
• r = w + s, o tempo de permanência no Sistema de Fila é igual à soma do tempo de espera na Fila e do tempo de serviço, r, w e s são variáveis aleatórias
• E[r] = E[w] + E[s], o tempo médio no sistema é igual à soma do tempo médio de espera na Fila e do tempo médio de serviço
• se a taxa de serviço é independente do número de serviços na Fila, tem-se que Cov(w,s) = 0 e V[r] = V[w] + V[s], a variância do tempo de permanência no sistema é igual à soma das variâncias do tempo de espera na Fila e do tempo de serviço
Número no Sistema x Tempo no Sistema
• se pacotes não são perdidos devido à capacidade do sistema, o número médio de pacotes em um sistema está relacionado com seu tempo médio de resposta pela equação:
número médio de pacotes no Servidor = taxa de chegada × tempo médio de serviço
E[ns] = λ E[s] 2.1
• similarmente, o número médio de pacotes na Fila de um sistema está relacionado com seu tempo médio de espera pela equação:
número médio de pacotes no Servidor = taxa de chegada × tempo médio na Fila
E[nq] = λ E[w] 2.2
• da mesma forma, o número médio de pacotes no Sistema de Fila está relacionado com seu tempo médio no sistema pela equação:2.3
número médio de pacotes no Sistema = taxa de chegada × tempo médio no Sistema
E[n] = λ E[r] 2.4
A Teoria de Filas, desenvolvido por A. K. Erlang em 1909, é utilizada para descrever analiticamente Sistemas de Fila por meio de fórmulas matemáticas. Seu uso permite determinar várias medidas da efetividade destes sistemas, com a finalidade de indicar seu desempenho. Os resultados analíticos da Teoria das Filas aplicados em Sistemas de Fila M/M/1 serão mostrados na próxima seção.
Exemplo 2.4 Modelagem e Simulação em Ciência e Tecnologia
Modelagem e Simulação (M&S) são importantes na Ciência & Tecnologia & Inovação pois são capazes de representar sistemas reais por meio de modelos matemáticos, permitem representar sua dinâmica por meio de simulação, explorar o seu comportamento de uma forma articulada que muitas vezes não é possível, ou envolve riscos no mundo real.
Relação entre Simulação e Método Científico na base da pesquisa.
A M&S usa diversas áreas de Ciência da Computação, bem como são influenciadas pela Teoria de Sistemas, Engenharia de Sistemas e Engenharia de Software, dentre outras áreas do conhecimento. Esta base é tão diversa quanto a da Gestão e da Engenharia, reunindo elementos de arte, engenharia e ciência de uma forma complexa e única.
A M&S está calcada em modelos, que podem ser compostos de diferentes unidades vinculadas ao cumprimento de um objetivo específico. Por isso M&S também pode ser chamadas de soluções de modelagem. De modo mais geral, modelagem e simulação são metodologias chave para atividades de engenharia de sistemas, pois a representação de sistema em um modelo legível por computador permite que os engenheiros reproduzam o comportamento do sistema, uma maneira de apoiar as atividades de engenharia de sistemas em seu processo de tomada de decisão.
2.2 Revisão
2.3 Questões
1) Caracterize e diferencie Sistemas de Fila, Fila e Servidor. 2) Qual a razão para se considerar a tamanho da fila infinita?
3) Qual a razão para se considerar a tamanho da população infinita? 4) Qual o significado do valor λ? E do seu inverso?
5) Qual o significado do valor μ? E do seu inverso? 6) Como medir o valor de λ e μ?
7) Qual a importância da condição de estabilidade (λ < μ)? 8) Qual utilidade operacional da “Lei de Little”?
3 M
ODELO
A
NALÍTICO
DE
S
ISTEMAS
DE
F
ILA
Na Teoria das Filas, os pacotes entram e saem no sistema de modo aleatório. Diferentes pacotes chegam de modo imprevisível, ao acaso. O sistema os processa, um a um, demorando mais tempos com uns do que com outros. O tempo dedicado a cada pacotes também é imprevisível, é um tempo aleatório. Toda vez entra ou sai pacote do sistema ele muda de estado. Pode-se afirmar que o estado de sistema é sua quantidade de pacotes. Estes processos aparecem em inúmeras aplicações, como Sistemas de Filas, redes de comunicação de computadores e engenharia de desempenho. Nestas aplicações, os processos estocásticos têm estados discretos.
Seja n o número de pacotes de um Sistema de Fila Simples (SF), n ≥ 0. Quando n = 0, o sistema está vazio ou ocioso. Neste caso, a única mudança de estado possível é chegar um pacote, ou seja, n = 1. Quando o sistema tem k pacotes, pode chegar um novo pacote, n = k+1, ou pode sair um pacote, n = k-1.
Resumindo, um SF pacotes chegam, são processados e saem do sistema de um em um. Não chegam mais de um, nem são processados mais de um por vez. Seu estado é o seu número de pacotes, n. Seu estado pode aumentar para n+1 com a chegada de um pacote, ou mudar para n-1 com a saída de um pacote. Estes processos de chegada/saída de pacotes são denominados transições de estado.
Para representar os SFs, seus estados e suas transições, é usado o Modelo de Markov, uma maneira de representar sistemas e processos estocásticos do mundo real que codificam dependências e atingem um estado estacionário ao longo do tempo. Sistemas de Markov são modelados como uma sequência de estados e, a medida que o tempo passa, o sistema que se move entre os estados com uma probabilidade específica. Como os estados estão conectados, eles formam uma cadeia, essa forma de modelar o mundo é chamada de Cadeia de Markov.
Uma Cadeia de Markov é o tipo mais simples de Modelo de Markov, onde todos os estados são observáveis e as probabilidades convergem ao longo do tempo. Com isso, pode-se descreve o comportamento de um SF ao longo do tempo. Observe que a Cadeia de Markov tem um único estado, o valor de n, a cada ponto do tempo pode-se ter transições para n+1 ou n-1. Diz-se que Cadeias de Markov tem memória de curto prazo, dela pode-se saber a última transição (chegou ou partiu pacotes) ou a próxima transição (chegará ou partirá pacotes). Com isso, a trajetória até o estado atual não afeta a próxima transição, a única coisa que pode influenciar a próxima transição é o estado atual. Um outro fato observável é que, pode-se chegar ao estado atual de muitas maneiras diferentes, sempre combinado chegadas/partidas.
As Cadeias de Markov nos quais as transições são discretas e restritas aos estados vizinhos são Processos Nascimento Morte. Eles são utilizados para modelar sistemas nos quais os
pacotes chegam uma de cada vez e não em lotes. Por exemplo, o número de pacotes em uma Fila com um único Servidor e chegadas individuais (e não em lotes) pode ser representada como um Processo Nascimento Morte. Uma chegada na Fila (nascimento) faz com que o estado mude parar n+1 e uma partida da Fila (morte), faz com que o estado mude para n-1.
No contexto dos SFs, as chegadas/partidas são probabilidades condicionais e são denominadas probabilidades de transição. As probabilidades de transição descrevem a transição entre estados na cadeia como uma probabilidade condicional.
Para entender como a rotina de chegadas/partidas de pacotes evolui ao longo do tempo, há dois componentes a serem considerados:
• estado inicial (n = 0 e tempo = 0 por conveniência) • número de pacotes a serem processados
• estado final (resultados e tomada de decisão)
Os estados futuros são condicionados pelo estado da cadeia antes de cada transição. Uma característica das Cadeias de Markov regular é que, ao longo de um número grande o suficiente de iterações, todas as probabilidades de transição convergirão para um valor e permanecerão inalteradas. Isso significa que, após um número suficiente de iterações, a probabilidade de terminar em qualquer estado da cadeia é a mesma, independentemente de onde ela começou. Então, quando a cadeia atinge este ponto, podemos dizer que as probabilidades de transição atingiram um estado estacionário. O intervalo de tempo em que a cadeia atinge um estado estacionário depende das transições possíveis entre os estados e de suas probabilidades.
Apenas Cadeias de Markov regulares convergem com o tempo, permitindo obter resultados e tomar decisões a respeito dos sistemas por elas modelados. As demais, as Cadeias de Markov que não convergem com o tempo, não são de interesse da Engenharia pois não geram resultados aplicáveis.
Os Sistemas de Fila M/M/m podem ser modeladas através de Cadeias de Markov, e neste caso, considera-se que os tempos entre chegadas e atendimento são independentes, igualmente distribuídos (iid) e exponencialmente distribuídos.
3.1 Modelo de Sistemas de Fila M/M/1
O Sistema de Fila M/M/1 é o mais simples, constituído por uma Fila e um Servidor, em que os pacotes chegam de acordo com uma Cadeia de Markov e o tempo para atendê-las é distribuído exponencialmente, Figura 3.1. O modelo também assume capacidade infinita do sistema, os pacotes são provenientes de uma população infinita e a disciplina da fila é FIFO.
A Figura 3.1 apresenta o diagrama de transição de estado de um Processo Nascimento Morte em um Sistema de Fila M/M/1.
Figura 3.1 Diagrama de transição de estado de Processo Nascimento Morte.
Quando o sistema está no estado n, os novos processos chegam a taxa λn-1 e partem com taxa de serviço μn, n > 0. Assumindo que os intervalos entre chegadas e os tempos de serviço são exponencialmente distribuídos, a probabilidade de estado estacionário de um Processo Nascimento e Morte de estar no estado n é dada pelo Teorema 1.1.