DANIEL CÂNDIDO DE OLIVEIRA IMPLEMENTAÇÃO DE APLICAÇÕES PARALELAS COM O PACOTE JPVM

Tamanho: px
Começar a partir da página:

Download "DANIEL CÂNDIDO DE OLIVEIRA IMPLEMENTAÇÃO DE APLICAÇÕES PARALELAS COM O PACOTE JPVM"

Transcrição

1 DANIEL CÂNDIDO DE OLIVEIRA IMPLEMENTAÇÃO DE APLICAÇÕES PARALELAS COM O PACOTE JPVM Palmas 2005

2 DANIEL CÂNDIDO DE OLIVEIRA IMPLEMENTAÇÃO DE APLICAÇÕES PARALELAS COM O PACOTE JPVM Trabalho apresentado ao curso de Sistemas de Informação do Centro Universitário Luterano de Palmas como requisito parcial da disciplina de Prática de Sistemas de Informação II, orientado pela professora Madianita Bogo Palmas 2005

3 DANIEL CÂNDIDO DE OLIVEIRA IMPLEMENTAÇÃO DE APLICAÇÕES PARALELAS COM O PACOTE JPVM Aprovado em Julho de Trabalho apresentado ao curso de Sistemas de Informação do Centro Universitário Luterano de Palmas como requisito parcial da disciplina de Prática de Sistemas de Informação II, orientado pela professora Madianita Bogo BANCA EXAMINADORA Profª. M. Sc. Madianita Bogo Centro Universitário Luterano de Palmas Profª. M. Sc. Parcilene Fernandes Brito Centro Universitário Luterano de Palmas Prof. Ricardo Marx Costa Soares de Jesus Centro Universitário Luterano de Palmas Palmas 2005

4 À Sabrina do Valle, Princesa do Gelo, Soberana do meu coração.

5 APOSTASIA O que outrora foi santo, puro, verteu-se em profanação. O santo cálice agora é opróbrio, escárnio. Profunda apostasia! O mundo gira sem sentido, Cambaleia como homem de coração alegre pelo vinho: Vinho espremido pela mão da ira; ferve no cálice. O que já foi doce ao paladar, rasga o estômago em puro fel: Vinagre por água; Espinho por coroa... Mundo de infinitas contradições, paradoxos sem fim. Aqueles que tomamos por sábio não passam de hipócritas: Nada fazem se não enganar com belas palavras. Pensamos compreender a razão e, acreditando nisso, Nos declaramos sábios, contudo somos tolos. Quem dera conhecer uma mísera ponta de verdade: Seria tomado por príncipe dos tolos. Nossa vida esvaece como o vapor: Desprezíveis aparições efêmeras. Quem dera ser mais que isso: Viveria o limiar da imortalidade. Seres providos de racionalidade: Em suas mente controlam o mundo. Contudo, se quer controlam a própria vida, Nem ao menos o próximo segundo. Feliz o que consegue viver o presente: Concentrar inteligência e vontade no agora. Apostasia! Declaramos a apostasia. Infames seres que somos: Na incapacidade de viver o presente, Preferimos o passado e futuro. Na incapacidade de viver o certo, Se é que o conhecemos, Criamos nossas próprias leis. Mundo apóstata! Como é mais fácil enganar-se a si mesmo Criando novas regras. Sigamos em frente: Embriaguemo-nos e fujamos dessa realidade, Pois somos COVARDES para vivê-la! Daniel Cândido de Oliveira Por que, pois, se desvia este povo de Jerusalém com uma apostasia tão contínua? Persiste no engano, não quer voltar [Jeremias 8:5].

6 AGRADECIMENTOS Agradeço, primeiramente a Deus, ao qual eu sirvo e amo, por todo o seu amor e cuidado para comigo. Um Deus onipresente, onipotente e onisciente que, apesar de tanta glória, me amou a ponto de dar seu filho pra morrer em meu lugar. Que apesar de todas as minhas falhas continua fiel a mim. A Ele seja toda a honra para sempre, amém. Agradeço à minha família, cada um deles em particular, que me entenderam e me apoiaram, tornando-se fator fundamental para conclusão desse trabalho. Agradeço a professora Mádia que tanto me apoiou e com esmero me orientou nesse trabalho, tornou possível a realização do mesmo. Agradeço a cada um de meus amigos, fiéis companheiros, que estiveram presentes, mesmo que virtualmente, durante a realização desse trabalho. É impossível nesse momento citar os nomes de cada um, pois com certeza seria injusto com muitos deles. Contudo, cada um conhece o valor que tem pra mim e o carinho que os dedico. Muitas foram as pessoas que me ajudaram e se fizeram presentes durante a realização desse trabalho. Contudo, findo por aqui meus agradecimentos, pois cada um deles, mesmo sem citá-los aqui, bem sabe o quanto é importante pra mim. Agradeço a você que neste momento me prestigia ao ler este trabalho. Grato!

7 iv SUMÁRIO 1. Introdução Revisão de literatura Processamento Paralelo Clusters de Computadores Cluster de alta performance de computação Cluster de alta disponibilidade Clusters X Supercomputadores PVM Características Componentes e Funcionamento Básico Protocolos de Transporte TCP UDP JAVA & JPVM Portabilidade Concorrência JPVM Componentes e Funcionamento Interface de Programação Métodos para Criação e Gerência de Tarefas Métodos para Troca de Mensagens Métodos de configuração e controle Exemplo de Implementação Material e métodos Resultados e discussão Arquitetura Desenvolvida Configuração Utilização do JPVM Programas Paralelos Implementados Programa WaveLet Descrição do Funcionamento Descrição da Implementação - Paralela Resultados dos Testes Programa para Binarização Descrição Implementação Resultados dos Testes Considerações sobre o JPVM CONCLUSÃO REFERÊNCIAS BIBLIOGRÁFICAS...72 ANEXOS...74 ANEXO I...75 ANEXO II...77

8 v LISTA DE FIGURAS Figura 1: memória compartilhada...16 Figura 2: memória distribuída Figura 3: esquema de funcionamento da JVM (LEMAY, 1999)...31 Figura 4: Processos com única thread e com multithreads (SILBERSCHATZ, 2004) Figura 5: Esquema de Comunicação JPVM, retirada de (FERRARI, 1998)...36 Figura 6: Estrutura de retorno do método pmv_config...41 Figura 7: Estrutura de retorno do método pmv_config Figura 8: Registro do processo atual na máquina virtual paralela Figura 9: obtenção do identificador do processo atual Task Id Figura 10: criação de seis instâncias do processo vetor_other. java Figura 11: Recebimento e tratamento de mensagem Figura 12: Impressão do resultado final do cálculo e finalização da aplicação dentro do JPVM Figura 13: registro do processo no JPVM e solicitação do TaskId do processo pai Figura 14: preenchimento do vetor e realização de alguns cálculos sobre o mesmo...46 Figura 15: Criação do buffer, empacotamento e envio de mensagem Figura 16: Arquitetura do cluster desenvolvido Figura 17: Conteúdo do arquivo hosts Figura 18: Conteúdo adicionado ao arquivo /etc/fstab Figura 19: aplicação de transformação Wavelet Figura 20: Esquema de funcionamento seqüencial do algoritmo Wavelet Figura 21: Esquema de paralelização para o algoritmo Wavelet Figura 22: Criação das tarefas a serem executadas Figura 23: WaveClient esperando mensagem Figura 24: Envio de mensagens para as instâncias de WaveClient Figura 25: aplicação de máscara de Binarização Figura 26: Funcionamento do algoritmo de binarização seqüencial Figura 27: Esquema de paralelização para o algoritmo de Binarização Figura 28: Criação das tarefas a serem executadas Figura 29: BinClient esperando mensagem Figura 30: Envio de mensagens para as instâncias de BinClient....65

9 vi LISTA DE ABREVIATURAS JPVM PVM JVM TCP UDP Java Parallel Virtual Machine Parallel Virtual Machine Java Virtual Machine Transmission Control Protocol User Datagram Protocol

10 vii RESUMO Várias tecnologias têm sido desenvolvidas para suprir a necessidade de alto desempenho para as mais diversas aplicações. Uma alternativa que tem apresentado resultados satisfatórios tem sido a utilização de clusters de computadores, utilizando máquinas comuns interligadas em rede, e mecanismos para a troca de informações, como o JPVM, formando um único recurso computacional. O pacote JPVM é uma API Java que implementa as funcionalidades do PVM e apresenta algumas características adicionais herdadas da linguagem sobre a qual é implementado, como o alto nível de portabilidade e uso uniforme de threads. Porém, existe pouca documentação sobre esse pacote, mesmo diante das vantagens oferecidas para programação de alto desempenho. Com isso, o objetivo desse trabalho é implementar aplicações paralelas, para cálculos com vetores e processamento de imagens, que possam ser executadas em um ambiente híbrido, utilizando o JPVM, verificando situações com diferentes de quantidades de tarefas e computadores, possibilitando uma análise de desempenho do JPVM e conceitos a ele relacionados.

