1000 resultados para Sistema operacional
Resumo:
O surgimento de novas aplicações que utilizam o protocolo HTTP nas suas transações e a crescente popularidade da World Wide Web (WWW) provocaram pesquisas pelo aumento do desempenho de servidores Web. Para tal, uma das alternativas propostas neste trabalho é utilizar um conjunto de servidores Web distribuídos que espalham a carga de requisições entre vários computadores, atuando como um só associado a uma estratégia de replicação de conteúdo. Um dos problemas centrais a ser resolvido em servidores Web distribuídos é como manter a consistência das réplicas de conteúdo entre os equipamentos envolvidos. Esta dissertação apresenta conceitos fundamentais envolvendo o tema replicação de conteúdo em servidores Web distribuídos. São mostrados detalhes sobre arquitetura de servidores Web distribuídos, manutenção da consistência em ambientes de servidores Web distribuídos, uso de replicação e formas de replicação. Além disso, são citados alguns trabalhos correlatos ao propósito de manter réplicas consistentes em ambientes de servidores Web distribuídos. Este trabalho tem por objetivo propor um modelo de manutenção da consistência de conteúdo em servidores Web distribuídos com características de transparência e autonomia. O modelo, denominado One Replication Protocol for Internet Servers (ORPIS), adota uma estratégia de propagação otimista porque não existe sincronismo no envio das atualizações para as réplicas. Este trabalho apresenta os principais componentes tecnológicos empregados na Web, além dos problemas causados pela escalabilidade e distribuição inerentes a esse ambiente. São descritas as principais técnicas de aumento de desempenho de servidores Web que atualmente vêm sendo utilizadas. O modelo ORPIS é descrito, sendo apresentados seus pressupostos, elencados seus componentes e detalhados os seus algoritmos de funcionamento. Este trabalho dá uma visão geral sobre a implementação e os testes realizados em alguns módulos do protótipo do modelo, caracterizando o ambiente de desenvolvimento do protótipo e detalhes da implementação. São enumerados os atributos e métodos das classes do protótipo e definidas as estruturas de dados utilizadas. Além disso, apresentam-se os resultados obtidos da avaliação funcional dos módulos implementados no protótipo. Um ponto a ser salientado é a compatibilidade do modelo ORPIS aos servidores Web existentes, sem a necessidade de modificação em suas configurações. O modelo ORPIS é baseado na filosofia de código aberto. Durante o desenvolvimento do protótipo, o uso de software de código aberto proporcionou um rápido acesso às ferramentas necessárias (sistema operacional, linguagens e gerenciador de banco de dados), com possibilidade de alteração nos códigos fonte como uma alternativa de customização.
Resumo:
Este trabalho apresenta um modelo de mecanismo para o controle de integridade de arquivos em sistemas operacionais, com a capacidade de bloquear o acesso à arquivos inválidos de forma a conter os danos causados por possíveis ataques. O modelo foi inicialmente formulado a partir do estudo detalhado do processo de controle de integridade, revelando diversos pontos críticos de segurança nele existentes, e da avaliação dos mecanismos atualmente implementados nos sistemas operacionais que oferecem, mesmo que indiretamente, algum tipo de garantia de integridade dos arquivos do sistema. Durante o seu desenvolvimento, a segurança do próprio modelo foi detalhadamente analisada de forma a enumerar os seus pontos críticos e possíveis soluções a serem empregadas, resultando na definição dos requisitos mínimos de segurança que devem ser encontrados nesse tipo de mecanismo. Em seguida, visando a validação do modelo especificado e decorrente disponibilização do mecanismo para uso prático e em estudos futuros, um protótipo foi implementado no sistema operacional GNU/Linux. Procurando confirmar a sua viabilidade, foram realizadas análises do impacto causado sobre o desempenho do sistema. Por fim, foi confirmada a importância e viabilidade do emprego do modelo apresentado como mecanismo adicional de segurança em sistemas operacionais. Além disso, foi colocado em evidência um campo de pesquisa ainda pouco explorado e portanto atrativo para a realização de novos estudos.
Resumo:
O presente trabalho explora a aplicação de técnicas de injeção de falhas, que simulam falhas transientes de hardware, para validar o mecanismo de detecção e de recuperação de erros, medir os tempos de indisponibilidade do banco de dados após a ocorrência de uma falha que tenha provocado um FUDVK. Adicionalmente, avalia e valida a ferramenta de injeção de falhas FIDe, utilizada nos experimentos, através de um conjunto significativo de testes de injeção de falhas no ambiente do SGBD. A plataforma experimental consiste de um computador Intel Pentium 550 MHz com 128 MB RAM, do sistema operacional Linux Conectiva kernel versão 2.2.13. O sistema alvo das injeções de falhas é o SGBD centralizado InterBase versão 4.0. As aplicações para a carga de trabalho foram escritas em VFULSWV SQL e executadas dentro de uma sessão chamada LVTO. Para a injeção de falhas foram utilizadas três técnicas distintas: 1) o comando NLOO do sistema operacional; 2) UHVHW geral no equipamento; 3) a ferramenta de injeção de falhas FIDe, desenvolvida no grupo de injeção de falhas do PPGC da UFRGS. Inicialmente são introduzidos e reforçados os conceitos básicos sobre o tema, que serão utilizados no decorrer do trabalho e são necessários para a compreensão deste estudo. Em seguida é apresentada a ferramenta de injeção de falhas Xception e são também analisados alguns experimentos que utilizam ferramentas de injeção de falhas em bancos de dados. Concluída a revisão bibliográfica é apresentada a ferramenta de injeção de falhas – o FIDe, o modelo de falhas adotado, a forma de abordagem, a plataforma de hardware e software, a metodologia e as técnicas utilizadas, a forma de condução dos experimentos realizados e os resultados obtidos com cada uma das técnicas. No total foram realizados 3625 testes de injeções de falhas. Com a primeira técnica foram realizadas 350 execuções, com a segunda técnica foram realizadas 75 execuções e com a terceira técnica 3200 execuções, em 80 testes diferentes. O modelo de falhas proposto para este trabalho refere-se a falhas de crash baseadas em corrupção de memória e registradores, parada de CPU, aborto de transações ou reset geral. Os experimentos foram divididos em três técnicas distintas, visando a maior cobertura possível de erros, e apresentam resultados bastante diferenciados. Os experimentos com o comando NLOO praticamente não afetaram o ambiente do banco de dados. Pequeno número de injeção de falhas com o FIDe afetaram significativamente a dependabilidade do SGBD e os experimentos com a técnica de UHVHW geral foram os que mais comprometeram a dependabilidade do SGBD.
Resumo:
A Automação Residencial é uma área em crescimento no mercado mundial. À medida que os avanços tecnológicos são incorporados aos dispositivos pertencentes ao ambiente residencial, e que estes se tornam mais disseminados, surgem necessidades para fabricantes e usuários. Para os fabricantes, é desejável maior capacidade de conexão e intercâmbio de dados entre os dispositivos e, conseqüentemente, padronização. Para os usuários, é desejável maior facilidade na utilização dos dispositivos e, principalmente, na configuração dos mesmos em ambientes dinâmicos, de forma a não requerer interação do usuário para a conexão e desconexão, característica das redes espontâneas. Grandes empresas têm unido esforços no desenvolvimento de novos padrões e uma das tendências observadas é o isolamento destas novas necessidades numa camada entre a aplicação e o sistema operacional, denominada middleware. Este trabalho compara duas tecnologias que se enquadram nos critérios acima: Jini, da Sun Microsystems e Universal Plug and Play (UPnP), de um consórcio de empresas liderado pela Microsoft. O estudo é feito através do desenvolvimento de um protótipo, da definição de um conjunto de métricas qualitativas e quantitativas, e da implementação de um conjunto de workloads para a análise comparativa entre elas. Os resultados obtidos são apresentados e analisados, contribuindo com subsídios para os interessados em conhecer melhor ou optar por uma delas. Por fim, são registradas algumas necessidades observadas que poderão servir como base para trabalhos futuros.
Resumo:
Numerosas pesquisas estão introduzindo o conceito de grupo em padrões abertos para programação distribuída. Nestas, o suporte a grupo de objetos por meio de middlewares, apresentam diferentes abordagens de interligação com a aplicação. Segundo princípios defendidos na tese de Felber, essas abordagens vão ao encontro do objetivo de facilitar o desenvolvimento e proporcionar confiabilidade e desempenho. Neste contexto, localizou-se três enfoques básicos para a interligação com a aplicação, denominados integração, serviço, e interceptação, que utilizam a captura de mensagens para obtenção de informações ou como meio para adicionar novas funcionalidades às aplicações. A utilização dessas informações pode auxiliar no ajuste de parâmetros funcionais de serviços relacionados, na escolha de mecanismos, influindo em aspectos como, desempenho e segurança. Ao longo do estudo dessas abordagens, sentiu-se a necessidade de estudar detalhes e testar aspectos de implementação, suas premissas de uso e as conseqüências advindas da incorporação de seus mecanismos junto à aplicação. Este trabalho visa apresentar uma análise do comportamento das referidas abordagens por meio da implementação de protótipos, possibilitando assim, investigar problemas relacionados ao emprego da técnica e suas conseqüências quando integradas à aplicação. Os objetivos específicos reúnem a busca de informações qualitativas, tais como: modularidade, transparência, facilidade de uso e portabilidade; e informações quantitativas, fundamentalmente traduzidas pelo grau de interferência no desempenho da aplicação. O desenvolvimento dos protótipos teve como início a busca por um ambiente que ofereceria suporte as condições necessárias para a implementação das diferentes abordagens. Percebeu-se que definir os mecanismos diretamente sobre uma linguagem de programação, como C ou C++, não era viável. As versões padrões dessas linguagens não oferecem mecanismos capazes de suportar algumas características de implementação como, por exemplo, a captura de mensagens na abordagem de interceptação. A possibilidade é introduzida apenas por extensões dessas linguagens. Assim, a investigação de um ambiente de implementação voltou-se para mecanismos disponíveis em sistemas operacionais. A opção pela utilização do Linux visou atender alguns requisitos importantes para o desenvolvimento dos protótipos tais como: facilidade de instalação, boa documentação e código aberto. Este último é um ponto essencial, pois a construção de parte dos protótipos explora a programação em nível do sistema operacional. A linguagem de programação C foi escolhida como base para a implementação, já que as diferentes abordagens exploram tanto o nível do kernel como o nível do usuário, e é compatível com o Linux. A etapa de desenvolvimento dos protótipos possibilitou a coleta de informações sobre aspectos qualitativos. As demais informações que fazem parte do perfil levantado por este trabalho sobre as abordagens, foram obtidas através da utilização dos protótipos em experimentos com duas aplicações distribuídas denominadas de “Ping-Pong” e “Escolha de Líderes”, que têm como característica geral à troca de mensagens, utilizando comunicação através de sockets. A realização de medidas em múltiplas execuções, avaliadas após o tratamento estatístico necessário, permitiu definir um perfil das diferentes abordagens.
Resumo:
Devido a sua baixa latência de banda, os clusters equipados com o adaptador SCI são uma alternativa para sistemas de tempo real distribuídos. Esse trabalho apresenta o projeto e implementação de uma plataforma de comunicação de tempo real sobre clusters SCI. O hardware padrão do SCI não se mostra adequado para a transmissão de tráfego de tempo real devido ao problema da contenção de acesso ao meio que causa inversão de prioridade. Por isso uma disciplina de acesso ao meio é implementada como parte da plataforma. Através da arquitetura implementada é possível o estabelecimento de canais de comunicação com garantia de banda. Assim, aplicações multimídias, por exemplo, podem trocar com taxa constante de conunicação. Cada mensagem é enviada somente uma vez. Assim, mensagens som a semântica de eventos podem ser enviadas. Além disso, a ordem e o tamanho das mensagens são garantidos. Além do tráfego com largura de banda garantida, a plataforma possibilita a troca de pacotes IP entre diferentes máquinas do cluster. Esses pacotes são inseridos no campo de dados dos pacotes próprios da plataforma e após são enviados através do uso de pacotes IP. Além disso, essa funcionalidade da plataforma permite também a execução de bibliotecas de comunicação baseadas em TCP/IP como o MPI sobre o cluster SCI. A plataforma de comunicação é implementada como modulos do sistema operacional Linux com a execução de tempo real RTAI. A valiação da plataforma mostrou que mesmo em cenários com muita comunicação entre todos os nodos correndo, a largura de banda reservada para cada canal foi mantida.
Resumo:
presente trabalho objetiva construir um Modelo Exploratório de desenvolvimento de tecnologia da informação, aplicável no Brasil, tendo como referência as formas de organização do trabalho e da produção das comunidades Linux. O Modelo deve ser aplicado em ambiente Internet, ou em outras redes de telecomunicação. Por essa razão, utiliza métodos e técnicas de aprendizado à distância e e-Iearning. A construção do Modelo apoia-se, como alicerce teórico fundamental, no conceito de convivialidade de Illich (1976), no entendimento de Inose e Pierce (1984) sobre comunidades de interesse e democratização da produção de software, nos estudos de Malone (1997, 1998) referentes a modelos de organização em rede, nos estudos de Weber (2000) sobre comunidades de interesse online, na metodologia de capacitação "Pensamento Digital" de Joia (1999-1, 1999-2) e na estratégia pedagógico-metodológica do Australian National Training Authority (T AFE/SA). No entanto, as pesquisas de Matesco (2000, 2001) tomaram exeqüível a idéia da construção do Modelo, tendo que vista que o Modelo Exploratório proposto aplica-se, preferencialmente, a países, regiões, empresas ou organizações dependentes tecnologicamente de seus parceiros negociais e com escassez de recursos para aplicar em pesquisa e desenvolvimento. O caminho metodológico para a construção do Modelo inicia-se com uma sucinta abordagem sobre o sistema operacional Linux, a descrição das formas de organização das comunidades Linux e a identificação das formas de organização do trabalho e da produção no Fordismo-Taylorismo e no pós-Fordismo. Situa o funcionamento das comunidades Linux em relação a essas formas de organização. Descreve o processo de formação do conhecimento no aprendizado à distância e no elearning. Aborda a experiência de outros países com o Linux e com as comunidades Linux. Principalmente, o sucesso obtido pelos países nórdicos em absorção de tecnologia. A seguir, fundamentando-se em duas pesquisas de Matesco (2000,2001), analisa a dependência tecnológica do Brasil e propõe o Modelo Exploratório, cujo objetivo é, prioritariamente, colaborar para a redução dessa dependência, por meio de um processo de formação de conhecimento, baseado no aprendizado à distância e e-Iearning do Linux e na propagação de comunidades Linux, empregando-se o modelo de organização em rede.
Resumo:
A recuperação por retorno baseada em checkpointing é largamente usada como técnica de tolerância a falhas. O modelo complexo de sistemas distribuídos tem motivado o desenvolvimento de diversos algoritmos na tentativa de encontrar soluções mais simples e eficientes. Os processos que formam o sistema distribuído podem coordenar suas operações para garantir que o conjunto de checkpoints locais componha um estado global consistente (linha de recuperação). A partir desse estado, no caso de ocorrência de falhas, o sistema pode ser recuperado e a computação retomada a partir de um momento anterior ao da manifestação da falha, evitando o retrocesso para o estado inicial da computação e prevenindo a ocorrência de prejuízos com a perda de todo processamento até então realizado. No Grupo de Tolerância a Falhas da UFRGS foi proposto recentemente um algoritmo que é voltado para aplicações que executam em sistemas distribuídos assíncronos que se comunicam exclusivamente pela troca de mensagens. Ele opera com salvamento coordenado de checkpoints (não bloqueando as aplicações) e prevê o tratamento de mensagens órfãs e perdidas. Os mecanismos do algoritmo sugerem que nenhuma alteração deveria ser realizada no código das aplicações, criando a possibilidade de implementação transparente sob o ponto de vista dos usuários e dos programadores das aplicações. Como o algoritmo não requer o bloqueio das aplicações, a sobrecarga imposta pelos mecanismos à execução livre de falhas é pequena. Além disso, o processo de recuperação tende a ser efetuado rapidamente, uma vez que é garantida a existência de uma linha de recuperação consistente, facilmente identificada Este trabalho apresenta as decisões de projeto, a implementação, os resultados e a avaliação de desempenho desse algoritmo. A avaliação das alternativas de implementação resultou na decisão de uma implementação então realizada diretamente sobre o sistema operacional Linux, sem recorrer a protocolos auxiliares para garantir a execução dos serviços e sem a necessidade de adaptações no código das aplicações nem no código do sistema operacional. Adicionalmente, os resultados comprovaram a expectativa inicial de que o algoritmo causaria pouca sobrecarga no sistema (menos de 2%), embora ele ainda apresente alta dependência do tamanho dos checkpoints salvos.
Resumo:
Este trabalho tem como objetivo o levantamento e análise de fatores intervenientes na capacidade de processamento de veículos em cabines de praças de pedágio com o recolhimento manual de tarifas. Buscando o entendimento de como estes fatores interferem nos tempos de atendimento nas cabines foi realizada uma análise estatística e posterior modelagem, que utilizou redes neurais artificiais. Redes neurais artificiais são úteis no entendimento de problemas com alto grau de complexidade, que agregam diversas variáveis de entrada com relações não-lineares entre si. As variáveis de entrada escolhidas para a modelagem foram forma de pagamento, intensidade de fluxo, valor das tarifas e classes de veículos. A variável de saída foi o tempo de atendimento nas cabines de cobrança de pedágios. Foram obtidos três modelos que buscaram refletir a variação dos tempos de atendimento para um mesmo conjunto de dados de entrada: Modelo de Tempos Mínimos de Atendimento; Modelo de 85° Percentil de Tempos de Atendimento, e; Modelo de Tempos Máximos de Atendimento. As análises de sensibilidade dos modelos indicaram que tempos de atendimento são fortemente influenciados pelo fluxo de veículos nas praças. Quanto mais intenso o fluxo de veículos, tempos mínimos de atendimento tendem a sofrer leve aumento, indicando pequena perda de rendimento do processo. Perda de rendimento pode ser resultado de (i) necessidade de digitação das placas de licença dos veículos no sistema operacional das praças-dificuldade de visualização das mesmas em situação de filas, e (ii) desgaste físico dos arrecadadores. O desgaste físico dos arrecadadores também se apresenta como provável causa para o aumento de tempos mínimos de atendimento para fluxos altos. Quanto mais intenso o fluxo de veículos, menores são os tempos máximos de atendimento. Quanto maior o fluxo de veículos nas praças, as modelagens indicam uma maior estabilidade do sistema com relação ao processamento de veículos.
Resumo:
Este trabalho apresenta um protótipo de uma máquina de workflow, de uso geral, implementado em plataforma de software livre. O protótipo utiliza um servidor web com PHP, em sistema operacional Linux, alguns programas desenvolvidos em C e o banco de dados MySql. O projeto CEMT demanda o uso da tecnologia de workflow, com o objetivo de controlar a execução de cursos a distância. Antes de ser iniciado o desenvolvimento do protótipo, foi feito um estudo sobre algumas máquinas de workflow existentes, com o objetivo de encontrar alguma que tivesse licença livre e pudesse ser utilizada no projeto CEMT, ou colher subsídios para o desenvolvimento de uma máquina de workflow própria. Foram testadas duas máquinas de workflow de licença livre (Openflow e OFBIZ), uma máquina com cópia de demonstração (Reactor) e foram consultadas as documentações fornecidas pelos fabricantes. Além disso foi consultada também a documentação do Domino Workflow, que não disponibilizou cópia de avaliação e cuja licença não é livre. Um dos requisitos do protótipo é a compatibilidade com os padrões de interface recomendados pela WfMC. Esses padrões permitem a interoperabilidade entre softwares de workflow. O primeiro benefício da adoção desses padrões é a interação com o editor gráfico de workflow AW (Amaya Workflow), desenvolvido no Instituto de Informática da UFRGS. Este editor gera definições de processos de workflow no formato da linguagem XPDL (XML Process Definition Language), que alimentam a máquina de workflow. O esquema XPDL foi traduzido para um esquema de banco de dados relacional e foi desenvolvido um compilador que lê um arquivo no formato XPDL e gera comandos SQL de inserção das informações desse arquivo no banco de dados. Foi desenvolvida uma interface web para demonstrar o funcionamento do protótipo. A API definida na Interface 2 da WfMC foi implementada parcialmente. Essa API permite o desenvolvimento independente de outras interfaces de usuário. Foram propostas algumas extensões à Interface 1 e modificações na definição de estados recomendada pela Interface 2 da WfMC. Com isso foi possível aumentar o controle sobre a execução das instâncias de workflow. Foram incluídas as restrições de data e possibilidade de bloqueio na execução de instâncias de atividades. Outras extensões possibilitam um serviço de notificações e atividades em grupo e oferecem novas possibilidades de alocação de atividades. O funcionamento básico do protótipo é descrito e inclui as funcionalidades de carga da definição de processo, instanciação de processo, visualização da lista de trabalho e execução das atividades, entre outras.
Resumo:
A validação de projetos de sistemas eletrônicos pode ser feita de diversas maneiras, como tem sido mostrado pelas pesquisas em síntese automática e verificação formal. Porém, a simulação ainda é o método mais utilizado. O projeto de um sistema digital típico pode ser desenvolvido em diversos níveis de abstração, como os níveis algorítmico, lógico ou analógico. Assim, a simulação também deve ser executada em todos esses níveis. A simulação apresenta, contudo, o inconveniente de não conseguir conciliar uma alta acuracidade de resultados com um baixo tempo de simulação. Quanto mais detalhada é a descrição do circuito, maior é o tempo necessário para simulá-lo. O inverso também é verdadeiro, ou seja, quanto menor for a acuracidade exigida, menor será o tempo dispendido. A simulação multinível tenta conciliar eficiêencia e acuracidade na simulação de circuitos digitais, propondo que partes do circuito sejam descritas em diferentes níveis de abstração. Com isso, somente as partes mais críticas do sistema são descritas em detalhes e a velocidade da simulação aumenta. Contudo, essa abordagem não é suficiente para oferecer um grande aumento na velocidade de simulação de grandes circuitos. Assim, surge como alternativa a aplicação de técnicas de processamento distribuído à simulação multinível. Os aspectos que envolvem a combinação dessas duas técnicas são abordados nesse trabalho. Como plataforma para os estudos realizados, optou-se por usar duas ferramentas desenvolvidas nessa Universidade: os simuladores do Sistema AMPLO e o Sistema Operacional HetNOS. São estudadas técnicas de sincronização em sistemas distribuídos, fundamentais para o desenvolvimento dos simuladores e, finalmente, são propostas alternativas para a distribuição dos simuladores. É realizada, ainda, uma análise comparativa entre as versões propostas.
Resumo:
Os problemas relativos ao sistema bancário até bem pouco tempo não eram considerados pelos economistas pelo fato de terem as atividades governamentais poder de controlá-lo Uma vez que as autoridades pudessem intervir qualquer instante no sistema de modo corrigir qualquer de suas tendências, pensavam os estudiosos dos problemas econômicos que deste modo sendo sistema bancário controlado pelo governo qualquer esforço de explicação teórica de seu funcionamento seria infrutífero. Daí porque por muito tempo pouco ou quase nada se fez neste campo. Estudou-se os sistemas bancários como simples peça de um complexo chamado Sistema Monetário, sem preocupação de se formular uma teoria a respeito do sistema operacional dos bancos, estrutura concorrencial, composição dos custos etc. Por este motivo torna-se difícil preparar um estudo, neste campo, rico em teoria. A escassez de teorias bem como dificuldade de acesso as mesmas por serem mais ou menos recentes os estudos feitos nos países adiantados ainda não são muito divulgados fora dos mesmos alem da imaturidade que possuo, impediram-me de elaborar um estudo bem mais safisfiçado como era de se esperar. Por outro lado as limitações de tempo financeiras de informações foram responsáveis pela falta de profundidade de alguns pontos.
Resumo:
Clusters de computadores são geralmente utilizados para se obter alto desempenho na execução de aplicações paralelas. Sua utilização tem aumentado significativamente ao longo dos anos e resulta hoje em uma presença de quase 60% entre as 500 máquinas mais rápidas do mundo. Embora a utilização de clusters seja bastante difundida, a tarefa de monitoramento de recursos dessas máquinas é considerada complexa. Essa complexidade advém do fato de existirem diferentes configurações de software e hardware que podem ser caracterizadas como cluster. Diferentes configurações acabam por fazer com que o administrador de um cluster necessite de mais de uma ferramenta de monitoramento para conseguir obter informações suficientes para uma tomada de decisão acerca de eventuais problemas que possam estar acontecendo no seu cluster. Outra situação que demonstra a complexidade da tarefa de monitoramento acontece quando o desenvolvedor de aplicações paralelas necessita de informações relativas ao ambiente de execução da sua aplicação para entender melhor o seu comportamento. A execução de aplicações paralelas em ambientes multi-cluster e grid juntamente com a necessidade de informações externas à aplicação é outra situação que necessita da tarefa de monitoramento. Em todas essas situações, verifica-se a existência de múltiplas fontes de dados independentes e que podem ter informações relacionadas ou complementares. O objetivo deste trabalho é propor um modelo de integração de dados que pode se adaptar a diferentes fontes de informação e gerar como resultado informações integradas que sejam passíveis de uma visualização conjunta por alguma ferramenta. Esse modelo é baseado na depuração offline de aplicações paralelas e é dividido em duas etapas: a coleta de dados e uma posterior integração das informações. Um protótipo baseado nesse modelo de integração é descrito neste trabalho Esse protótipo utiliza como fontes de informação as ferramentas de monitoramento de cluster Ganglia e Performance Co-Pilot, bibliotecas de rastreamento de aplicações DECK e MPI e uma instrumentação do Sistema operacional Linux para registrar as trocas de contexto de um conjunto de processos. Pajé é a ferramenta escolhida para a visualização integrada das informações. Os resultados do processo de integração de dados pelo protótipo apresentado neste trabalho são caracterizados em três tipos: depuração de aplicações DECK, depuração de aplicações MPI e monitoramento de cluster. Ao final do texto, são delineadas algumas conclusões e contribuições desse trabalho, assim como algumas sugestões de trabalhos futuros.
Resumo:
The work described in this thesis aims to support the distributed design of integrated systems and considers specifically the need for collaborative interaction among designers. Particular emphasis was given to issues which were only marginally considered in previous approaches, such as the abstraction of the distribution of design automation resources over the network, the possibility of both synchronous and asynchronous interaction among designers and the support for extensible design data models. Such issues demand a rather complex software infrastructure, as possible solutions must encompass a wide range of software modules: from user interfaces to middleware to databases. To build such structure, several engineering techniques were employed and some original solutions were devised. The core of the proposed solution is based in the joint application of two homonymic technologies: CAD Frameworks and object-oriented frameworks. The former concept was coined in the late 80's within the electronic design automation community and comprehends a layered software environment which aims to support CAD tool developers, CAD administrators/integrators and designers. The latter, developed during the last decade by the software engineering community, is a software architecture model to build extensible and reusable object-oriented software subsystems. In this work, we proposed to create an object-oriented framework which includes extensible sets of design data primitives and design tool building blocks. Such object-oriented framework is included within a CAD Framework, where it plays important roles on typical CAD Framework services such as design data representation and management, versioning, user interfaces, design management and tool integration. The implemented CAD Framework - named Cave2 - followed the classical layered architecture presented by Barnes, Harrison, Newton and Spickelmier, but the possibilities granted by the use of the object-oriented framework foundations allowed a series of improvements which were not available in previous approaches: - object-oriented frameworks are extensible by design, thus this should be also true regarding the implemented sets of design data primitives and design tool building blocks. This means that both the design representation model and the software modules dealing with it can be upgraded or adapted to a particular design methodology, and that such extensions and adaptations will still inherit the architectural and functional aspects implemented in the object-oriented framework foundation; - the design semantics and the design visualization are both part of the object-oriented framework, but in clearly separated models. This allows for different visualization strategies for a given design data set, which gives collaborating parties the flexibility to choose individual visualization settings; - the control of the consistency between semantics and visualization - a particularly important issue in a design environment with multiple views of a single design - is also included in the foundations of the object-oriented framework. Such mechanism is generic enough to be also used by further extensions of the design data model, as it is based on the inversion of control between view and semantics. The view receives the user input and propagates such event to the semantic model, which evaluates if a state change is possible. If positive, it triggers the change of state of both semantics and view. Our approach took advantage of such inversion of control and included an layer between semantics and view to take into account the possibility of multi-view consistency; - to optimize the consistency control mechanism between views and semantics, we propose an event-based approach that captures each discrete interaction of a designer with his/her respective design views. The information about each interaction is encapsulated inside an event object, which may be propagated to the design semantics - and thus to other possible views - according to the consistency policy which is being used. Furthermore, the use of event pools allows for a late synchronization between view and semantics in case of unavailability of a network connection between them; - the use of proxy objects raised significantly the abstraction of the integration of design automation resources, as either remote or local tools and services are accessed through method calls in a local object. The connection to remote tools and services using a look-up protocol also abstracted completely the network location of such resources, allowing for resource addition and removal during runtime; - the implemented CAD Framework is completely based on Java technology, so it relies on the Java Virtual Machine as the layer which grants the independence between the CAD Framework and the operating system. All such improvements contributed to a higher abstraction on the distribution of design automation resources and also introduced a new paradigm for the remote interaction between designers. The resulting CAD Framework is able to support fine-grained collaboration based on events, so every single design update performed by a designer can be propagated to the rest of the design team regardless of their location in the distributed environment. This can increase the group awareness and allow a richer transfer of experiences among them, improving significantly the collaboration potential when compared to previously proposed file-based or record-based approaches. Three different case studies were conducted to validate the proposed approach, each one focusing one a subset of the contributions of this thesis. The first one uses the proxy-based resource distribution architecture to implement a prototyping platform using reconfigurable hardware modules. The second one extends the foundations of the implemented object-oriented framework to support interface-based design. Such extensions - design representation primitives and tool blocks - are used to implement a design entry tool named IBlaDe, which allows the collaborative creation of functional and structural models of integrated systems. The third case study regards the possibility of integration of multimedia metadata to the design data model. Such possibility is explored in the frame of an online educational and training platform.
Resumo:
A execução de testes é um passo essencial na adoção de novos protocolos de comunicação e sistemas distribuídos. A forma com que estes se comportam na presença de falhas, tão comuns em ambientes geograficamente distribuídos, deve ser conhecida e considerada. Testes sob condições de falha devem ser realizados e as implementações devem trabalhar dentro de sua especificação nestas condições, garantindo explicitamente o funcionamento dos seus mecanismos de detecção e recuperação de erros. Para a realização de tais testes, uma técnica poderosa é a injeção de falhas. Ferramentas de injeção de falhas permitem ao projetista ou engenheiro de testes medir a eficiência dos mecanismos de um sistema antes que o mesmo seja colocado em operação efetiva. Este trabalho apresenta o projeto, desenvolvimento e teste do injetor de falhas FIRMAMENT. Esta ferramenta executa, dentro do núcleo do sistema operacional, microprogramas, ou faultlets, sobre cada mensagem processada para a emulação de situações de falha de comunicação, utilizando uma abordagem de scripts. A ferramenta é implementada como um módulo de núcleo do sistema operacional Linux, tendo acesso total aos fluxos de entrada e saída de pacotes de forma limpa e não intrusiva, permitindo o teste de sistemas baseados nos protocolos IPv4 e IPv6. Seu desempenho é significativo, já que a ferramenta evita que os mecanismos de injeção de falhas sejam invocados nos fluxos que não sejam de interesse aos testes, bem como dispensa a cópia de dados dos pacotes de comunicação a serem inspecionados e manipulados. A aplicabilidade da ferramenta, dada pela sua facilidade de integração a um ambiente de produção, é conseqüência de sua disponibilidade como um módulo de núcleo, podendo ser carregada como um plugin em um núcleo não modificado. As instruções por FIRMAMENT suportadas lhe dão alto poder de expressão dos cenários de falhas. Estas instruções permitem a inspeção e seleção de mensagens de forma determinística ou estatística. Além disso, fornecem diversas ações a serem realizadas sobre os pacotes de comunicação e sobre as variáveis internas do injetor, fazendo-o imitar o comportamento de falhas reais, como descarte e duplicação de mensagens, atraso na sua entrega e modificação de seu conteúdo. Estas características tornam a ferramenta apropriada para a realização de experimentos sobre protocolos e sistemas distribuídos.