ine 5645 – programação paralela e distribuída
DESCRIPTION
INE 5645 – Programação Paralela e Distribuída. Prof. João Bosco M. Sobral INE - UFSC [email protected] Agosto de 2013. Conteúdo Programático da Disciplina. Unidade 1. Introdução : Plano de Ensino e Histórico, - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/1.jpg)
INE 5645 – Programação Paralelae Distribuída
Prof. João Bosco M. SobralINE - UFSC
Agosto de 2014
![Page 2: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/2.jpg)
Conteúdo Programático da Disciplina
Unidade 1. Introdução : Plano de Ensino e Histórico,
Unidade 2. Programação Concorrente (Pseudo-Paralela) - Processos e Threads
Unidade 3. Programação Concorrente: Mecanismos de Sicronização - Monitor - Locks - Semáforos
Unidade 4. Programação Distribuída: Comunicação e Invocação - Datagram Sockets
- TPC Stream Sockets - Multicast Socket
Unidade 5. Programação Distribuída: - Eventos e Notificações - Remote Method Invocation ( RMI )
![Page 3: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/3.jpg)
Atividades da Disciplina
![Page 4: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/4.jpg)
Recursos
Softwares NetBeans ou Eclipse, Java JDK
Página da disciplina http://www.inf.ufsc.br/~bosco/ http://www.inf.ufsc.br/~lau.lung/INE5645/
Moodle (para divulgação e postagem de tarefas)
![Page 5: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/5.jpg)
UNIDADE 1-1
INTRODUÇÃO À PROGRAMAÇÃO CONCORRENTE E DISTRIBUÍDA
![Page 6: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/6.jpg)
Tópicos
História
Programação Concorrente
Programação Paralela e Distribuída
Vantagens e Dificuldades
Plataformas de Execução
Suporte Computacional
![Page 7: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/7.jpg)
Histórico
O campo da programação paralela e distribuída surgiu do campo da programação concorrente.
O campo da Programação Concorrente iniciou uma explosiva expansão desde 1968.
![Page 8: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/8.jpg)
Histórico
1968 E. W. Dijkstra: Cooperando Processos Seqüenciais.
1971 E. W. Dijkstra: Ordem hierárquica de processos seqüenciais.
1973 C. L. Liu e J. W. Layland : Algoritmos de escalonamento para multiprogramação em ambiente de tempo real.
E.W. Dijkstra
![Page 9: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/9.jpg)
Histórico
1974 C. A. R. Hoare: Monitores - conceito para estruturar sistemas operacionais.
1974 Lamport: Uma nova solução para o problema da programação concorrente de Dijkstra.
Leslie Lamport
![Page 10: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/10.jpg)
Histórico
1976 J. H. Howard: Provando monitores.
1976 S. Owicki e D. Gries: Verificando propriedades de programas paralelos: uma abordagem axiomática.
1977 P. Brinch Hansen: A arquitetura deprogramas concorrentes.
P. Brinch Hansen
![Page 11: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/11.jpg)
Histórico
1978 C. A. R. Hoare: Comunicação deProcessos Sequenciais.
1978 E. W. Dijkstra, L. Lamport, A. J. Martin, C. S. Sholten e E. F. M. Steffens: Um exercício em cooperação para “garbage collection”.
1980 E. W. Dijkstra e C. S. Sholten: Detecção e terminação.
C. A. R. Hoare
![Page 12: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/12.jpg)
Histórico
1981 G. Ricart e A. Agrawala: Um algoritmo ótimo pra exclusão mútua distribuída.
1981 G. L. Peterson: O problema da exclusão mútua.
1982 J. Misra e K. M. Chandy: Detecção de terminação em Communicating Sequencial Processes.
![Page 13: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/13.jpg)
Histórico
1983 G. L. Peterson: Uma nova solução para o prolema de programação concorrente de Lamport usando variáveis compartilhadas.
1983 DoD, USA: Linguagem de Programação Ada.
1985 D. Gelernter: A Linguagem Linda
David Gelernter
![Page 14: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/14.jpg)
O que é Programação Concorrente
“Um programa ‘ordinário’ consiste de declarações de dados e instruções executáveis em uma linguagem de programação.”
M. Ben-Ari, Principles of Concurrent and Distributed Programming
![Page 15: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/15.jpg)
O que é Programação Concorrente
As instruções são executadas sequencialmente sobre um processador, o qual aloca memória o código e para os dados do programa.
Um programa concorrente é um conjunto de programas sequenciais ordinários os quais são executados em uma abstração de paralelismo.
![Page 16: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/16.jpg)
O que é Programação Concorrente
Usamos a palavra processo para programas sequenciais e reservamos a palavra programa para o conjunto de processos.
![Page 17: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/17.jpg)
Pseudo-Paralelismo
Um programa concorrente é executado por se compartilhar o poder de processamento de um único processador entre os processos desse programa.
Unidade de Processamento Concorrente: Processo
![Page 18: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/18.jpg)
Abstração para Concorrência
O paralelismo é abstrato porque não requeremos que um processador físico seja usado para executar cada processo.
Pseudo-Paralelismo
![Page 19: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/19.jpg)
Exemplos de Concorrência
Sobreposição de I/O e Processamento (Overlapped I/O and Computation)
Multiprogramação (Multi-programming)
Multi-tarefação (Multi-Tasking)
![Page 20: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/20.jpg)
Sobreposição de I/O e Computação
No início dos tempos dos primeiros SOs, controlar I/O não podia ser feito concorrentemente com outra computação sobre um único processador.
Mas a evolução do SOs, fez surgir a concorrência, retirando da computação principal, alguns microsegundos necessários para controlar I/O.
![Page 21: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/21.jpg)
Sobreposição de I/O e Computação
Entretanto, é mais simples programar os controladores de I/O como processos separados, os quais são executados em paralelo com o processo de computação principal.
![Page 22: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/22.jpg)
Multiprogramação
Uma generalização de sobreposição de I/O dentro de um único programa é sobrepor a computação e I/O de diversos programas.
![Page 23: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/23.jpg)
Multiprogramação
É a execução concorrente de diversos processos independentes sobre um processador.
![Page 24: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/24.jpg)
Time-Slicing Fatia de tempo.
Compartilhar o processador entre diversas computações de processos.
Ao contrário do que um processo esperar para o término de uma operação de I/O, o processador é compartilhado através de um hardware (timer) usado para interromper uma computação de um processo em intervalos pre-determinados.
![Page 25: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/25.jpg)
Time-Slicing
Um programa do SO chamado Scheduler é executado para determinar qual processo deve ser permitido executar no próximo intervalo.
O Scheduler pode levar em consideração, prioridades dos processos.
![Page 26: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/26.jpg)
Interactive Time-Sharing Systems
Usam multiprogramação com time-sliced, para dar a um grupo de usuários a ilusão que cada um tem acesso a um computador dedicado.
![Page 27: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/27.jpg)
Multi-Tasking
Resolvendo um problema por decomposição, dentro de diversos processos concorrentes.
A execução de diversos aplicativos (programas) por um único usuário, eu uma máquina de um único processador.
![Page 28: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/28.jpg)
Correção de um programa concorrente
Por causa das possíveis interações entre os processos que compreendem um programa concorrente é difícil escrever um programa concorrente correto.
Para interagirem, processos precisam se sincronizar e se comunicar diretamente ou não.
![Page 29: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/29.jpg)
Dois processos incrementando uma variável N: Integer := 0;
Process P1 is begin N := N + 1; end P1;
Process P2 is begin N := N + 1; end P2;
![Page 30: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/30.jpg)
Aplicando a abstração
Se o compilador traduzir as declarações de alto nível em instruções INC, qualquer intercalação das sequências de instruções dos dois processos darão o mesmo valor.
![Page 31: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/31.jpg)
Exemplo: Computação com a instrução INC
Processo Instrução Valor de NInicialmente 0
P1 INC N 1
P2 INC N 2
Processo Instrução Valor de NInicialmente 0
P2 INC N 1
P1 INC N 2
![Page 32: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/32.jpg)
Computação em Registradores
Por outro lado, se todas computações são feitas em registradores, o código compilado pareceria como:
![Page 33: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/33.jpg)
Computação com Registradores
Processo Instrução N Reg (P1) Reg(P2)
Inicialmente 0
P1 LOAD Reg, N 0 0
P2 LOAD Reg, N 0 0 0
P1 ADD Reg, #1 0 1 0
P2 ADD Reg, #1 0 1 1
P1 STORE Reg, N 1 1 1
P2 STORE Reg, N 1 1 1
![Page 34: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/34.jpg)
Resultado
A figura anterior mostra que algumas intercalações dão resposta errada.
Então, é extremamente importante definir exatamente quais instruções são para ser intercaladas, de forma de o programa concorrente seja correto em sua execução.
![Page 35: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/35.jpg)
Correção de um programa concorrente
Programação concorrente pode expressar a concorrência requerida, provendo instruções de programação para a sincronização e comunicação entre processos.
![Page 36: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/36.jpg)
Ferramentas de Correção
Um programador pode ser totalmente confundido pelo comportamento que um programa concorrente pode exibir.
Ferramentas são necessárias para especificar, programar e verificar propriedades desses programas.
![Page 37: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/37.jpg)
Programação Concorrente
Estuda a abstração que é usada sobre as sequências de instruções atômicas de execução intercalada.
Define o que significa um programa concorrente ser correto e introduz os métodos usados para provar correção.
![Page 38: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/38.jpg)
Programação Concorrente
Trata as primitivas e as estruturas de programação concorrente clássicas:
Semáforos Monitores Threads
![Page 39: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/39.jpg)
Threads
A unidade de processamento concorrente mais atual, devido a capacidade de processamento dos processadores ter aumentado.
O que vamos realmente executar !!!
![Page 40: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/40.jpg)
Panorama Atual
Poder de processamento das máquinas vem crescendo rapidamente.
Grande parte das máquinas são interligadas em rede.
Sistemas e aplicações estão cada vez mais complexos:- Funcionalidade, Interfaceamento gráfico, Comunicação, ...
- Maior carga, Maior número de usuários, ...- Melhor tempo de resposta, Maior confiabilidade
Programação Paralelae Distribuída
![Page 41: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/41.jpg)
Programação Paralela
“É uma forma de computação em que vários cálculos são realizados simultaneamente, operando sob o princípio de que um grande problema, geralmente, pode ser dividido em problemas menores, que então são resolvidos em paralelo”.
Consiste em executar simultaneamente várias partes de um mesmo programa, dividido em partes.
Tornou-se possível, a partir de máquinas de arquitetura paralela / sistemas operacionais distribuídos (multi-tarefa, multithread e paralelos).
![Page 42: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/42.jpg)
Exemplos de Programação Paralela
Aplicações são executadas em paralelo:
Em um mesmo processador (concorrentemente, pseudo-paralelismo).
Em uma máquina multiprocessada.
Em um grupo de máquinas interligadas que se comporta como uma só máquina.
![Page 43: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/43.jpg)
Sistemas Distribuídos “Coleção de computadores independentes que se
apresenta ao usuário como um sistema único e consistente.”
Andrew Tanenbaum
“Coleção de computadores autônomos interligados através de uma rede de computadores e equipados com software que permita o compartilhamento dos recursos do sistema: hardware, software e dados”
George Coulouris
![Page 44: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/44.jpg)
Programação Distribuída
Aplicações são executadas em máquinas diferentes interligadas por uma rede:
Intranets
Internet
Outras redes públicas ou privadas
![Page 45: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/45.jpg)
Diferenças
Acoplamento
Sistemas paralelos são fortemente acoplados: compartilham hardware ou se comunicam através de um barramento
de alta velocidade.
Sistemas distribuídos são fracamente acoplados: não compartilham hardware e se comunicam através de uma rede.
![Page 46: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/46.jpg)
Diferenças
Previsibilidade
O comportamento de sistemas paralelos é mais previsível.
Já os sistemas distribuídos são mais imprevisíveis devido ao uso da rede e a falhas que podem ocorrer na comunicação.
![Page 47: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/47.jpg)
Diferenças
Influência do Tempo
Sistemas distribuídos são bastante influenciados pelo tempo de comunicação pela rede; em geral não há uma referência de tempo global.
Em sistemas distribuídos, o tempo de troca de mensagens pode ser desconsiderado.
![Page 48: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/48.jpg)
Diferenças
Controle
Em geral em sistemas paralelos se tem o controle de todos os recursos computacionais;
Já os sistemas distribuídos tendem a empregar também recursos de terceiros.
![Page 49: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/49.jpg)
Vantagens
Usam melhor o poder de processamento Apresentam um melhor desempenho Permitem compartilhar dados e recursos Podem apresentar maior confiabilidade Permitem reutilizar serviços já disponíveis Atendem um maior número de usuários ...
![Page 50: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/50.jpg)
Dificuldades
Desenvolver, gerenciar e manter o sistema. Controlar o acesso concorrente a dados e a recursos compartilhados. Evitar que falhas de máquinas ou da rede comprometam o funcionamento do sistema. Garantir a segurança do sistema e o sigilo dos dados trocados entre máquinas Lidar com a heterogeneidade do ambiente. ...
![Page 51: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/51.jpg)
Plataformas de Execução Um S.O. multitarefa permite simular o paralelismo em um
único processador, alternando a execução de processos.
Um processador com núcleo múltiplo permite paralelismo real entre processos, executando múltiplas instruções por ciclo.
![Page 52: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/52.jpg)
Plataformas de Execução
Uma Placa-Mãe Multiprocessador permite que cada processador execute um processo.
![Page 53: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/53.jpg)
Plataformas de Execução
Cluster é o nome dado a um sistema montado com mais de um computador, cujo objetivo é fazer com que todo o processamento da aplicação seja distribuído aos computadores, mas de forma que pareça com que eles sejam um computador só.
Com isso, é possível realizar processamentos que até então somente computadores de alta performance seriam capazes de fazer.
![Page 54: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/54.jpg)
Plataformas de Execução Um cluster é uma solução de baixo custo para
processamento paralelo de alto desempenho.
![Page 55: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/55.jpg)
Suporte Computacional Suportes para Computação Paralela e Distribuída devem
fornecer:
Mecanismos para execução paralela ou distribuída de programas.
Mecanismos para controle de concorrência. Mecanismos para comunicação entre processos / threads em
paralelo / distribuídos Ferramentas e mecanismos para desenvolvimento, testes,
gerenciamento, controle, segurança, tolerância a faltas, ...
![Page 56: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/56.jpg)
Suporte Computacional para Computação Paralela Sistemas Operacionais Multi-Tarefa: permitem a troca de
contexto entre processos / threads. Ex.: Windows, Linux, Solaris, HP-UX, AIX, etc.
Linguagens Multi-Tarefa: permitem escrever programas pseudos-paralelos ou paralelos, usando um único processador. Ex.: Java, C++
Sistemas Operacionais Paralelos: permitem usar vários processadores em uma máquina. Ex.: Linux, Solaris, Windows, etc.
Suportes para Programação Paralela permitem criar uma máquinas virtuais paralelas. Ex.: PVM
![Page 57: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/57.jpg)
Suporte Computacional para SOs / Linguagens Multi-tarefas
Processador
Sistema Operacional / Linguagem Multi-tarefa
Aplicação Aplicação
Serviço Aplicação
Máquina
Apliacação Serviço
![Page 58: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/58.jpg)
Suporte Computacional para SOs Paralelos
Processador 1
Sistema Operacional Paralelo
Aplicação Aplicação
Serviço Aplicação
Máquina Paralela
Apliacação Serviço
Processador N...
![Page 59: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/59.jpg)
Suporte Computacional para Computação Paralela
Hardware
Linguagem / Suporte para Computação Paralela
Aplicação Aplicação
Serviço Aplicação
Máquina Virtual Paralela
Apliacação Serviço
Hardware...
Sistema Operacional Sistema Operacional...
![Page 60: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/60.jpg)
Computação com Objetos Distribuídos
Modelo Cliente-Servidor
Mas com objetos distribuídos na rede.
![Page 61: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/61.jpg)
Suporte Computacional para Programação Distribuída Suporte para Computação Distribuída
APIs e Bibliotecas: fornecem rotinas para comunicação entre processosEx.: UNIX Sockets, WinSock, java.net, ... .
Middleware para Programação Distribuída: fornece suporte para criar / executar programas distribuídos. Ex: Java RMI, CORBA RMI.
Servidores de Aplicação: permitem o acesso a aplicações via rede. Ex.: Tomcat, JBoss, ... .
Sistemas operacionais distribuídos caíram em desuso por não suportarem heterogeneidade de ambiente.
![Page 62: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/62.jpg)
API / Biblioteca - RPC (Remote Procedure Call)
Hardware Hardware
Sistema Operacional Sistema Operacional
Aplicação
API / Biblioteca
Aplicação
Serviço Aplicação
Máquina 1 Máquina N
Apliacação Serviço
API / Biblioteca
![Page 63: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/63.jpg)
Middleware para Programação Distribuída
Hardware Hardware
Sistema Operacional Sistema Operacional
Aplicação
Middleware para Programação Distribuída
Aplicação
Serviço Aplicação
Máquina 1 Máquina N
Apliacação Serviço
![Page 64: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/64.jpg)
Servidor de Aplicação
Hardware Hardware
Sistema Operacional Sistema Operacional
Cliente
Cliente
Cliente Servidor de Aplicação
Aplicação
Aplicação Aplicação
Máquina 1 Máquina N
![Page 65: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/65.jpg)
Computação com Web Services
Modelo Cliente-Servidor
Mas, com servidor que visualiza serviços em outros servidores, usando uma linguagem única de comunicação entre as partes (XML).
![Page 66: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/66.jpg)
Conceito de Grid Computacional
Uma rede na qual o usuário se conecta para obter Serviços Computacionais que agregam recursos sob demanda (ex.: ciclos, armazenamento, software, periféricos, etc).
A visão estabelece uma metáfora com a rede de energia elétrica.
![Page 67: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/67.jpg)
Metáfora
A Rede Elétrica disponibiliza energia elétrica sob demanda e esconde do usuário detalhes como a origem da energia e a complexidade da malha de transmissão e distribuição.
Desta forma, se temos um equipamento elétrico, simplesmente o conectamos na tomada para que ele receba energia.
![Page 68: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/68.jpg)
COMPUTAÇÃO EM GRID
Imagine que você vai viajar com os amigos, e, pra não sobrecarregar apenas uma pessoa de levar a parte de alimentação, vocês resolvem dividir. Uma pessoa leva macarrão a vontade, a outra leva a carne, a outra leva as saladas, outra leva o arroz e por fim o último leva só o feijão. Legal. Agora, quando vocês chegarem, dividem as tarefas de preparar o alimento, e finalmente, todos podem se fartar de todo o alimento onde cada um trouxe a sua parte. Computação em grade funciona assim!
![Page 69: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/69.jpg)
Computação em Grid
Imagine 10 computadores Cada computador disponibiliza os seus recursos tais como CPU (Processador), Memória RAM, HD para o armazenamento. Pronto!
Agora você precisa de um Sistema de Computação em Grid, que vai permitir ao usuário, através de um único computador, acessar todos os recursos disponíveis em todos os outros computadores. Assim você cria um SUPER COMPUTADOR! Legal!
![Page 70: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/70.jpg)
Grid Computacional - Acesso transparente a serviços e recursos
![Page 71: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/71.jpg)
Arquitetura de um Grid Computacional
![Page 72: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/72.jpg)
Ilustração da arquitetura OurGrid
![Page 73: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/73.jpg)
Computação em Nuvem
O conceito de computação em nuvem (em inglês, cloud computing) refere-se à utilização da memória e das capacidades de armazenamento e cálculo de computadores e servidores compartilhados e interligados por meio da Internet, seguindo o princípio da computação em grid.
![Page 74: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/74.jpg)
COMPUTAÇÃO EM NUVEM
Imagine a mesma situação anterior. Você vai viajar, só que ninguém levou nada! Após chegarem lá você precisa de comida! Óbvio! Só que neste caso vocês foram avisados que lá onde vocês iam, existe um galpão no meio do mato e lá tem tudo que vocês precisam.
![Page 75: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/75.jpg)
Computação em Nuvem
Ninguém sabe onde fica fisicamente este galpão e nem como ele é abastecido, mas isso não é tão importante. Basta ligar para um número que foi disponibilizado para vocês, passando o número do teu quarto e o que você deseja, que tudo será entregue na tua mesa. Legal hein!
![Page 76: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/76.jpg)
Computação em Nuvem
Bom, na prática, para utilizar o conceito de Computação em Nuvem, você ainda precisa seguir o princípio de computação em Grid, pois você continua utilizando recursos disponibilizados por outros.
![Page 77: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/77.jpg)
Computação em Nuvem
Só que desta vez os recursos que os outros disponibilizam não está na ‘terra’ onde você se encontra, mas está nas ‘nuvens’ onde está a INTERNET! Assim você precisa apenas de dispositivos de entrada e saída pois os recursos de armazenamento, memória e processamento estarão todos disponíveis na ‘nuvem’. O acesso é realizado de forma remota.
![Page 78: INE 5645 – Programação Paralela e Distribuída](https://reader035.vdocuments.pub/reader035/viewer/2022062323/5681637d550346895dd45df0/html5/thumbnails/78.jpg)
Computação em Nuvem (Cloud Computing)