11 11 1. INTRODUÇÃO Muitas tecnologias têm sido desenvolvidas para suprir a necessidade de alto desempenho para executar as mais diversas aplicações que exigem alto poder computacional. Uma alternativa que tem apresentado resultados satisfatórios em relação a custo/desempenho tem sido a utilização de clusters de computadores, construídos com máquinas comuns interligadas em rede. Além disso, existe uma grande evolução nos sistemas utilizados para se obter alto desempenho através dos clusters, como novos mecanismos de comunicação. Existem vários mecanismos para troca de informações que podem ser utilizados na construção de clusters, alguns deles de distribuição livre como o PVM (Parallel Virtual Machine) ou, ainda, o JPVM que é uma implementação em Java baseada no mesmo, que é um pacote de software que apresenta um conjunto de máquinas trabalhando como um único recurso computacional paralelo (LOURENÇO, 2002). O pacote JPVM é uma API Java que implementa as funcionalidades do PVM e apresenta algumas características adicionais herdadas da linguagem sobre a qual é implementado, principalmente o alto nível de portabilidade. Contudo, ainda existe pouca documentação sobre esse pacote, fato este que estimulou o estudo do mesmo, diante das vantagens que o mesmo oferece para programação de alto desempenho. Desta forma, o objetivo desse trabalho é implementar aplicações paralelas, que possam ser executadas em um ambiente híbrido, utilizando o JPVM, aplicando testes em situações distintas, com diferentes quantidades de tarefas e computadores. Com isso, é possível realizar uma análise de desempenho do JPVM e fazer um levantamento do funcionamento e conceitos a ele relacionados.

12 12 Para isso, foi construído um cluster de alto desempenho, formado por máquinas Linux e Windows, em que as aplicações implementadas se comunicam com o JPVM, tornando possível analisar o seu desempenho, bem como verificar seu funcionamento, a sua interface de programação e as suas características, como a portabilidade e interoperabilidade. Foram implementadas aplicações paralelas que realizam processamento de imagem para executar no cluster construído, pois normalmente o trabalho com imagens utiliza cálculos complexos e que demandam muito tempo de CPU, o que viabiliza os testes de desempenho. Além disso, o processamento de imagens é relativamente simples para ser paralelizado, podendo ser realizado de duas formas. A primeira divide uma imagem em vários pedaços, sobre os quais o processamento é efetuado simultaneamente. A segunda pode ser utilizada quando existem várias imagens a serem processadas, realizando o processamento em duas ou mais simultaneamente. A apresentação do trabalho foi dividida de forma que a revisão de literatura aborda os assuntos relevantes para o entendimento do JPVM, que são: processamento paralelo, cluster de computadores, PVM, protocolos de transporte, características da linguagem Java que influenciam na paralelização das aplicações e o JPVM. A seção do JPVM apresenta uma relação entre o JPVM e o PVM padrão. Ainda, aborda os principais métodos do JPVM, além de um exemplo para demonstrar a utilização do mesmo, bem como comentários gerais sobre seu funcionamento. É importante ressaltar que as informações sobre clusters de computadores e PVM foram retiradas do trabalho de estágio (OLIVEIRA, 2004), porém o texto sofreu algumas alterações, como reorganização, seleção dos trechos mais importantes e inclusão de novas informações. Na seção de materiais e métodos serão apresentados os equipamentos e programas utilizados na realização desse trabalho, bem como a forma que os mesmos foram trabalhados. Por fim, na seção dos resultados serão apresentadas considerações sobre o pacote analisado, as aplicações paralelas implementadas com o JPVM e os testes realizados para

13 13 avaliar o desempenho da execução das mesmas, em situações distintas, no que diz respeito à quantidade de máquinas e de tarefas.

14 14 2. REVISÃO DE LITERATURA 2.1. Processamento Paralelo Processamento paralelo é o modo de execução em que várias instruções são executadas ao mesmo tempo e, normalmente, sobre vários dados (TANENBAUM, 1995). A principal vantagem do processamento paralelo é o desempenho, pois se torna possível processar, ao mesmo tempo, várias partes de uma aplicação que demandaria muito tempo de execução se processadas seqüencialmente ou, ainda, a execução simultânea de várias aplicações pequenas. Existem dois tipos de processamento paralelo: o paralelismo real e o pseudoparalelismo. No primeiro, vários processos executam sobre vários processadores, que podem ter memória própria ou uma memória compartilhada entre eles. No segundo, existem vários processos concorrendo por um único processador. Contudo, mesmo tendo um único processador, a execução de tarefas pode ser vantajosa por permitir que uma tarefa execute sem ter que esperar a primeira terminar a execução, por exemplo, um cliente chat no qual um processo fica responsável por receber mensagens e outro por enviar o que o usuário digita. Em ambos os casos, a quantidade de processadores utilizados é transparente ao usuário final. A maioria das aplicações que necessita de um grande poder computacional pode ser adaptada para executar em um ambiente paralelo, visando obter um funcionamento satisfatório no que diz respeito ao tempo gasto na execução das tarefas. Da mesma forma, adaptações podem ser feitas em aplicações que necessitam estar sempre disponíveis, pois

15 15 além da busca do desempenho, os ambientes paralelos podem ser utilizados visando que o serviço continue executando o máximo de tempo possível. Alguns exemplos de aplicações em que a utilização de processamento paralelo pode ser indicada, são: Servidores de Internet no caso de sites muito visitados, pode-se distribuir a carga para aumentar a capacidade de resposta. Sistemas de Computação Gráfica a paralelização da execução pode, por exemplo, diminuir o tempo de renderização de imagens durante a elaboração de um filme. Sistemas de Inteligência Artificial e automação casos como processamento de imagens ou visão por computador que, normalmente, exigem muito processamento. Sistemas para previsão do tempo processar informações para gerar uma previsão através de computadores seqüenciais é um processo lento e impreciso, principalmente por utilizar processamento de imagens recebidas por satélite. Sistemas para controle de segurança de reatores nucleares a análise das condições do reator e a atuação rápida em caso de acidentes exigem cálculos matemáticos complexos que necessitam de muito processamento. Como se pode perceber, existe uma variedade de aplicações que podem ser paralelizadas, permitindo a sua utilização em máquinas paralelas, como cluster e supercomputador. As máquinas paralelas são arquiteturas compostas por vários processadores, os quais são interligados fisicamente através de uma rede interconexão (BOGO, 2002). O principal objetivo dessas arquiteturas é obter maior desempenho por meio da cooperação entre os processadores na execução de tarefas. Os dois tipos de máquinas paralelas são as que utilizam memória compartilhada e as que utilizam memória distribuída (PITANGA, 2004). As máquinas paralelas de memória compartilhada possuem múltiplos processadores, compartilhando um espaço de endereços de memória comum, como pode ser visto na Figura 1. É uma arquitetura pouco escalável e de difícil manutenção. Além disso, esse tipo de arquitetura pode criar situações de conflito entre os processadores, ao acessar a memória

16 16 comum, na qual a gravidade dessas situações depende de características de hardware e da qualidade dos mecanismos de interligação. Processador Processador Memória Mecanismo de Interligação Figura 1: memória compartilhada. As máquinas paralelas de memória distribuída são formadas por vários processadores, cada um com a sua própria memória, como pode ser observado na figura 2. Nesse modelo a comunicação entre os diferentes processadores do sistema é realizada através de troca de mensagens. Processador Memória Processador Memória Processador Memória Mecanismo de Interligação Figura 2: memória distribuída. Atualmente, as duas formas mais usadas para implementar essas arquiteturas são os supercomputadores, que podem utilizar os dois tipos de memória, e os clusters de computadores, que são exemplos de memória distribuída. As máquinas paralelas com memória compartilhada formam um sistema bastante eficiente no que diz respeito a desempenho. Contudo, são máquinas extremamente caras, com limitações físicas para a quantidade de processadores. Já as máquinas paralelas com memória distribuída apresentam uma certa facilidade de acrescentar novos processadores e necessitam de um

17 17 mecanismo de troca de mensagens explícitas entre os mesmos para dividir as tarefas executadas. O uso de supercomputadores é uma alternativa disponível para executar aplicações mais complexas. Os mesmos são máquinas desenvolvidas com tecnologias proprietárias e, geralmente, possuem finalidades pré-definidas que acabam gerando desvantagens (PITANGA, 2004), como: utilização de softwares proprietários e caros; hardware com custo elevado; alto custo de manutenção; total dependência de fornecedores; e dificuldade de atualização. Uma alternativa que tem apresentado vantagens na relação custo/desempenho é a utilização dos clusters de computadores, que são máquinas construídas com utilização de dois ou mais microcomputadores comuns interligados por uma rede de interconexão, que trabalham juntos para resolver um problema (ZACHARIAS, 2004) Clusters de Computadores Clusters de computadores constituem-se de um conjunto de microcomputadores comuns, interligados por uma rede de interconexão, que trabalham juntos para resolver um problema. Os microcomputadores que compõem o cluster podem ser heterogêneos, tanto em relação a hardware, garantindo a independência em relação a fabricantes, como em relação a sistemas operacionais utilizados (PITANGA, 2004). Além disso, qualquer arquitetura de rede pode ser utilizada para a interligação dos equipamentos, como ethernet, fast ethernet, token ring, entre outros. Nessa arquitetura, cada um dos equipamentos interligados é chamado de nó e, normalmente, existe um nó mestre que é responsável pelo gerenciamento e pela divisão das

