Você está na página 1de 10

Tutorial de

Atividade Prática
Guia aluno

Arquiteturas
paralelas e
distribuídas
TUTORIAL DE ATIVIDADE PRÁTICA
NOME DA DISCIPLINA: Arquiteturas paralelas e distribuídas
Atividade Prática 1
OBJETIVOS
Definição dos objetivos da atividade prática:
Promover o desenvolvimento de competências e conteúdos relacionados à unidade de ensino
sobre arquiteturas paralelas e distribuídas.

PROCEDIMENTOS

Atividade proposta:
Compreensão sobre arquiteturas paralelas e distribuídas.

Procedimentos para a realização da atividade:


Caro aluno, a atividade será dividida em duas etapas, uma onde você realizará a leitura e interpretação
de textos sobre arquiteturas paralelas e distribuídas. Com apoio nas leituras das bibliografias e com auxílio
dos livros na biblioteca virtual irá resolver uma série de questões objetivas.
Na segunda etapa, você realizará uma discussão sobre arquitetura de hardware para comunicação entre
processadores: memória compartilhada.

ETAPA 1: Computação Paralela – Conceitos


Tanenbaum (2007) nos traz que o paralelismo pode ser introduzido em vários níveis. No nível mais baixo,
ele pode ser adicionado ao chip da CPU, por pipeline e projetos superescalares com várias unidades
funcionais.
Também pode ser adicionado por meio de palavras de instrução muito longas com paralelismo implícito.
Características especiais podem ser adicionadas à CPU para permitir que ela manipule múltiplos threads
de controle ao mesmo tempo. Por fim, várias CPUs podem ser reunidas no mesmo chip. Juntas, essas
características podem equivaler, talvez, a um fator de dez vezes em desempenho em relação a projetos
puramente sequenciais.
No nível seguinte, placas extras de CPU com capacidade de processamento adicional podem ser
acrescentadas a um sistema. Usualmente, essas CPUs de encaixe têm funções especializadas, tais como

2
processamento de pacotes de rede, processamento de multimídia ou criptografia. No caso de funções
especializadas o fator de ganho também pode ser de talvez cinco a dez.
Contudo, para conseguir um fator de cem, de mil ou de milhão, é necessário replicar CPUs inteiras e fazer
com que todas elas funcionem juntas com eficiência. Essa ideia leva a grandes multiprocessadores e
multicomputadores. E também nos traz enormes problemas a solucionar.
Arquiteturas Paralelas
Taxionomia de Flynn
Para Null(2010), ao longo dos anos, várias tentativas foram feitas a fim de encontrar uma maneira
satisfatória para categorizar arquiteturas de computadores. A proposta por Michael Flynn em 1972,
considera dois fatores: o número de instruções e o número de sequencias de dados que passam para o
processador.
Uma máquina pode ter uma ou várias sequencias de dados e pode ter um ou vários processadores
trabalhando nesses dados. Segundo Null(2010), com base na taxionomia de Flynn, temos quatro possíveis
combinações:
a) SISD – (do inglês Single Instrucrion Stream, Single Data Stream – uma instrução, um dado), ou seja,
uma arquitetura com um único fluxo de instruções e somente um fluxo de dados. Como exemplo
temos a arquitetura de Von Neumann adotada em vários computadores atuais.
b) SIMD – (do inglês Single Instruction Stream, Multiple Data Streams - uma instrução, múltiplos
dados), ou seja, uma arquitetura com um único ponto de controle que executa a mesma instrução
simultaneamente sobre diversos valores de dados. Exemplos: Processadores vetoriais e
processadores de matrizes.
c) MISD - (do inglês Multiple Instruction Streams, Single Data Stream - múltiplas instruções, um
dado), ou seja, uma arquitetura possui vários fluxos de instrução operando sobre o
mesmo fluxo de dados.
d) MIMD – (do inglês Multiple Instruction Streams, Multiple Data Streams - múltiplas instruções,
múltiplos dados), ou seja, uma arquitetura que utiliza vários pontos de controle, cada um com seu
fluxo de dados e instruções.
Figura 1 – Taxonomia de arquitetura de computadores

3
Arquitetura

Fluxo de
Fluxo de dados
Instruções

SISD SIMD MISD MIMD SPMD

