Buscar

Introdução Sistemas Distribuidos e Prog Paralela

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistemas Distribuídos e 
Programação Paralela
Prof. Me. Gustavo de Souza Neves
Introdução
❑De forma geral, a computação tem uma relação
muito forte com o avanço tecnológico.
❑Com a modernização da computação, cria-se
novas maneira e novos conceitos de processar a
informação. Busca do aperfeiçoamento.
❑A indústria computacional avançou, há duas
décadas os sistemas computacionais eram
centralizados (mainframes) – onerosos e
fisicamente grande. Por falta de interconexão
entre eles, operavam separadamente
Introdução
❑Este cenário mudou com o avanço tecnológico 
da interconexão e de microprocessadores, 
compatíveis com mainframes, a custo mais 
acessível.
❑As redes de computadores se tornaram mais
confiáveis e permitiram uma aumento na taxa de
transmissão de dados.
❑Esta combinação de fatores levou o
desenvolvimento de uma nova forma de
organização dos sistemas computacionais.
Introdução
❑Interconexão, via rede, de vários computadores,
não necessariamente homogêneos
❑Geralmente denominados de sistemas
distribuídos (SD).
❑Exemplo de um sistema distribuído é a Internet
❑Os programas em execução nos computadores
conectados a internet interagem enviando
mensagens através de um meio de comunicação
comum.
Exemplo de um Sistema Distribuído
Conceitos
❑Várias definições de Sistemas Distribuídos são
apresentadas pelas literaturas. Nenhuma delas são
totalmente satisfatória.
❑Maioria delas, as vezes, são discordante entre si.
❑Para Lamport, sistema distribuído é aquele que
impede você de obter qualquer serviço quando falha
uma máquina que você nem imagina que exista.
❑Segundo Tanenbaum (1995), um Sistema Distribuído
é uma coleção de computadores independentes que
aparecem para os usuários do sistema como um
único computador.
Conceitos
❑Segundo Enslow, num sistema distribuído deve haver:
▪ Multiplicidade de recursos de uso geral (físicos e lógicos),
cuja concessão a tarefas específicas deve ocorrer de forma
dinâmica;
▪ Distribuição física desses recursos, interagindo através de
uma rede de comunicação;
▪ Existência de um sistema operacional de alto nível para
unificar e integrar o controle dos componentes distribuídos;
▪ Transparência do sistema, permitindo que os serviços sejam
requisitados somente por nome;
▪ Autonomia cooperativa para estabelecimento de conexões
e troca de informações.
Conceitos
❑Para Mullender & Schroeder os sistemas 
possuem alguns sintomas para identificação de 
um sistema distribuído:
▪Múltiplos elementos de processamento;
▪ Existência de hardware de interconexão;
▪ As falhas dos elementos de processamento 
podem ocorrer de forma independentemente;
▪ Autonomia cooperativa.
Conceitos
❑Para Coulouris G. (2007), um sistema distribuído é
caracterizado pelo uma rede de computadores que se
comunicam através de mensagens e coordenam suas
ações.
❑Qual o melhor conceito?
❑O conceito de transparência, ou seja, múltiplos
processadores invisíveis ao usuário é de fato uma
caracterização dos sistemas distribuídos.
❑ No contexto, pode-se definir os sistemas distribuídos
como sendo um grupo de computadores com
processamento autônomo, interconectados por uma
rede, transparente ao usuário.
Vantagens x Desvantagens
❑A utilização dos sistemas distribuídos apresenta algumas
vantagens em relação aos sistemas centralizados:
▪ Extensibilidade: possibilidade de crescimento gradativo, com
a instalação de novos software e hardware, sem prejuízos ao
desempenho. Maior facilidade na manutenção de software e
ou hardware.
▪ Compartilhamento de recursos: permite o compartilhamento
de recursos físicos e lógicos de alto custo, tornando-o com
baixo custo. Ex.: servidores de arquivos, banco de dados,
impressoras, correio eletrônico, etc.
▪ Replicação: diversas cópias de um mesmo arquivo
armazenadas em locais distintos aumentando a confiabilidade.
Vantagens x Desvantagens
▪Disponibilidade: a replicação, tanto de
hardware quanto de software, aumenta
a disponibilidade do sistema, pois a falha
de um elemento não interrompe a
operação do sistema global.
▪Mobilidade dos usuários: os usuários
ficam livres para acessar o sistema de
diversos pontos.
Vantagens x Desvantagens
❑Os sistemas distribuídos também apresentam algumas
desvantagens, entre elas, podem ser destacadas:
▪ Desempenho / Confiabilidade: o desempenho e a
confiabilidade está relacionado a rede utilizada. A rede
pode tornar-se o gargalo, principalmente se existirem
servidores sobrecarregados de serviços.
▪ Complexidade: elementos individuais são mais
simples, mas com a utilização de um conjunto de
componentes cria-se uma complexidade
razoavelmente grande, tanto para implementação do
software e do hardware.
Taxonomia para os Sist. Distribuídos
❑Mesmo considerando que todos os sistemas distribuídos são
constituídos de vários processadores, existem diversas formas
de se organizar o hardware de tais sistemas, especialmente de
como implementar a conexão de seus componentes, e de
como eles se comunicam.
❑Há diversos sistemas de classificação para computadores com
vários processadores, a taxonomia de Flynn é mais citada.
❑A classificação de Flynn divide as arquiteturas em quatro
categorias de máquinas, conforme a quantidade de fluxo de
instruções e de dados.
❑Fluxo de instruções é uma sequencia de execuções das
instruções realizadas pelo processador sobre o fluxo de dados.
Taxonomia para os Sist. Distribuídos
❑As categorias são:
▪ SISD (Single Instruction Single Data Stream): possui apenas
um fluxo de instruções e um fluxo de dados, independente
da capacidade do computador.
▪ SIMD (Single Instruction Multiple Data Stream): único
fluxo de instrução sobre vários fluxos de dados. Vários
processadores controlados por uma única unidade de
controle, executando simultaneamente a mesma
instrução em diversos conjuntos de dados.
Arquiteturas SIMD são utilizadas, por exemplo, para
manipulação de matrizes e processamento de imagens
(processamento vetorial).
Taxonomia para os Sist. Distribuídos
❑As categorias são:
▪ MISD (Multiple Instruction Single Data Stream): múltiplos
fluxos de instruções para um único fluxo de dados. Envolve
múltiplos processadores executando diferentes instruções
em um único conjunto de dados. apenas um esquema
teórico.
▪ MIMD (Multiple Instruction Multiple Data Stream):
composta por múltiplos fluxos de instruções e múltiplos
fluxos de dados. Envolve múltiplos processadores
executando diferentes instruções em diferentes
conjuntos de dados, de maneira independente.
Taxonomia para os Sist. Distribuídos
❑Todos os sistemas distribuídos são MIMD, portanto o
esquema de Flynn não nos interessa no todo, somente esta
categoria.
❑Segundo Tanenbaum as máquinas MIMD podem ser divididas
em dois grupos (Figura 1.1):
Taxonomia para os Sist. Distribuídos
❑Multiprocessadores (Memória Compartilhada): existe um único
espaço de endereçamento virtual (memória) que é compartilhado
por todos os processadores. Se qualquer dos processadores
escrever, por exemplo, o valor 5 no endereço 4.000, qualquer outro
processador que venha a ler posteriormente o conteúdo de seu
endereço 4.000 obterá o valor 5.
❑Multicomputadores (Memória Distribuída): cada máquina tem seu
próprio espaço de endereçamento (memória). Se um processador
escreve o valor 5 no endereço 4.000, quando outro processador vier
a ler o endereço 4.000, encontrará algo diferente de 5, e não o valor
que o outro processador escreveu no seu próprio endereço 4.000. A
escrita do valor 5 não afeta de maneira nenhuma a sua memória.
Exemplo: um conjunto de computadores pessoais interconectados
através de uma rede local.
Taxonomia para os Sist. Distribuídos
❑Multiprocessadores (Memória Compartilhada): existe um único
espaço de endereçamento virtual (memória) que é compartilhado
por todos os processadores. Se qualquer dos processadores
escrever, por exemplo, o valor 5 no endereço 4.000, qualquer outro
processador que venha a ler posteriormente o conteúdo de seu
endereço 4.000 obterá o valor 5.
❑Multicomputadores (Memória Distribuída): cadamáquina tem seu
próprio espaço de endereçamento (memória). Se um processador
escreve o valor 5 no endereço 4.000, quando outro processador vier
a ler o endereço 4.000, encontrará algo diferente de 5, e não o valor
que o outro processador escreveu no seu próprio endereço 4.000. A
escrita do valor 5 não afeta de maneira nenhuma a sua memória.
Exemplo: um conjunto de computadores pessoais interconectados
através de uma rede local.
Taxonomia para os Sist. Distribuídos
❑ Os Sistemas com Múltiplos Processadores
Caracterizam-se por possuir duas ou mais CPU’s
interligadas e trabalhando em conjunto. A
vantagem deste sistema é permitir que vários
programas sejam executados ao mesmo tempo
ou que um mesmo programa seja subdividido
em partes para serem executadas
simultaneamente em mais de um processador
Taxonomia para os Sist. Distribuídos
❑Segundo Machado e Maia (2002), as principais
características desses sistemas são:
❑Escalabilidade: é a capacidade de ampliar o sistema apenas
adicionando novos processadores. Ambientes com processadores
únicos, em casos de falhas, seria necessário substituir todo o
sistema.
❑Disponibilidade: mantem sistema em operação mesmo em casos
de falhas. Em caso de um processador falhar, os demais podem
assumem suas funções, imperceptível ao aos usuários e suas
aplicações.
❑Balanceamento de carga: Distribuição do processamento entre
os diversos processadores da configuração a partir da carga de
trabalho de cada processador, melhorando, assim, o desempenho
do sistema como um todo.
Características de Projeto dos 
Sistemas Distribuídos
Transparência:
❑A transparência pode-se obter em diversos níveis:
❑A maneira mais simples é esconder dos usuários o fato
de estarem tratando com um sistema distribuído.
❑É possível fazer com que o sistema pareça
transparente para os programas. Pode-se projetar a
interface das chamadas do sistema de forma a tornar
invisível a existência dos vários processadores. No
entanto, “tampar” os olhos do programador é muito
mais difícil do que fazê-lo com os usuários.
Características de Projeto dos 
Sistemas Distribuídos
Transparência:
❑O conceito de transparência pode ser aplicado a vários
aspectos dos sistemas distribuídos:
❑Transparência à localização: um sistema verdadeiramente
distribuído, seus usuários não devem saber dizer onde
estão localizados os recursos tanto de hardware quanto de
software (processadores, impressoras, arquivos e base de
dados). O nome do recurso não pode ser codificado de
forma a revelar a sua localização, de maneira que nomes do
tipo maquina1:programa.c o ou /maquina1/programa.c
não são aceitáveis.
Características de Projeto dos 
Sistemas Distribuídos
Transparência:
❑ Transparência à migração na medida em que tais recursos
possam ser movimentados de um lugar para outro sem que
haja necessidade de se alterar seus nomes.
❑ Transparência à replicação: o sistema operacional poderá
fazer cópias adicionais de arquivos e outros recursos, sem
que seja necessário comunicar aos usuários.
❑Transparência à concorrência: bloqueando
automaticamente os recursos, quando dois ou mais
usuários tentarem acesso a este recurso. Os usuários nem
vão notar a existência de outros usuários.
Características de Projeto dos 
Sistemas Distribuídos
Transparência:
❑ Transparência ao paralelismo: o compilador, o sistema
operacional, e o ambiente de execução devem ser capazes
de, em conjunto, mostrar como se pode tirar vantagem do
paralelismo potencial sem que o programador nem mesmo
tome conhecimento de sua existência.
Características de Projeto dos 
Sistemas Distribuídos
Flexibilidade:
❑Existem duas linhas quanto à flexibilidade da estrutura dos
sistemas distribuídos:
❑Kernel Monolítico: kernel tradicional que fornece a
maioria dos serviços. É um sistema operacional
centralizado que foi ampliado com facilidades de rede
e integração de servidores remotos. A única vantagem
do sistema com kernel monolítico é a sua
performance. É mais rápido mandar uma mensagem
para o kernel, que executa todo o serviço necessário,
do que mandar a mensagem para servidores remotos.
Características de Projeto dos 
Sistemas Distribuídos
Flexibilidade:
❑MicroKernel: o kernel deve fornecer apenas os
serviços básicos. A maioria dos Sistemas Distribuídos
que são projetados desde o início usa esse método. O
microkernel é mais flexível e fornece basicamente
quatro serviços:
• Mecanismo de comunicação entre processos.
• Funções para gerência de memória.
• Funções para gerência de processos e de
escalonamento.
• Funções de entrada/saída de baixo nível.
Características de Projeto dos 
Sistemas Distribuídos
Flexibilidade:
As principais vantagens do microkernel sobre o kernel 
monolítico são:
• Existência de uma interface bem definida.
• Fácil de implementar, instalar e acrescentar novos serviços.
• Os usuários que não estiverem satisfeitos com os serviços 
poderão implementar seus próprios serviços.
• Pode-se ter um sistema distribuído com vários servidores 
de arquivos (Unix, MSDOS).
Características de Projeto dos 
Sistemas Distribuídos
Confiabilidade:
• Um dos objetivos originais que se buscava com a 
construção de sistemas distribuídos era fazê-los mais 
confiáveis que os sistemas centralizados, baseados em 
um único processador. A idéia básica por trás disso é o 
fato de que se algumas máquinas do sistema saírem do 
ar por algum motivo, as demais continuarão funcionando 
e atendendo as necessidades do sistema.
• Na teoria os servidores funcionariam de forma 
independente, podendo ocorrer falhas. Mas na prática é 
necessário que um conjunto de servidores esteja 
funcionando para que o sistema funcione como um todo.
Características de Projeto dos 
Sistemas Distribuídos
Confiabilidade:
É importante que possamos distinguir alguns aspectos da 
confiabilidade em sistemas distribuídos:
o Disponibilidade do Sistema: refere-se à fração do tempo em que 
o sistema pode ser utilizado plenamente. A disponibilidade pode 
ser melhorada através de um projeto que não requer o 
funcionamento simultâneo de um grande número de 
componentes críticos. A redundância de software e hardware é 
uma ferramenta para melhorar a disponibilidade.
o Segurança: arquivos e demais recursos devem ser protegidos 
contra uso não autorizado. 
o Tolerância a Falhas: mesmo com a falha de um elemento o 
sistema deve continuar funcionando.
Características de Projeto dos 
Sistemas Distribuídos
Performance:
• A construção de um sistema distribuído transparente, flexível e
confiável não vai ter nenhuma serventia, se ele for lento. Uma
aplicação rodando em um Sistema Distribuído não pode
comportar-se de maneira pior do que se rodasse em um único
processador.
• Algumas métricas podem ser usadas para a performance, entre
elas destacam-se:
• Tempo de Resposta.
• Throughput: número de tarefas por hora.
• Benchmark.
O problema da performance é muito influenciado pela
comunicação. A Tolerância a Falhas também tem seu preço,
aumentando a quantidade de informações na rede.
Características de Projeto dos 
Sistemas Distribuídos
Escalabilidade:
• Um sistema distribuído deve permitir a expansão em 
termos do número de usuários e recursos mantendo a 
performance relativa de atendimento a serviços do 
usuário. A maioria dos sistemas distribuídos atuais é 
projetada para trabalhar com poucas centenas de 
processadores. 
Características de Projeto dos 
Sistemas Distribuídos
Conceitos de Software:
• Todos os avanços de hardware apresentados
anteriormente exercem uma forte influência na evolução
do software de sistemas (principalmente sistemas
operacionais). Inicialmente os projetistas tratavam a
estrutura lógica e os detalhes de máquina. Devido à
complexidade, principalmente pela evolução do
hardware, o sistema operacional passou a ser
estruturado em camadas: módulo básico e módulos
superiores.
Características de Projeto dos 
Sistemas Distribuídos
É o software, mais especificamente o Sistema
Operacional, que deve projetar a imagem do sistema
como um todo para seususuários. Os Sistemas
Operacionais não podem ser classificados de forma límpida
e cristalina como o hardware. Mas é possível distinguir dois
tipos de sistemas operacionais com vários processadores:
os sistemas operacionais fracamente acoplados e os
fortemente acoplado
Características de Projeto dos 
Sistemas Distribuídos
▪ Software Fracamente Acoplado: a fraca conexão do software 
permite que as máquinas e usuários sejam independentes uns 
dos outros. Exemplo: grupo de computadores pessoais ligados 
a uma rede local, cada um com seu próprio processador, 
memória, disco. Mas compartilhando alguns recursos, como: 
impressora a laser ou uma base de dados. 
▪ Software Fortemente Acoplado: um sistema dedicado a rodar 
um único programa em paralelo. Exemplo de um jogo de 
xadrez: a cada processador é atribuída à análise de uma 
jogada e ao final da análise, as informações são passadas de 
volta, e uma nova jogada é analisada. O software para esse 
sistema, tanto de aplicação quanto o Sistema Operacional é 
muito mais fortemente acoplado que o anterior.
Características de Projeto dos 
Sistemas Distribuídos
❑Considerações Finais:
Os sistemas complexos, abrangendo multiprocessadores, redes 
de computadores e sistemas distribuídos, possuem 
características de hardware e software bem definidas:
1. Sistema Multiprocessador:
• formado por múltiplas CPU’s;
• interligados através de uma memória compartilhada;
• apresenta um sistema operacional integrado que gerencia os 
recursos do sistema como um todo.
Características de Projeto dos 
Sistemas Distribuídos
2. Rede de Computadores:
• Formada por múltiplos computadores autônomos;
• interligados através de um subsistema de comunicação, que pode 
envolver canais de comunicação;
• a rede apresenta um sistema operacional que implementa a 
infra-estrutura necessária para a comunicação entre os vários 
computadores;
• respeitando e mantendo o sistema operacional de cada um.
3. Sistemas Distribuídos:
• possui um hardware formado por uma rede de 
computadores; 
• apresenta um sistema operacional que gerencia os recursos 
do sistema como um todo.
Características de Projeto dos 
Sistemas Distribuídos
Tanto os sistemas distribuídos quanto os
multiprocessadores apresentam-se ao usuário como um
sistema único. A rede de computadores deixa transparecer
ao usuário a existência explícita de seus diversos
computadores e recursos existentes.

Continue navegando