18 18 tarefas entre os demais nós, chamados de escravos, que juntos resolverão um problema comum. Normalmente, o nó mestre também participa do processamento das tarefas, não ficando responsável apenas pelo gerenciamento do cluster. A constante evolução tecnológica dos computadores pessoais, tanto em relação ao aumento de desempenho como em relação à diminuição do custo, é um dos fatores que tem contribuído para fazer dos clusters uma alternativa que atende as necessidades de alto poder de processamento com uma relação custo/desempenho satisfatória. Outra motivação para a construção de clusters é que podem ser utilizados sistemas operacionais abertos e de distribuição livre, como o Linux. Essa é uma solução viável tanto economicamente quanto operacionalmente, pois costumam apresentar um desempenho satisfatório e oferecer código aberto possibilitando alterações em seu funcionamento de acordo com a necessidade das aplicações paralelas a serem executadas, além de não oferecerem custos com a aquisição. Assim, algumas vantagens da utilização dos clusters são (PITANGA, 2004): escalabilidade: é possível aumentar o desempenho do mesmo adicionando ou trocando os microcomputadores que compõem o cluster; tolerância a falhas: o cluster mantém o funcionamento mesmo com a paralisação de alguns nós; baixo custo: utilizam recursos de fácil acesso e de uso comum como, por exemplo, microcomputadores de uso pessoal e mini-hub. independência de fornecedores: por utilizar microcomputadores comuns, que podem ter plataformas heterogêneas, não estão presos a uma tecnologia específica. Para a comunicação entre os nós, foram desenvolvidos vários mecanismos que utilizam a troca de mensagens. Alguns desses mecanismos são de distribuição livre, como o PVM (Parallel Virtual Machine), que é um pacote de software que fornece recursos para a comunicação de um conjunto de máquinas trabalhando como um único recurso computacional paralelo (LOURENÇO, 2002).

19 19 Um cluster pode possuir configurações e características diferentes, tanto em relação ao hardware quanto ao Sistema Operacional e mecanismos de comunicação, de acordo com a finalidade do mesmo (ZACHARIAS, 2004). Conforme a finalidade os clusters podem ser classificados em: cluster de alta performance de computação e cluster de alta disponibilidade Cluster de alta performance de computação Existem situações em que a rapidez na execução das tarefas é mais importante, ou seja, existe a preocupação da diminuição do tempo de resposta da aplicação. Para casos como esse, imagina se um supercomputador dedicado, com custo elevadíssimo e de difícil operação. Contudo, esse desempenho pode ser obtido utilizando clusters de alta performance de computação, que tem como principal função obter processamento de alto desempenho na resolução de problemas através da paralelização da execução das aplicações. Essa classe de cluster tem como foco o desenvolvimento de máquinas paralelas com alto poder computacional, que podem ser utilizadas em situações como estudo de algoritmos de processamento paralelo e construção de aplicações paralelas (PITANGA, 2004). Assim, a utilização desse tipo de arquitetura visa uma maior velocidade na resolução dos problemas, não se preocupando tanto com a implementação de recursos que garantam a confiabilidade das operações. No processamento das aplicações, os computadores trabalham como um único recurso computacional. Cada vez que o cluster recebe uma tarefa grande para executar, como, por exemplo, cálculos matemáticos complexos e processamento de imagens, divide a mesma em partes que serão distribuídas entre os nós, evitando gastar muito processamento com ações voltadas para garantir a confiabilidade, como troca de informações de controle para gerencia do funcionamento dos nós. Nesse caso, normalmente, os erros devem ser detectados e tratados pelas aplicações ou por quem estiver executando as mesmas.

20 Cluster de alta disponibilidade Em muitas aplicações, denominadas críticas, paradas não planejadas podem causar prejuízos na qualidade dos serviços ou até levar a perdas financeiras. Em alguns casos, principalmente para empresas, a disponibilidade de um sistema é vital. A paralisação do sistema pode significar a paralisação da empresa, como por exemplo, o sistema bancário. Para resolver esse problema, podem ser utilizados clusters de alta disponibilidade que tem como principal função evitar essas paradas, mantendo o sistema ativo, mesmo com a paralisação parcial cluster. Logo, quando se constrói um cluster de alta disponibilidade tem-se uma grande preocupação com a garantia de confiabilidade e o tratamento de falhas durante o funcionamento do mesmo. Espera-se que este esteja disponível sempre que se fizer necessário e que as aplicações executem até o fim, sendo que os erros devem ser localizados e corrigidos dinamicamente. Nesse caso, os equipamentos são utilizados em conjunto, com o objetivo de manter os serviços sempre ativos (PITANGA, 2004). Deve-se levar em consideração que garantir a confiabilidade causa a perda de performance e de poder de processamento, pois, além do tempo gasto com o processamento, é necessário dispor de recursos para detectar e contornar as falhas durante o processamento sem interrompê-lo. Por exemplo, uma das formas de garantir a continuidade do processamento é a redundância de equipamentos e/ou serviços, ou seja, são mantidas cópias dos recursos para atender a demanda no caso de falha de algum nó, através da substituição dos mesmos pelas cópias. Com isso, o desempenho fica um pouco comprometido pelo processamento e tempo gasto para manter as cópias dos recursos sempre atualizadas. Normalmente, um servidor de qualidade mantém uma disponibilidade de 99, 5%, enquanto uma solução através de clusters de computadores mantém 99, 99% de disponibilidade (PITANGA, 2004).

21 Clusters X Supercomputadores Os supercomputadores são máquinas construídas para obter alto desempenho a partir de uma arquitetura voltada para busca de resultados específicos a um determinado tipo de tarefa (OMENA, 2004). Ou seja, geralmente, são máquinas construídas sob encomenda para a execução de uma aplicação pré-definida, enquanto que os clusters são construídos com computadores comuns, podendo utilizar máquinas com arquiteturas heterogêneas Os supercomputadores trazem um retorno satisfatório no que diz respeito a desempenho e poder de processamento. Principalmente pelo fato de serem projetados com uma finalidade específica, suas arquiteturas provêem um desempenho otimizado para realização das tarefas. Em contrapartida, os clusters de computadores têm seu desempenho e poder de processamento diretamente ligado à quantidade de nós que o compõem, podendo apresentar um retorno tão satisfatório quanto os supercomputadores. Ainda, cada nó pode ser um sistema completo, permitindo seu reaproveitamento como uma máquina individual (BOGO, 2002). O alto custo de desenvolvimento é o principal fator negativo em relação à utilização de supercomputadores, o que faz com que o acesso aos mesmos seja restrito a poucos. Além disso, o fato de serem construídos, normalmente, sob encomenda acaba gerando uma dependência total de fornecedores e um alto custo de manutenção, além de dificultar a realização de atualizações. Existe, ainda, o problema de que muitas vezes essas máquinas utilizam softwares proprietários e caros e oferecem uma limitação física para a quantidade de processadores. (PITANGA, 2004). Entretanto, os clusters apresentam uma arquitetura bastante flexível, permitindo a alteração da quantidade de nós com muita facilidade, o que permite adicionar novos nós para melhorar o desempenho na existência de uma necessidade de maior poder de processamento ou ainda a remoção de nós, no caso de ociosidade. Essa arquitetura contribui também para a formação de um sistema com uma maior tolerância à falhas, já que um cluster pode continuar funcionando mesmo com a paralisação de alguns dos nós, diferente dos supercomputadores que podem ficar completamente paralisados por pequenas falhas (PITANGA, 2004). Além disso, por utilizar máquinas comuns, produzidas

22 22 em grande escala, bem como utilização de máquinas antes ociosas, os clusters apresentam um custo total bastante atrativo se comparado aos supercomputadores PVM Com o objetivo de facilitar o campo da computação paralela heterogênea, foi criada a biblioteca de programação paralela por passagem de mensagem PVM (Parallel Virtual Machine) pelo Heterogeneous Network Project, em 1989 (PITANGA, 2004). O PVM foi uma das primeiras bibliotecas, sob o conceito de passagem de mensagem, a permitir um ambiente paralelo heterogêneo, como máquinas com configurações físicas e/ou sistemas operacionais diferentes. O funcionamento de clusters consiste, basicamente, em máquinas interligadas através de uma rede de comunicação com processos trocando mensagens entre si através de um mecanismo próprio para isso, como o PVM. Através da troca de mensagens, o PVM permite o funcionamento conjunto de máquinas mono ou multiprocessadoras, como um único recurso computacional paralelo (LOURENÇO, 2002). O PVM forma um sistema distribuído que, segundo TANENBAUM, 1995, é aquele que roda em um conjunto de máquinas sem memória compartilhada, máquinas estas que mesmo assim aparecem como um único computador para seu usuário. Com isso, tem-se uma forma eficiente e transparente de distribuir tarefas entre máquinas ligadas em rede, conseguindo um bom desempenho na gerência dos recursos computacionais, através da configuração de uma máquina paralela virtual. Além de pequena, a biblioteca PVM está disponível para vários sistemas operacionais como UNIX, seus derivados e Windows NT. A sua instalação é simples e não necessita de privilégios especiais, ou seja, não é necessário acessar a máquina como superusuário para instalar o PVM.

23 Características O PVM fornece um ambiente paralelo utilizando o modelo de Message Passing (Passagem de Mensagem), que é um método de comunicação entre vários computadores com memória própria. Esses computadores se comunicam por troca de mensagens através de uma rede de computadores, respeitando as regras dos protocolos de comunicação. O PVM habilita uma coleção de computadores heterogêneos a se comportar como um único recurso computacional expansível e concorrente, o que contribuiu para torná-lo um padrão de fato (FREITAS, 2004). Junto com a interoperabilidade, outro fator que contribui para tornar o PVM um padrão é a sua alta capacidade de portabilidade. Contudo, uma aplicação PVM ainda fica dependente da portabilidade e interoperabilidade da linguagem em que foi escrita, necessitando alterações para que uma aplicação compilada em uma arquitetura seja reutilizada em uma outra. Além de oferecer vários recursos para computação paralela, a utilização do PVM é simples e de fácil compreensão, sendo que algumas de suas características são (LOURENÇO, 2004): possibilita a atribuição das sub-tarefas de uma aplicação, de forma otimizada, aos nós que compõem o ambiente paralelo; oferece controle de processos, em tempo de execução; apresenta uma interface de programação intuitiva e consistente; oferece suporte para tolerância a falhas, monitoração e profiling; é altamente portável, além de oferecer interoperabilidade; abstração completa, pois pode ser administrado como uma única máquina virtual, mesmo numa rede totalmente heterogênea; fácil de instalar e usar; software de domínio publico; e grande aceitação e utilização no mundo.