Memória Memória Supercompu


Compartilhada Distribuída tadores

Sistemas
MPP
distribuídos

Figura 1 – Fonte: Null(2010, p. 497)


Definição de sistemas distribuídos
Para Tanenbaum (2007,p.1), um sistema distribuído é um conjunto de computadores independente que
se apresenta a seus usuários como um sistema único e coerente.
Nos traz Coulouris (2007, p.2), um sistema distribuído como aquele no qual os componentes de hardware
ou software, localizados em computadores interligados em rede, comunicam-se e coordenam suas ações
apenas enviando mensagens entre si.
A partir dessas definições, podemos observar que só os computadores ligados em rede não caracterizam
sistemas distribuídos. E também que quando falamos em hardware nos referirmos a máquinas autônomas
e quando falamos em software, nos referimos à visão dos usuários que vêem o sistema como um
computador único.
Atualmente, os sistemas distribuídos, em particular os serviços e aplicações baseados na Web e Internet
de forma geral vêm crescendo muito.
Para você saber quando estamos trabalhando com sistemas distribuídos, trago um cientista da
Computação, Leslie Lamport, agora com quase 80 anos, que afirma que” Você sabe que tem um sistema
distribuído quando a falha de um computador do qual você nunca ouviu falar faz com que você pare
completamente de trabalhar."
Para Tanenbaum (2007), devemos considerar alguns pontos importantes em sistemas distribuídos:
a) Os componentes(computadores) devem ser autônomos de qualquer tipo ou indiferente da forma como
são conectados;
b) Os usuários enxergam um único sistema, sejam esses pessoas ou programas;
c) Os dois tem que colaborar.

4
Para construirmos sistemas distribuídos, temos alguns grandes desafios, como a heterogeneidade em
relação aos seus componentes, a capacidade de funcionar corretamente com o aumento de usuários e
ocultar dos usuários o que cada um faz em relação ao todo. Traremos na próxima seção esses desafios em
detalhes para melhor compreensão.

1.2 – Características/ metas de sistemas distribuídos


Nos traz Tanenbaum (2007,p.2), “a meta principal de um sistema distribuído é facilitar aos usuários e às
aplicações o acesso a recursos remotos e seu compartilhamento de maneira controlada e eficiente.”
Quando nos referimos à recursos, falamos por exemplo, de impressoras de diversos tipos (matricial, a
laser, jato de tinta, jato de cera, 3D), plotters, armazenamentos que poderiam ser magnéticos, ópticos,
eletrônicos ou nuvem, dados em diversos formatos, redes em quaisquer configurações , servidor de e-
mail, servidor de arquivo, páginas web, sistemas operacionais, entre outros.
Para Tanenbaum (2007), desenvolver sistemas distribuídos não é fácil, adotamos alguns princípios de
regras básicas da engenharia de software. Contudo, sistemas distribuídos diferem do software tradicional
pois seus componentes estão espalhados por uma rede.
Nos traz Tanenbaum (2007) que algumas características/desafios são primordiais na construção de
sistemas distribuídos. São elas:
a) Heterogeinidade;
b) Sistemas abertos;
c) Segurança;
d) Escalabilidade;
e) Tratamento de falhas;
f) Concorrência e
g) Transparência.
h)
Tipos de Sistemas Distribuídos
Computação de Cluster (cluster computing)
Segundo Buyya (1999), é um sistema de computação distribuída composto por um conjunto de
computadores independentes (elementos) que trabalham de forma integrada como se fosse um recurso
computacional único. Para Tanenbaum (2007) consiste em um conjunto de estações de trabalho ou
computadores semelhantes, conectados por uma rede local de alta velocidade e cada nó executará o
mesmo sistema operacional.
Em função do menor custo e desempenho dos computadores pessoais e estações de trabalho, viu-se que
era mais fácil montar um supercomputador conectando-se esses computadores, investir em uma
excelente rede de computadores e executar programas de forma paralela.
Um exemplo de um computador de cluster é formado pelos clusters Beowulf, baseados em sistema

5
operacional Linux, conforme mostrado na figura 2. Cada cluster consiste em um conjunto de nós de
computação controlados e acessados por meio de um único mestre. O mestre executa o middleware
necessário para a execução de programas e o gerenciamento do cluster, enquanto para os nós de
computação é suficiente um sistema operacional padrão.
Figura 2 : Exemplo de um sistema computacional de cluster

