Informações Principais
     Resumo
     Abstract
     Introdução
     Conclusão
     Download
  
  
  
 
Introdução
 
 
Acadêmico(a): Renato Correa Braz
Título: A Construção de um Simulador de Processos Concorrentes Utilizando DEVS Como Estrutura Formal de Modelagem
 
Introdução:
“O sistema operacional é uma camada de software colocada entre o hardware e os programas que executam tarefas para os usuários” (OLIVEIRA; CARISSIMI; TOSCANI, 2000, p. 1). Os programas de sistema, algumas vezes chamados de utilitários, são programas normais executados como processos fora do núcleo do sistema operacional. Segundo Oliveira, Carissimi e Toscani (2000, p. 14), na maioria das vezes, um processo é definido como um programa em execução. “O correto entendimento dos mecanismos presentes nos sistemas operacionais permite ao profissional de informática uma melhor compreensão de seu ambiente de trabalho, resultando no desenvolvimento de soluções com maior qualidade e eficiência” (SANTOS, 2005, p. 12). Um sistema operacional é demasiado complexo para ser examinado com métodos e ferramentas analíticas tradicionais. As técnicas de simulação e modelagem, por demonstrarem um certo estágio de êxito, podem ser aplicadas como ferramentas de análise. Segundo Prado (1999), a “simulação é a técnica de solução de um problema pela análise de um modelo que descreve o comportamento do sistema usando um computador digital”. A simulação pode ser aplicada na situação em que o modelo a ser estudado não possa ser modificado para ser examinado. A simulação permite estudar problemas específicos usando a experimentação virtual. Segundo Giozza et al (1986, p. 280), a modelagem de um sistema pode ser entendida como sendo uma maneira de simplificar suas características, descartando tudo aquilo considerado irrelevante no sistema. Segundo Soares (1992, p. 11), os “modelos de um sistema podem ser classificados como modelos de mudança discreta e mudança contínua”. Conforme Freitas Filho (2005, p. 18), “estes conceitos estão associados à idéia de sistemas que sofrem mudanças de forma discreta ou contínua ao longo do tempo. A caracterização de um modelo é dada em função da maneira com que ocorrem as mudanças nas variáveis de estado do sistema”. “Em um modelo para simulação contínua, o estado do sistema é representado por variáveis dependentes que mudam continuamente no tempo” (SOARES, 1992, p. 19). Segundo Freitas Filho (2005, p. 21), \\\'nestes modelos, as variáveis de estado podem mudar continuamente ao longo do tempo\\\'. A figura 1 mostra uma variável dependente em um modelo contínuo, com tempo contínuo. Fonte: Soares (1992, p. 13) \\\'Em simulação discreta, o estado do sistema só pode mudar nos tempos de eventos\\\' (SOARES, 1992, p. 15). Segundo Freitas Filho (2005, p. 19), \\\'nestes modelos, as variáveis de estado mantém-se inalteradas ao longo de intervalos de tempo e mudam seus valores somente em momentos bem definidos\\\'. A figura 2 mostra uma variável dependente em um modelo discreto.Fonte: Soares (1992, p. 12) Segundo Zeigler e Sarjoughian (2002, p. 1, tradução nossa), \\\'a estrutura de um modelo pode ser expressa em uma linguagem matemática chamada formalismo\\\'. Nesse contexto, o formalismo Discrete Event System Specification (DEVS) provê uma forma de especificar um objeto matemático chamado sistema. O ensino de programação concorrente é uma atividade que demanda uma certa capacidade de abstração por parte dos alunos. Nem sempre é fácil para o aluno, num primeiro momento, compreender as nuances apresentadas pelos problemas clássicos de sincronização de processos descritos na literatura. Desse contexto provém a necessidade de uma ferramenta didática através da qual o aluno possa interpretar o funcionamento dos processos concorrentes. Tanenbaum (2003, p. 98) caracteriza esta situação através do seguinte exemplo. Quase todos os processos alternam surtos de computação com requisições de E/S (de disco), conforme mostra a Figura 3. Em geral, a CPU executa indefinidamente e então é feita uma chamada ao sistema para ler de um arquivo ou escrever nele. Quando a chamada ao sistema termina, a CPU computa novamente até que ela requisite ou tenha de escrever mais dados e assim continua. Perceba que algumas atividades de E/S contam como computação. Por exemplo, quando a CPU copia bits para uma RAM de vídeo a fim de atualizar a tela, ela está computando não fazendo E/S, pois a CPU se encontra em uso. E/S, nesse sentido, é o que ocorre quando um processo entra no estado bloqueado esperando que um dispositivo externo termine o que está fazendo. O que é importante observar na Figura 3 é que alguns processos, como os da Figura 3(a), gastam a maior parte do tempo computando, enquanto outros, como os da Figura 3(b), passam a maior parte de seu tempo esperando E/S. Os primeiros são chamados orientados à CPU; os últimos são os orientados à E/S. Os processos orientados a CPU apresentam, em geral, longos surtos de uso da CPU e esporádicas esperas por E/S, já os processos orientados à E/S têm pequenos surtos de uso da CPU e esperas freqüentes por E/S. Note que o fator principal é o tamanho do surto de CPU, não o tamanho do surto de E/S. OS processos orientados à E/S, são assim chamados porque, entre uma requisição e outra por E/S, eles não realizam muita computação, não porque tenham requisições por E/S especialmente demoradas. O tempo para a leitura de um bloco de disco é sempre o mesmo, independentemente do quanto demore processar os dados que chegam depois. Convém observar que, à medida que as CPUs se tornam mais rápidas, os processos tendem a ficar mais orientados à E/S. Esse efeito ocorre porque as CPUs estão ficando muito mais rápidas que os discos. Como conseqüência, o escalonamento de processos orientados à E/S deverá ser um assunto mais importante no futuro. A idéia básica é que, se um processo orientado à E/S quiser executar, deve ser rapidamente dada a ele essa oportunidade, pois assim ele executará suas requisições de disco, mantendo o disco ocupado. (TANENBAUM, 2003, p. 98, grifo do autor). Fonte: Tanenbaum (2003, p. 98) Tanenbaum (2003,p.99) destaca que um outro problema importante está relacionado à questão de quando escalonar um processo. Um tópico fundamental, relacionado ao escalonamento, é o momento certo de tomar as decisões de escalonar. Claro que há uma variedade de situações nas quais o escalonamento é necessário. Primeiramente, quando se cria um novo processo, é necessário tomar uma decisão entre executar o processo pai ou o processo filho. Como ambos os processos estão no estado pronto, essa é uma decisão normal de escalonamento e pode levar a escolha de um ou de outro – isto é, o escalonador pode escolher legitimamente executar o pai ou o filho (Tanenbaum, 2003, p.99). Neste sentido, o presente projeto tem por objetivo desenvolver um simulador didático de processos concorrentes utilizando o formalismo DEVS como infra-estrutura (framework) de modelagem. A ferramenta de simulação permite ao aluno alterar os parâmetros de configuração (número de processos, tempo de acesso a periféricos, perfil de processo (IO/bound e CPU/bound), entre outros) e analisar o comportamento do sistema sob as condições configuradas. Esta análise permitirá ao aluno, por exemplo, avaliar o tempo de resposta de determinadas aplicações em função da carga do sistema, considerada a configuração aplicada ao modelo.