24 24 Com isso, através da agregação de computadores heterogêneos e o compartilhamento dos seus recursos, o PVM possibilita a utilização efetiva de computação paralela com paralelização escalável e dinâmica e a programação em linguagens como C e C++, através do uso de bibliotecas de rotinas, que serão apresentadas com mais detalhes na próxima subseção. Assim, problemas que exigem grande poder computacional podem ser resolvidos sem a necessidade da compra um supercomputador de tecnologia proprietária. Por isso, o PVM é uma forma muito utilizada para aumentar o desempenho, no meio científico e comercial, principalmente pela sua simplicidade e por ter um custo efetivo menor frente a outras soluções Componentes e Funcionamento Básico O PVM é composto de duas partes: a primeira é um daemon, chamado pvmd3, que é executado em todos os computadores que vão formar a máquina virtual paralela; a segunda é uma biblioteca de rotinas de interface, na qual se encontra um conjunto completo de primitivas, necessárias para a interação entre as tarefas de uma aplicação (MORETTI, 2004). O pvmd3 executa em segundo plano em cada um dos nós, formando a máquina virtual. Esse processo é responsável pela troca de mensagens, pela coordenação das tarefas em execução e pela inspeção das operações dos processos de aplicações paralelas sobre o PVM. Ao utilizar uma aplicação PVM, o usuário executa o pvmd3 em um dos computadores do cluster, normalmente o nó mestre, que chama os demais processos pvmd3 escravos em cada computador que vai compor a máquina virtual, através de remote shell - rsh, coordenando assim as comunicações entre os processadores e o sistema. Logo, em cada nó, é necessário ter o pvmd3 instalado, sendo que existem versões disponíveis para vários sistemas operacionais. Contudo, no caso de transmissão entre arquiteturas diferentes existe certa dificuldade, pois é necessária uma padronização dos dados transmitidos, normalmente através da conversão dos dados pelo formato XDR

25 25 (External Data Representation), conforme RFC Dependendo do caso, isso pode ser extremamente complexo (FERRARI, 1998) A biblioteca de rotinas de interface, segunda parte do PVM, possui as rotinas responsáveis pela comunicação entre os computadores interligados, gerência de processos, coordenação das tarefas, além da verificação e manutenção de estado da máquina virtual (MORETTI, 2004). As tarefas executadas através do PVM utilizam um número inteiro como identificador, o task identifier (TID), que é utilizado nas mensagens que são trocadas entre os computadores que formam a máquina virtual paralela (MORETTI, 2004). Como esse identificador deve ser único na máquina virtual, o mesmo é definido pelo daemon local e não pelo usuário. A identificação das tarefas pela aplicação do usuário é possível através de diversas rotinas que o PVM oferece, que retornam valores de TID, possibilitando a identificação das tarefas pela aplicação do usuário. Os programas paralelos que utilizam o PVM fazem uso das rotinas disponibilizadas na biblioteca de interface do PVM. Para programação, essas bibliotecas são distribuídas em linguagens como Python, Perl, além das linguagens tradicionais como C, C++ e Fortran, nas quais o usuário, entre outras coisas, pode escolher o protocolo de camada de transporte (TCP ou UDP) que vai utilizar na troca de mensagens. Normalmente, essas bibliotecas disponibilizadas para linguagens como Perl, Python, e outras, fazem apenas um mascaramento das bibliotecas do PVM padrão, em C/C++, possibilitando o uso das mesmas nas linguagens citadas (FERRARI, 1998). Com isso, além do compilador e/ou interpretador da linguagem que se deseja utilizar, é necessário também a instalação e configuração do PVM padrão. É importante citar que existem muitos meios de melhorar o desempenho de máquinas paralelas que utilizem o PVM, mas não existe um modelo ou método padrão, pois o funcionamento do cluster depende de fatores como a arquitetura, velocidade da rede, sistemas auxiliares, entre outros que devem ser avaliados conforme a necessidade. Ou seja, a definição da solução depende do tipo de problema.

26 Protocolos de Transporte Os protocolos de transporte são responsáveis pela troca de dados entre duas aplicações que se comunicam em uma rede, permitindo que vários aplicativos distintos executados em determinado computador enviem e recebam seus dados isoladamente (COMER, 1998). No modelo TCP/IP existem dois protocolos com essa função: o TCP (Transmission Control Protocol) e o UDP (User Datagram Protocol). O PVM padrão implementa um sistema constituído de uma biblioteca em C/C++, disponível também em Fortran, na qual o usuário pode escolher qual protocolo de transporte utilizar, TCP ou UDP, na troca de mensagens (PITANGA, 2004). Contudo, o JPVM é implementado de forma que a troca de mensagens é realizada com o TCP (COMER, 1998) TCP O protocolo TCP proporciona um serviço confiável, com controle de fluxo fim-a-fim entre duas máquinas de velocidades de processamento arbitrárias, que usem o mecanismo IP não-confiável para comunicação (COMER, 1999). O TCP foi construído para funcionar corretamente mesmo que haja problemas durante a transmissão dos dados, já que o protocolo responsável pela transferência na rede não se preocupa com isso. Para garantir essa confiabilidade, o TCP acrescenta recursos para a transmissão de dados sobre o IP, como, por exemplo, a utilização de timeout com retransmissão. O TCP oferece um serviço orientado a conexão, em que os pontos finais da comunicação, as aplicações que estão trocando dados, são identificados pela combinação do endereço IP origem mais porta origem endereço IP destino mais porta destino (ALBUQUERQUE, 2001). Como é orientado à conexão o TCP oferece recursos para identificar e corrigir perdas de segmentos, segmentos fora de ordem e segmentos com informações incorretas. Uma conexão TCP pode ser aberta de dois modos: ativo, quando o processo deseja conectar com outro, ou no modo passivo, quando o processo deseja aguardar uma conexão de um outro (ALBUQUERQUE, 2001). Os dados são transferidos em segmentos, através de uma conexão e enviados como dados nos datagramas IP. Cada segmento é composto

27 27 por cabeçalho e dados, sendo que o cabeçalho do protocolo TCP, além dos dados que identificam a conexão, existe um número de seqüência, o tamanho do segmento, entre outros. O TCP oferece transmissão orientada a bytes fluxo de bytes (COMER, 1999). A mensagem é remontada através do número de seqüência e entregue de forma transparente ao usuário, mesmo havendo segmentação da mesma. Contudo, os dados são transmitidos independentemente da forma que foram agrupados pelo programa. O TCP decide o momento de parar de agrupar e conseqüentemente transmitir os dados. Em contrapartida, datagramas não garantem a ordem na entrega das mensagens. O protocolo TCP espera uma confirmação pela máquina de destino do recebimento dos segmentos, garantindo assim a entrega dos dados (ALBUQUERQUE, 2001). Uma cópia do segmento enviado é mantida na máquina origem e, se em um determinado tempo a recepção não for confirmada, o segmento é retransmitido. Esse tempo de espera é calculado dinamicamente pelo TCP e ajustado às condições da conexão. Normalmente, o valor desse tempo é duas vezes o RTT (Round Trip Time), tempo estimado de ida e volta do segmento, O TCP oferece também a confirmação de Piggbacking (COMER, 1999), pois como a comunicação em uma conexão TCP é do tipo full-duplex, os segmentos foram concebidos de forma que possa carregar dados em um sentido da comunicação e uma confirmação no sentido inverso (mesmo segmento), por exemplo, um segmento que está enviando dados de uma aplicação A para uma aplicação B pode levar junto, no seu cabeçalho, uma confirmação de recebimento de uma mensagem que veio de B para A. Isso fornece um ganho de tempo e gera economia de segmentos. Esse mecanismo gera ganho substancial de performance na comunicação via TCP e viabiliza a comunicação entre pontos finais distantes. Para melhorar o desempenho na transmissão, evitando que seja necessário encaminhar uma confirmação para cada segmento recebido, o TCP usa o conceito de janelas deslizantes (sliding windows), em que múltiplos segmentos podem ser enviados antes da confirmação do primeiro (COMER, 1998). A confirmação é feita pelo número de reconhecimento,