Fonte : Tanenbaum (2007, p.10)

Computação em grade (gride computing)


Para Foster (2002), uma grade computacional é uma infra-estrutura de hardware e software capaz de
prover dependabilidade, consistência e pervasibildade de baixo custo para computação de alto
desempenho. Na computação em grade temos grande heterogeneidade; teremos diferentes hardwares,
softwares, tecnologia de rede empregada e diferentes domínios administrativos.
Para Tanenbaum (2007), é formada uma organização virtual, fazendo com que os direitos de acesso aos
recursos da organização à qual você pertence, sejam compartilhados, oferecendo facilidades de
armazenamento e banco de dados, além de sensores. Podemos ter um exemplo na figura 3.
Essa arquitetura consiste em quatro camadas. A camada base provê interfaces para recursos locais em um
site específico. Elas permitem o compartilhamento de recurso dentro de uma organização virtual. Temos
como exemplo travar recursos.
A camada conectividade será composta de protocolos de comunicação para suportar transações da grade.
Conterá protocolos de segurança para autenticar usuários e recursos.
A camada de recursos é responsável pelo gerenciamento de um único recurso. Ela será responsável pelo
controle de acesso, e por isso, dependerá da autenticação realizada pela camada de conectividade.
A camada coletiva manipula o acesso a múltiplos recursos e normalmente consiste em serviços para
descoberta de recursos, alocação e escalonamento de tarefas para múltiplos recursos e replicação de
dados. Ela é constituída de protocolos diferentes para muitas finalidades diferentes, que reflitam o amplo
espectro de serviços que ela pode oferecer a uma organização virtual.

6
A camada de aplicação consiste em aplicações que funcionam dentro de uma organização virtual e que
fazem uso do ambiente de computação em grade.
Figura 3 : Arquitetura em camadas para sistemas de computação em grade.

Fonte : Tanenbaum (2007, p.10)

Introdução de arquiteturas
As arquiteturas de software de sistema distribuído nos esclarecem como os componentes de software
devem ser organizados e como devem interagir entre si e com os demais componentes.
Para Tanenbaum (2007), a realização efetiva de um sistema distribuído implica que
Sejam especificados e colocados componentes de software em máquinas reais. A especificação final de
uma arquitetura de software é também denominada arquitetura de sistema.
Nosso estudo se baseará nas arquiteturas centralizadas, descentralizadas e híbridas.
Estilos arquitetônicos
Nos explica Tanenbaum(2007), que para iniciarmos nossa discussão, considerando a organização lógica de
sistemas distribuídos em componentes de software, ao qual nominamos arquitetura de software.
Analisaremos componentes, a interconexão entre os componentes, os dados trocados entre eles e a suas
configurações, isto tudo para analisar como é formado o sistema como um todo.
Iniciaremos com a definição importantes a primeira é de componente, que é uma unidade modular com
interfaces requeridas e fornecidas , muito bem definidas e que pode ser substituída a qualquer momento
dentro do sistema, sempre respeitando suas interfaces. Os componentes estão localizados em diversas
máquinas. A segunda definição, um pouco mais complexa é a de conector, que é um mecanismo que serve
de mediador da comunicação ou da cooperação entre componentes.;
Com a junção de componentes e conectores, foram definidos, em especial, quatro estilos arquitetônicos:

7
a) Arquiteturas em camadas;
b) Arquiteturas baseadas em objetos;
c)Arquiteturas centradas em dados e
d) Arquiteturas baseadas em eventos .
Agora vamos aprender um pouco mais com as bibliografias.
Bibliografias:
http://www.professores.uff.br/lbertini/wp-content/uploads/sites/108/2017/08/Cap-6-
Multiplrocessadores.pdf acesso 20mai20
Biblioteca Virtual
Tanenbaum,A. Van Steen,M. Sistemas Distribuídos: princípios e paradigmas - 2ª edição. São Paulo:
Pearson Prentice Hall. 2007.
https://plataforma.bvirtual.com.br/Acervo/Publicacao/411 acesso 20mai20

Stallings, W. Arquitetura e Organização de Computadores - 5ª edição São Paulo: Pearson Prentice Hall.