28 28 sendo que ao informar que deseja receber um determinado byte a aplicação confirma o recebimento de todos os anteriores. Esta otimização é implementada pelo protocolo TCP, viabilizando um aumento do desempenho da transmissão, limitado apenas pelas características da rede. O número máximo de blocos a serem enviados sem confirmação imediata é denominado tamanho da janela window e à medida que os segmentos enviados são confirmados, novos segmentos podem ser enviados, daí vem o nome janela deslizante.. O tamanho da janela é móvel e é negociado durante a fase de conexão pelos pontos finais e pode ser renegociado, se necessário, durante a transmissão, de acordo com o estado dos buffers (ALBUQUERQUE, 2001). O TCP, mesmo com as medidas para melhorar o desempenho na troca de mensagem, ainda apresenta um custo adicional na transmissão dos dados. Esse custo se deve ao fato da complexidade do TCP sendo que, para transmissão, é necessário estabelecer conexões, os dados a serem enviados precisam ser dispostos em segmentos para serem enviados, e reorganizados ao serem recebidos. Além disso, existe da necessidade de respostas com confirmação de recebimentos e a retransmissão dos dados na falta da mesma. Contudo, as características do TCP fazem dele um protocolo apropriado para ambientes em que a confiabilidade na transmissão é mais importante que a rapidez UDP O UDP é um protocolo de transporte que, ao contrário do TCP, oferece um serviço de comunicação não orientado a conexão e sem garantia de entrega (ALBUQUERQUE, 2001). Oferece uma transmissão orientada a mensagens, no qual todas as mensagens recebidas para uma porta são colocadas em uma mesma fila, independentemente da sua origem. Possíveis perdas de dados ou, ainda, a organização dos mesmos devem ser tratadas pelas aplicações que utilizam o UDP. O UDP é um protocolo de transporte mais simples que o TCP e pode ser considerado como uma extensão do protocolo IP, acrescentando ao mesmo a capacidade de multiplexação e demultiplexação (COMER, 1999). Isso é, através do conceito de portas, o UDP possibilita

29 29 que várias aplicações, em uma mesma máquina, se comuniquem ao mesmo tempo. Para isso, cada mensagem contém um número de porta de origem e um de destino, permitindo que esta seja entregue ao destinatário certo. O UDP oferece uma comunicação rápida, devido a sua simplicidade, e pode ser utilizado tanto em comunicações por difusão (broadcast) ou comunicações ponto a ponto (ALBUQUERQUE, 2001). Seu funcionamento básico consiste na estação origem recebendo dos processos de aplicação pedidos de transmissão de mensagens, o UDP multiplexa a mensagem encaminha ao IP que é o responsável pela transmissão. Na estação destino ocorre o processo inverso: O IP entrega as mensagens recebidas ao UDP que, por sua vez, demultiplexa a mensagem e repassa ao processo de aplicação destino. Os datagramas UDP são enviados como dados nos datagramas IP e podem ser fragmentados na camada IP, o que pode gerar problemas, pois o UDP não fornece ordenamento dos dados. Quando possível, isso deve ser tratado pela aplicação, evitando a fragmentação. Isso pode ser feito controlando o tamanho dos datagramas, evitando que o seu tamanho exceda o tamanho máximo de dados do datagrama IP. As características do UDP não garantem a confiabilidade na troca de mensagens. Contudo, por não realizar conexões e não utilizar mensagens de controle, o uso do UDP é viável em trocas de mensagens pequenas, que não excedam o MTU, e para aplicações em que a rapidez é mais importante que a garantia de entrega como, por exemplo, teleconferências. Além disso, em ambientes de redes locais e seguros pode ser interessante utilizar o UDP, pois suas falhas podem ser tratadas em nível de aplicação JAVA & JPVM Como o objetivo desse trabalho é realizar uma análise do processamento paralelo utilizando o JPVM e este é um pacote Java, antes de abordar especificamente esse pacote, é importante ressaltar algumas características da linguagem que servem de motivação para utilizá-la na implementação de ambientes de processamento paralelo, tais como portabilidade e modelo de threads (concorrência).

30 30 Quanto ao desempenho, apesar do C/C++ apresentar uma performance melhor que a do Java, pois é totalmente compilado, enquanto o Java em parte é interpretado, o que demanda processamento adicional em tempo de execução, o Java ainda apresenta um desempenho considerável (NEWMAN, 1997). Em testes realizados pela Sun Microsystems, o desempenho de códigos de bytes transformados em código de máquina foi praticamente o mesmo do C/C++, isso sem levar em conta o tempo de compilação em run-time. Além disso, várias outras características poderiam ser citadas como, por exemplo, o sistema coletor de lixo do Java que recupera a memória alocada dinamicamente que o programa não precise mais ou, ainda, o uso de arrays, diferente do C/C++ que usa listas de ponteiros vinculadas. Ainda, o modelo de ponteiros do Java elimina a possibilidade de sobrescrever a memória, corrompendo dados. Contudo, para esse estudo, não se faz necessário o aprofundamento nas mesmas Portabilidade A linguagem Java foi projetada de forma que seu compilador gerasse um código de bytes neutro, independente da arquitetura sobre a qual será executado. Contudo, esses códigos têm que ser interpretados por um ambiente run-time, este sim, designado para uma plataforma específica. Esse ambiente lê os programas Java compilados Bytecode e converte suas instruções em comandos que um sistema operacional possa manipular e é conhecido como JVM (Java Virtual Machine Máquina Virtual Java) (LEMAY, 1999), como pode ser observado no esquema apresentado na Figura 3.

31 31 Código Fonte Compilador Java Bytecode Java (independente de plataforma) JVM (Pentium) JVM (PowerPC) JVM (SPARC) Figura 3: esquema de funcionamento da JVM (LEMAY, 1999). Além disso, existe uma padronização de tipos de dados utilizados no Java, isto é, os mesmos têm tamanhos especificados, bem como o comportamento da aritmética neles, por exemplo, o tipo int sempre significa um inteiro de 32 bits (NEWMAN, 1997). Esses pontos fazem do Java uma linguagem com alto nível de portabilidade. Assim, depois que os programas Java estiverem compilados, as classes poderão executar em qualquer máquina que tenha a JVM instalada, mesmo que este for compilado em uma arquitetura diferente da qual vai ser executado, por exemplo, um programa Java compilado em uma máquina Linux pode ser executado em uma máquina Windows, com o JVM previamente instalado. Além disso, a linguagem Java foi projetada para suportar aplicativos em rede. Contudo, em uma rede pode ser necessária a comunicação entre aplicativos Java que estejam executando em máquinas com arquiteturas diferentes. Para resolver esse problema, o Java foi projetado para, além da portabilidade, oferecer interoperabilidade, permitindo a interação entre aplicativos que estejam rodando em arquiteturas diferentes Concorrência Uma thread é uma unidade básica de utilização da CPU (SILBERSCHATZ, 2004). Esta, também conhecida como processos peso leve, é formada por um ID, um contador de programa, um conjunto de registradores e uma pilha. Ainda, compartilham sua seção de dados e outros recursos do sistema operacional, como arquivos abertos e sinais, com outras

32 32 threads que façam parte ao mesmo processo. Um processo tradicional, também chamado de processo peso pesado, tem uma única thread de controle. Já processos com múltiplas threads de controle multithreads podem realizar mais do que uma tarefa a cada momento. A diferença entre um processo tradicional, única thread, e um processo com múltiplas threads pode ser observada na Figura 4. Código Dados Arquivos Código Dados Arquivos Registradores Pilha Registradores Registradores Pilha Pilha thread Única thread multithreads Figura 4: Processos com única thread e com multithreads (SILBERSCHATZ, 2004). A programação com multithreads traz alguns benefícios que podem ser classificados em quatro categorias principais (SILBERSCHATZ, 2004): - Capacidade de resposta um programa pode continuar executando, mesmo se parte dele estiver bloqueado ou realizando uma operação demorada. Por exemplo, um navegador de web multithreads pode, em uma thread, manter uma interação com o usuário, enquanto uma segunda faz o armazenamento de uma imagem. - Compartilhamento de recursos por padrão, as threads compartilham a memória e os recursos do processo ao qual pertencem. Isso permite que uma aplicação tenha diversas threads dentro do mesmo espaço de endereçamento.

33 33 - Economia como as threads compartilham recursos do processo ao qual pertencem, é mais econômico criar threads e comutar seus contextos. Por outro lado, a alocação de memória e de recursos para a criação de processos é custosa. - Utilização de arquiteturas de multiprocessadores cada thread pode ser executada em paralelo em um processador diferente, melhorando o desempenho. Já um processo com uma única thread pode executar somente em um processador, independente de quantos estejam disponíveis. Entre as linguagens de programação de uso geral e popular, Java é a única que torna as primitivas de simultaneidade disponíveis para o programador de aplicativos, pois, normalmente, os computadores realizam uma simultaneidade implementada com primitivas de sistemas operacionais, disponíveis somente para programadores altamente experientes (DEITEL, 2003). Em Java, o programador especifica que os aplicativos contêm threads (fluxos de execução). Cada uma dessas threads assinala uma parte de um programa que pode ser executada simultaneamente com outras threads. Esse recurso, chamado multithreading, oferece ferramentas poderosas para implementação de simultaneidade. O Java inclui primitivas de multithreading na própria linguagem através de bibliotecas, mais especificamente nas classes Thread, ThreadGroup, ThreadLocal e ThreadDeath do pacote java. lang (DEITEL, 2003). Isso aumenta a portabilidade dos programas Java, diferentemente das linguagens que não tem multithreading predefinido, como C/C++, que dependem de bibliotecas especificas para o sistema operacional, que implementam multithreading ao nível de kernel JPVM Resultados obtidos com a utilização de sistemas paralelos, executando sobre redes de computadores, encorajam o uso dos mesmos por apresentar uma boa relação custo/desempenho. Entretanto, pode se tornar trabalhoso configurar e manter a idéia de um único recurso computacional quando se utiliza uma arquitetura heterogênea, tanto de hardware quanto de software.

34 34 Como foi apresentado anteriormente, o PVM oferece recursos que permitem implementar um ambiente paralelo, mesmo em arquiteturas heterogêneas, máquinas com configurações físicas e/ou sistemas operacionais diferentes. Contudo, esse mecanismo pode apresentar sérios problemas na execução de uma aplicação paralela quando os computadores utilizam sistemas operacionais diferentes (FERRARI, 1998). Numa tentativa de resolver ou minimizar este problema, foi criada a JPVM, uma API relativamente pequena e implementada inteiramente em Java que segue a estrutura básica do PVM, em que a comunicação segue o modelo de Message Passing (Passagem de Mensagem). Este método permite a comunicação entre vários computadores com memória própria, formando um único recurso computacional. Esses computadores se comunicam por troca de mensagens através de uma rede de computadores, respeitando as regras dos protocolos de comunicação. Contudo, o JPVM apresenta um nível de portabilidade e interoperabilidade superior ao do PVM padrão e também oferece recursos favoráveis à implementação de programas concorrentes, devido a características próprias da linguagem Java (FERRARI, 1998). Isso ocorre pelo fato da linguagem Java oferecer características que estimulam o seu uso na construção de ambientes paralelos heterogêneos como, por exemplo, a interface uniforme para as threads. Essas características possibilitam a utilização dos recursos, atualmente pouco utilizados na computação paralela, como estações de trabalho Macintosh e Windows. A API fornece uma interface semelhante à oferecida em C/C++ e Fortran pelo PVM, mas com a sintaxe e semântica utilizada pela linguagem Java. Essa similaridade facilita o uso da API para os usuários já familiarizados com o PVM, diminuindo custos em uma possível migração para o JPVM. A instalação da API é simples e não necessita de privilégios especiais, ou seja, não é necessário acessar a máquina como superusuário para instalar o JPVM. Para a utilização do JPVM, não é necessária a prévia instalação do PVM, como acontece em algumas distribuições do PVM para outras linguagens. Esses fatores fazem do JPVM um sistema acessível, além de tornar a migração dos sistemas paralelos para a plataforma Java fácil e de baixo custo.

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

Desenvolvimento de um Cluster de Alto Desempenho com PVM

Desenvolvimento de um Cluster de Alto Desempenho com PVM Desenvolvimento de um Cluster de Alto Desempenho com PVM Daniel Cândido de Oliveira 1, Yzaac Gonçalves da Silva 1, Madianita Bogo 1 1 Centro Universitário Luterano de Palmas Universidade Luterana do Brasil

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Comunicação Inter-Processos Sockets e Portas Introdução Sistemas distribuídos consistem da comunicação entre processos

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

Considerações no Projeto de Sistemas Cliente/Servidor

Considerações no Projeto de Sistemas Cliente/Servidor Cliente/Servidor Desenvolvimento de Sistemas Graça Bressan Graça Bressan/LARC 2000 1 Desenvolvimento de Sistemas Cliente/Servidor As metodologias clássicas, tradicional ou orientada a objeto, são aplicáveis

Leia mais

1 http://www.google.com

1 http://www.google.com 1 Introdução A computação em grade se caracteriza pelo uso de recursos computacionais distribuídos em várias redes. Os diversos nós contribuem com capacidade de processamento, armazenamento de dados ou

Leia mais

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos

Leia mais

SISTEMAS DISTRIBUIDOS

SISTEMAS DISTRIBUIDOS 1 2 Caracterização de Sistemas Distribuídos: Os sistemas distribuídos estão em toda parte. A Internet permite que usuários de todo o mundo acessem seus serviços onde quer que possam estar. Cada organização

Leia mais

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4 Sistemas Distribuídos Capítulos 3 e 4 - Aula 4 Aula passada Threads Threads em SDs Processos Clientes Processos Servidores Aula de hoje Clusters de Servidores Migração de Código Comunicação (Cap. 4) Fundamentos

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

Capítulo 7 CAMADA DE TRANSPORTE

Capítulo 7 CAMADA DE TRANSPORTE Capítulo 7 CAMADA DE TRANSPORTE INTRODUÇÃO (KUROSE) A Camada de Rede é uma peça central da arquitetura de rede em camadas A sua função é a de fornecer serviços de comunicação diretamente aos processos

Leia mais

Arquitetura de Rede de Computadores

Arquitetura de Rede de Computadores TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Processos- Clientes, Servidores, Migração Capítulo 3 Agenda Clientes Interfaces de usuário em rede Sistema X Window Software do lado cliente para

Leia mais

Arquitetura e Protocolos de Rede TCP/IP. Modelo Arquitetural

Arquitetura e Protocolos de Rede TCP/IP. Modelo Arquitetural Arquitetura e Protocolos de Rede TCP/IP Modelo Arquitetural Motivação Realidade Atual Ampla adoção das diversas tecnologias de redes de computadores Evolução das tecnologias de comunicação Redução dos

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Gerência de processos Controle e descrição de processos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Representação e controle de processos pelo SO Estrutura

Leia mais

Márcio Leandro Moraes Rodrigues. Frame Relay

Márcio Leandro Moraes Rodrigues. Frame Relay Márcio Leandro Moraes Rodrigues Frame Relay Introdução O frame relay é uma tecnologia de chaveamento baseada em pacotes que foi desenvolvida visando exclusivamente a velocidade. Embora não confiável, principalmente

Leia mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

Leia mais

Processos e Threads (partes I e II)

Processos e Threads (partes I e II) Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa

Leia mais

Introdução à Linguagem Java

Introdução à Linguagem Java Introdução à Linguagem Java Histórico: Início da década de 90. Pequeno grupo de projetos da Sun Microsystems, denominado Green. Criar uma nova geração de computadores portáveis, capazes de se comunicar

Leia mais

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Conceitos básicos e serviços do Sistema Operacional Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Tipos de serviço do S.O. O S.O.

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS Cluster, Grid e computação em nuvem Slide 8 Nielsen C. Damasceno Introdução Inicialmente, os ambientes distribuídos eram formados através de um cluster. Com o avanço das tecnologias

Leia mais

Software de rede e Modelo OSI André Proto UNESP - São José do Rio Preto andre.proto@sjrp.unesp.br O que será abordado Hierarquias de protocolos (camadas) Questões de projeto relacionadas às camadas Serviços

Leia mais

4 Estrutura do Sistema Operacional. 4.1 - Kernel

4 Estrutura do Sistema Operacional. 4.1 - Kernel 1 4 Estrutura do Sistema Operacional 4.1 - Kernel O kernel é o núcleo do sistema operacional, sendo responsável direto por controlar tudo ao seu redor. Desde os dispositivos usuais, como unidades de disco,

Leia mais

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 2 - MODELO DE REFERÊNCIA TCP (RM TCP) 1. INTRODUÇÃO O modelo de referência TCP, foi muito usado pela rede ARPANET, e atualmente usado pela sua sucessora, a Internet Mundial. A ARPANET é de grande

Leia mais

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo Introdução O que é Protocolo? - Para que os pacotes de dados trafeguem de uma origem até um destino, através de uma rede, é importante

Leia mais

SISTEMAS OPERACIONAIS

SISTEMAS OPERACIONAIS SISTEMAS OPERACIONAIS Tópico 4 Estrutura do Sistema Operacional Prof. Rafael Gross prof.rafaelgross@fatec.sp.gov.br FUNÇÕES DO NUCLEO As principais funções do núcleo encontradas na maioria dos sistemas

Leia mais

Redes de Comunicações Capítulo 6.1