2002.

https://plataforma.bvirtual.com.br/Acervo/Publicacao/459 acesso 20mai20


Questões objetivas:
1) Ano: 2019 Banca: COMPERVE Órgão: UFRN Prova: COMPERVE - 2019 - UFRN - Engenheiro - Engenharia
da Computação
A taxonomia de Flynn classifica os diversos sistemas de computação em quatro tipos. A arquitetura clássica
de Von Newman pode ser considerada como sendo do tipo SISD, pois possui um único fluxo de instrução
e um único fluxo de dados. Arquiteturas modernas apresentam múltiplos núcleos de processamento
funcionando em paralelo. Internamente, esses núcleos possuem unidades funcionais vetoriais que podem
processar mais de um dado por instrução. Sobre esses múltiplos núcleos de processamento e sobre as
unidades funcionais vetoriais, é correto afirmar que equivalem, respectivamente, às classificações
a) MIMD e SIMD.
b) MIMD e MISD.
c) SIMD e MIMD.
d) SIMD e MISD.

2) Ano: 2018 Banca: COMPERVE Órgão: UFRN Prova: COMPERVE - 2018 - UFRN - Engenheiro - Engenharia
da Computação
De acordo com a taxonomia de Flynn, que classifica sistemas de computação paralela, a alternativa que
corresponde à classificação para sistemas com processadores de núcleo único, com processadores de
múltiplos núcleos e com processadores vetoriais, respectivamente, é:
a) SIMD, MISD e SISD.

8
b) SISD, MIMD e SIMD.
c) SISD, MISD e SIMD.
d) SIMD, MISD e SIMD.
Alternativa B, pois SIMD – (do inglês Single Instruction Stream, Multiple Data Streams - uma instrução,
múltiplos dados), ou seja, uma arquitetura com um único ponto de controle que executa a mesma
instrução simultaneamente sobre diversos valores de dados. Exemplos: Processadores vetoriais e
processadores de matrizes.

3) Banca: CESGRANRIO 2012 Órgão: Transpetro Prova: Analista de Sistemas Júnior - Infra-Estrutura
https://www.qconcursos.com/questoes-de-concursos/questao/3dacde9a-03
A taxonomia de Flynn utiliza duas dimensões independentes: instruções e dados.
Essa taxonomia, registra, na arquitetura SIMD, que
a) uma única instrução é executada ao mesmo tempo sobre múltiplos dados.
b) um único fluxo de instruções atua sobre um único fluxo de dados.
c) cada unidade de processamento pode executar instruções diferentes e operar sobre fluxos de
dados diferentes a cada momento.
d) múltiplos fluxos de instruções atuam sobre um único fluxo de dados.
e) múltiplas unidades de processamento executam múltiplas instruções simultaneamente e operam
diversos fluxos de dados sobre cada uma dessas unidades.

4) Banca: FUNCAB Órgão: SES-GO Prova: Analista de Sistemas


https://www.qconcursos.com/questoes-de-concursos/disciplinas/tecnologia-da-informacao-arquitetura-
de-computadores/sistemas-distribuidos
Em relação à replicação de dados nos sistemas de dados distribuídos, aquela que é uma
DESVANTAGEM da sua aplicação:
a) degradação do desempenho das aplicações.
b) limitação da disponibilidade das aplicações.
c) propagação de atualizações.
d) dependência do hardware.
e) dependência do SGBD.

5) Segundo Tanenbaum (2007) , alguns desafios são primordiais na construção de sistemas distribuídos.
Analise as afirmativas abaixo e assinale a alternativa correta:
I. Heterogeinidade;
II. Segurança;
III. Transparência.

9
a) Apenas a afirmativa I está correta.
b) Apenas as afirmativas I e II estão corretas.
c) Apenas as afirmativas I e III estão corretas.
d) Apenas as afirmativas II e III estão corretas.
e) Todas as afirmativas estão corretas.

ETAPA 2 – Discussão
O que são multiprocessadores com memória compartilhada? Pesquise e Explique

RESULTADOS
Resultados da atividade prática:
Como resultados dessa atividade, espera-se que os objetivos propostos tenham sido alcançados
por meio da compreensão de arquiteturas paralelas e distribuídas.

10

Você também pode gostar