Redes de Comunicações Capítulo 6.1 Capítulo 6.1 6.1 - Técnicas de Comutação 1 WAN s Wide Area Networks Uma WAN é uma rede dispersa por uma grande área física, sob o controlo de uma administração única e baseada em circuitos dedicados (exemplo:

Leia mais

Redes de Computadores II

Redes de Computadores II Redes de Computadores II UDP Prof: Ricardo Luís R. Peres Tem como objetivo prover uma comunicação entre dois processos de uma mesma sessão que estejam rodando em computadores dentro da mesma rede ou não.

Leia mais

REDES DE COMPUTADORES

REDES DE COMPUTADORES REDES DE COMPUTADORES 09/2013 Cap.3 Protocolo TCP e a Camada de Transporte 2 Esclarecimentos Esse material é de apoio para as aulas da disciplina e não substitui a leitura da bibliografia básica. Os professores

Leia mais

GESTÃO DE SISTEMAS OPERACIONAIS II

GESTÃO DE SISTEMAS OPERACIONAIS II GESTÃO DE SISTEMAS OPERACIONAIS II Servidores Definição Servidores História Servidores Tipos Servidores Hardware Servidores Software Evolução do Windows Server Windows Server 2003 Introdução Windows Server

Leia mais

Redes de Computadores

Redes de Computadores Redes de Computadores Técnicas de comutação Escola Superior de Tecnologia e Gestão Instituto Politécnico de Bragança Maio de 2006 WAN s Wide Area Networks Uma WAN é uma rede dispersa por uma grande área

Leia mais

APLICAÇÃO REDE APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE LINK DE DADOS FÍSICA 1/5 PROTOCOLOS DE REDE

APLICAÇÃO REDE APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE LINK DE DADOS FÍSICA 1/5 PROTOCOLOS DE REDE 1/5 PROTOCOLOS DE O Modelo OSI O OSI é um modelo usado para entender como os protocolos de rede funcionam. Para facilitar a interconexão de sistemas de computadores, a ISO (International Standards Organization)

Leia mais

http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho vi http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Administração de Redes de Computadores Resumo de Serviços em Rede Linux Controlador de Domínio Servidor DNS

Leia mais

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

Leia mais

Capítulo 9 - Conjunto de Protocolos TCP/IP e Endereçamento. Associação dos Instrutores NetAcademy - Julho de 2007 - Página

Capítulo 9 - Conjunto de Protocolos TCP/IP e Endereçamento. Associação dos Instrutores NetAcademy - Julho de 2007 - Página Capítulo 9 - Conjunto de Protocolos TCP/IP e Endereçamento IP 1 História e Futuro do TCP/IP O modelo de referência TCP/IP foi desenvolvido pelo Departamento de Defesa dos Estados Unidos (DoD). O DoD exigia

Leia mais

Rede de Computadores

Rede de Computadores Escola de Ciências e Tecnologia UFRN Rede de Computadores Prof. Aquiles Burlamaqui Nélio Cacho Luiz Eduardo Eduardo Aranha ECT1103 INFORMÁTICA FUNDAMENTAL Manter o telefone celular sempre desligado/silencioso

Leia mais

REDE DE COMPUTADORES

REDE DE COMPUTADORES REDE DE COMPUTADORES Tipos de classificação das redes de acordo com sua topologia Prof. Airton Ribeiro de Sousa E-mail: airton.ribeiros@gmail.com 1 Ao longo da historia das redes, varias topologias foram

Leia mais

Everson Scherrer Borges João Paulo de Brito Gonçalves

Everson Scherrer Borges João Paulo de Brito Gonçalves Everson Scherrer Borges João Paulo de Brito Gonçalves 1 Tipos de Sistemas Operacionais Os tipos de sistemas operacionais e sua evolução estão relacionados diretamente com a evolução do hardware e das

Leia mais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos

Leia mais

MÓDULO 8 Modelo de Referência TCP/IP

MÓDULO 8 Modelo de Referência TCP/IP MÓDULO 8 Modelo de Referência TCP/IP A internet é conhecida como uma rede pública de comunicação de dados com o controle totalmente descentralizado, utiliza para isso um conjunto de protocolos TCP e IP,

Leia mais

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos MÓDULO 7 Modelo OSI A maioria das redes são organizadas como pilhas ou níveis de camadas, umas sobre as outras, sendo feito com o intuito de reduzir a complexidade do projeto da rede. O objetivo de cada

Leia mais

PARANÁ GOVERNO DO ESTADO

PARANÁ GOVERNO DO ESTADO A COMUNICAÇÃO NA INTERNET PROTOCOLO TCP/IP Para tentar facilitar o entendimento de como se dá a comunicação na Internet, vamos começar contando uma história para fazer uma analogia. Era uma vez, um estrangeiro

Leia mais

ALTERNATIVA PARA CONEXÃO VIA INTERNET DE IP MASCARADO A IP REAL

ALTERNATIVA PARA CONEXÃO VIA INTERNET DE IP MASCARADO A IP REAL Documento: Tutorial Autor: Iuri Sonego Cardoso Data: 27/05/2005 E-mail: iuri@scripthome.cjb.net Home Page: http://www.scripthome.cjb.net ALTERNATIVA PARA CONEXÃO VIA INTERNET DE IP MASCARADO A IP REAL

Leia mais

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET 1 IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET Daniel da Silva Carla E. de Castro Franco Diogo Florenzano Avelino daniel.silva1@ext.mpsa.com

Leia mais

Introdução ao Modelos de Duas Camadas Cliente Servidor

Introdução ao Modelos de Duas Camadas Cliente Servidor Introdução ao Modelos de Duas Camadas Cliente Servidor Desenvolvimento de Sistemas Cliente Servidor Prof. Esp. MBA Heuber G. F. Lima Aula 1 Ciclo de Vida Clássico Aonde estamos? Page 2 Análise O que fizemos

Leia mais

Capítulo 7 CAMADA DE TRANSPORTE

Capítulo 7 CAMADA DE TRANSPORTE Capítulo 7 CAMADA DE TRANSPORTE SERVIÇO SEM CONEXÃO E SERVIÇO ORIENTADO À CONEXÃO Serviço sem conexão Os pacotes são enviados de uma parte para outra sem necessidade de estabelecimento de conexão Os pacotes

Leia mais

Redes de Computadores Modelo de referência TCP/IP. Prof. MSc. Hugo Souza

Redes de Computadores Modelo de referência TCP/IP. Prof. MSc. Hugo Souza Redes de Computadores Modelo de referência TCP/IP Prof. MSc. Hugo Souza É uma pilha de protocolos de comunicação formulada em passos sequenciais de acordo com os serviços subsequentes das camadas pela

Leia mais

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET 2010/2011 1 Protocolo TCP/IP É um padrão de comunicação entre diferentes computadores e diferentes sistemas operativos. Cada computador deve

Leia mais

Programação Concorrente Processos e Threads

Programação Concorrente Processos e Threads Programação Concorrente Processos e Threads Prof. Eduardo Alchieri Processos O conceito mais central em qualquer sistema operacional é o processo Uma abstração de um programa em execução Um programa por

Leia mais

Sistema Operacional Correção - Exercício de Revisão

Sistema Operacional Correção - Exercício de Revisão Prof. Kleber Rovai 1º TSI 22/03/2012 Sistema Operacional Correção - Exercício de Revisão 1. Como seria utilizar um computador sem um sistema operacional? Quais são suas duas principais funções? Não funcionaria.

Leia mais

PROJETO E IMPLANTAÇÃO DE INTRANETS

PROJETO E IMPLANTAÇÃO DE INTRANETS PROJETO E IMPLANTAÇÃO DE INTRANETS Aulas : Terças e Quintas Horário: AB Noite [18:30 20:20hs] PROJETO E IMPLANTAÇÃO DE INTRANETS 1 Conteúdo O que Rede? Conceito; Como Surgiu? Objetivo; Evolução Tipos de

Leia mais

Arquiteturas de Rede. Prof. Leonardo Barreto Campos

Arquiteturas de Rede. Prof. Leonardo Barreto Campos Arquiteturas de Rede 1 Sumário Introdução; Modelo de Referência OSI; Modelo de Referência TCP/IP; Bibliografia. 2/30 Introdução Já percebemos que as Redes de Computadores são bastante complexas. Elas possuem

Leia mais

5 Estudo de caso: utilizando o sistema para requisição de material

5 Estudo de caso: utilizando o sistema para requisição de material 61 5 Estudo de caso: utilizando o sistema para requisição de material A fim de avaliar as características da arquitetura proposta e a corretude da implementação, realizamos experiências com cenários de

Leia mais

Profs. Deja e Andrei

Profs. Deja e Andrei Disciplina Sistemas Distribuídos e de Tempo Real Profs. Deja e Andrei Sistemas Distribuídos 1 Conceitos e Projetos de Sistemas Distribuídos Objetivos: Apresentar uma visão geral de processamento distribuído,

Leia mais

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Estruturas de Sistemas Operacionais Um sistema operacional fornece o ambiente no qual os programas são executados. Internamente,

Leia mais

Um pouco sobre Pacotes e sobre os protocolos de Transporte

Um pouco sobre Pacotes e sobre os protocolos de Transporte Um pouco sobre Pacotes e sobre os protocolos de Transporte O TCP/IP, na verdade, é formado por um grande conjunto de diferentes protocolos e serviços de rede. O nome TCP/IP deriva dos dois protocolos mais

Leia mais

Desenvolvendo para WEB

Desenvolvendo para WEB Nível - Básico Desenvolvendo para WEB Por: Evandro Silva Neste nosso primeiro artigo vamos revisar alguns conceitos que envolvem a programação de aplicativos WEB. A ideia aqui é explicarmos a arquitetura

Leia mais

TRIBUNAL DE CONTAS DO DISTRITO FEDERAL

TRIBUNAL DE CONTAS DO DISTRITO FEDERAL TRIBUNAL DE CONTAS DO DISTRITO FEDERAL TÉCNICO EM ADMINISTRAÇÃO PÚBLICA E ANALISTA (EXCETO PARA O CARGO 4 e 8) GABARITO 1. (CESPE/2013/MPU/Conhecimentos Básicos para os cargos 34 e 35) Com a cloud computing,

Leia mais

Processos (Threads,Virtualização e Migração de Código)

Processos (Threads,Virtualização e Migração de Código) Processos (Threads,Virtualização e Migração de Código) Roteiro Processos Threads Virtualização Migração de Código O que é um processo?! Processos são programas em execução. Processo Processo Processo tem

Leia mais

O modelo ISO/OSI (Tanenbaum,, 1.4.1)

O modelo ISO/OSI (Tanenbaum,, 1.4.1) Cenário das redes no final da década de 70 e início da década de 80: Grande aumento na quantidade e no tamanho das redes Redes criadas através de implementações diferentes de hardware e de software Incompatibilidade

Leia mais

3 SCS: Sistema de Componentes de Software

3 SCS: Sistema de Componentes de Software 3 SCS: Sistema de Componentes de Software O mecanismo para acompanhamento das chamadas remotas se baseia em informações coletadas durante a execução da aplicação. Para a coleta dessas informações é necessário

Leia mais

Protocolo TCP/IP. Neste caso cada computador da rede precisa de, pelo menos, dois parâmetros configurados:

Protocolo TCP/IP. Neste caso cada computador da rede precisa de, pelo menos, dois parâmetros configurados: Protocolo TCP/IP Neste caso cada computador da rede precisa de, pelo menos, dois parâmetros configurados: Número IP Máscara de sub-rede O Número IP é um número no seguinte formato: x.y.z.w Não podem existir

Leia mais

UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTÁTISTICA GRADUAÇÃO EM CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMUNICAÇÃO DE DADOS

UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTÁTISTICA GRADUAÇÃO EM CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMUNICAÇÃO DE DADOS UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTÁTISTICA GRADUAÇÃO EM CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMUNICAÇÃO DE DADOS PROFESSOR: CARLOS BECKER WESTPHALL Terceiro Trabalho

Leia mais

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com Última atualização: 20.03.2013 Conceitos Banco de dados distribuídos pode ser entendido como uma coleção de múltiplos bds

Leia mais

Relatorio do trabalho pratico 2

Relatorio do trabalho pratico 2 UNIVERSIDADE FEDERAL DE SANTA CATARINA INE5414 REDES I Aluno: Ramon Dutra Miranda Matricula: 07232120 Relatorio do trabalho pratico 2 O protocolo SNMP (do inglês Simple Network Management Protocol - Protocolo

Leia mais

FTIN Formação Técnica em Informática Módulo de Administração de Servidores de Rede AULA 02. Prof. Gabriel Silva

FTIN Formação Técnica em Informática Módulo de Administração de Servidores de Rede AULA 02. Prof. Gabriel Silva FTIN Formação Técnica em Informática Módulo de Administração de Servidores de Rede AULA 02 Prof. Gabriel Silva Temas da Aula de Hoje: Revisão da Aula 1. Redes LAN e WAN. Aprofundamento nos Serviços de

Leia mais

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança 3 SERVIÇOS IP 3.1 Serviços IP e alguns aspectos de segurança Os serviços IP's são suscetíveis a uma variedade de possíveis ataques, desde ataques passivos (como espionagem) até ataques ativos (como a impossibilidade

Leia mais

Serviço de datagrama não confiável Endereçamento hierárquico. Facilidade de fragmentação e remontagem de pacotes

Serviço de datagrama não confiável Endereçamento hierárquico. Facilidade de fragmentação e remontagem de pacotes IP Os endereços IP são números com 32 bits, normalmente escritos como quatro octetos (em decimal), por exemplo 128.6.4.7. A primeira parte do endereço identifica uma rede especifica na interrede, a segunda

Leia mais

Protocolos de Redes Revisão para AV I

Protocolos de Redes Revisão para AV I Protocolos de Redes Revisão para AV I 01 Aula Fundamentos de Protocolos Conceituar protocolo de rede; Objetivos Compreender a necessidade de um protocolo de rede em uma arquitetura de transmissão entre

Leia mais

MANUAL DE IMPLANTAÇÃO SISTEMA DE INVENTÁRIO CACIC GOVERNO FEDERAL SOFTWARE PÚBLICO

MANUAL DE IMPLANTAÇÃO SISTEMA DE INVENTÁRIO CACIC GOVERNO FEDERAL SOFTWARE PÚBLICO MANUAL DE IMPLANTAÇÃO SISTEMA DE INVENTÁRIO CACIC Configurador Automático e Coletor de Informações Computacionais GOVERNO FEDERAL SOFTWARE PÚBLICO software livre desenvolvido pela Dataprev Sistema de Administração

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS Modelo cliente e servidor Slide 2 Nielsen C. Damasceno Modelos Cliente - Servidor A principal diferença entre um sistema centralizado e um sistema distribuído está na comunicação

Leia mais

Sistemas Distribuídos Comunicação entre Processos em Sistemas Distribuídos: Middleware de comunicação Aula II Prof. Rosemary Silveira F. Melo Comunicação em sistemas distribuídos é um ponto fundamental

Leia mais

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv)

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv) Sistemas Operativos Threads 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv) Dos Processos para os Threads O conceito de thread foi introduzido na tentativa de

Leia mais

MODELO CLIENTE SERVIDOR

MODELO CLIENTE SERVIDOR SISTEMAS DISTRIBUÍDOS Modelo Cliente Servidor Modelo que estrutura um S.O. como um grupo de processos cooperantes, chamados servidores, que oferecem serviços a processos usuários, denominados clientes;

Leia mais

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Aula 1 Conceitos da Computação em Nuvem A computação em nuvem ou cloud computing

Leia mais

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 1 2 Revisão de Hardware 2.1 Hardware O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 2.1.1 Processador O Processador

Leia mais

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO 10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO UMA DAS GRANDES FUNÇÕES DA TECNOLOGIA É A DE FACILITAR A VIDA DO HOMEM, SEJA NA VIDA PESSOAL OU CORPORATIVA. ATRAVÉS DELA, ELE CONSEGUE

Leia mais

Evolução na Comunicação de

Evolução na Comunicação de Evolução na Comunicação de Dados Invenção do telégrafo em 1838 Código Morse. 1º Telégrafo Código Morse Evolução na Comunicação de Dados A evolução da comunicação através de sinais elétricos deu origem

Leia mais

Redes de Computadores. Camada de Transporte

Redes de Computadores. Camada de Transporte Redes de Computadores Camada de Transporte Objetivo! Apresentar as características da camada de transporte da arquitetura TCP/IP! Apresentar os serviços fornecidos pela camada de transporte! Estudar os

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS Comunicação coletiva Modelo Peer-to-Peer Slide 6 Nielsen C. Damasceno Introdução Os modelos anteriores eram realizado entre duas partes: Cliente e Servidor. Com RPC e RMI não é possível

Leia mais

Sistemas Operacionais Gerência de Dispositivos

Sistemas Operacionais Gerência de Dispositivos Universidade Estadual de Mato Grosso do Sul UEMS Curso de Licenciatura em Computação Sistemas Operacionais Gerência de Dispositivos Prof. José Gonçalves Dias Neto profneto_ti@hotmail.com Introdução A gerência

Leia mais

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Aula 3 Virtualização de Sistemas 1. Conceito Virtualização pode ser definida

Leia mais

Aula 6 Modelo de Divisão em Camadas TCP/IP

Aula 6 Modelo de Divisão em Camadas TCP/IP Aula 6 Modelo de Divisão em Camadas TCP/IP Camada Conceitual APLICATIVO TRANSPORTE INTER-REDE INTERFACE DE REDE FÍSICA Unidade de Dados do Protocolo - PDU Mensagem Segmento Datagrama /Pacote Quadro 01010101010100000011110

Leia mais

Manual SAGe Versão 1.2 (a partir da versão 12.08.01)

Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação

Leia mais

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação Multiplexadores Permitem que vários equipamentos compartilhem um único canal de comunicação Transmissor 1 Receptor 1 Transmissor 2 Multiplexador Multiplexador Receptor 2 Transmissor 3 Receptor 3 Economia

Leia mais

Arquitetura dos Sistemas de Informação Distribuídos

Arquitetura dos Sistemas de Informação Distribuídos Arquitetura dos Sistemas de Informação Distribuídos Quando se projeta um sistema cuja utilização é destinada a ser feita em ambientes do mundo real, projeções devem ser feitas para que o sistema possa

Leia mais

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores SISTEMAS OPERACIONAIS Maquinas Virtuais e Emuladores Plano de Aula Máquinas virtuais Emuladores Propriedades Benefícios Futuro Sistemas de Computadores Os sistemas de computadores são projetados com basicamente

Leia mais

Redes de Computadores II. Professor Airton Ribeiro de Sousa

Redes de Computadores II. Professor Airton Ribeiro de Sousa Redes de Computadores II Professor Airton Ribeiro de Sousa 1 PROTOCOLO IP IPv4 - Endereçamento 2 PROTOCOLO IP IPv4 - Endereçamento A quantidade de endereços possíveis pode ser calculada de forma simples.

Leia mais

Conceitos de Banco de Dados

Conceitos de Banco de Dados Conceitos de Banco de Dados Autor: Luiz Antonio Junior 1 INTRODUÇÃO Objetivos Introduzir conceitos básicos de Modelo de dados Introduzir conceitos básicos de Banco de dados Capacitar o aluno a construir

Leia mais

Automação de Locais Distantes

Automação de Locais Distantes Automação de Locais Distantes Adaptação do texto Improving Automation at Remote Sites da GE Fanuc/ Water por Peter Sowmy e Márcia Campos, Gerentes de Contas da. Nova tecnologia reduz custos no tratamento

Leia mais

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 06: Threads Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Objetivos Introduzir o conceito de thread Discutir as APIs das bibliotecas de threads Pthreads, Win32

Leia mais

Capítulo 4 - Roteamento e Roteadores

Capítulo 4 - Roteamento e Roteadores Capítulo 4 - Roteamento e Roteadores 4.1 - Roteamento Roteamento é a escolha do módulo do nó de origem ao nó de destino por onde as mensagens devem transitar. Na comutação de circuito, nas mensagens ou

Leia mais

Prof.: Roberto Franciscatto. Capítulo 1.2 Aspectos Gerais

Prof.: Roberto Franciscatto. Capítulo 1.2 Aspectos Gerais Sistemas Operacionais Prof.: Roberto Franciscatto Capítulo 1.2 Aspectos Gerais Estrutura do Sistema Operacional Principais Funções do Sistema Operacional Tratamento de interrupções e exceções Criação e

Leia mais

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza Sistemas Distribuídos Processos I Prof. MSc. Hugo Souza Até agora vimos a organização como um todo dos SDS, com o mapeamento estrutural e suas devidas características descritas em elementos, regras, conceitos,

Leia mais