Você está na página 1de 17

INSTITUTO DE TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO (INSTIC)

COORDENAÇÃO DO CURSO DE ENGENHARIA DE TELECOMUNICAÇÕES

TRABALHO DE PESQUISA DE COMPUTAÇÃO IV

TEMA: SISTEMAS DISTRIBUÍDOS E


PARALELOS

Luanda, 2023

Parque do Saber do MTTI, ISUTIC, Bairro dos CTT´s KM 7, Rangel-Luanda, Contactos: www.isutic.gov.ao
INSTITUTO DE TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO (INSTIC)
COORDENAÇÃO DO CURSO DE ENGENHARIA DE TELECOMUNICAÇÕES

TRABALHO DE PESQUISA DE COMPUTAÇÃO IV

TEMA: SISTEMAS DISTRIBUÍDOS E


PARALELOS

Ano: 5o
Autores: Nº Processo:
Dário E. Prazeres 2130
Eduane V. Domingos 2142
Érica D. Bonito 1524
José N. Matazi 2184
Josué K. Mbunga 2186

Docente: Esteves Tchyneke

Luanda, 2022

Parque do Saber do MTTI, ISUTIC, Bairro dos CTT´s KM 7, Rangel-Luanda, Contactos: www.isutic.gov.ao
Índice Geral

Objetivo Geral ............................................................................................................................. IV


Objetivos específicos ................................................................................................................... IV
1. Introdução .................................................................................................................................. 1
2. Sistemas Distribuídos ................................................................................................................ 2
2.1. Requisitos dos sistemas distribuídos................................................................................... 3
3. Sistemas Paralelos ..................................................................................................................... 3
3.1. Requisitos dos sistemas paralelos ....................................................................................... 5
4. Desafios dos sistemas distribuídos e paralelos .......................................................................... 5
5. As arquiteturas distribuídas e paralelas ..................................................................................... 6
6. A comunicação e sincronização em sistemas distribuídos e paralelos ...................................... 9
7. Conclusão ................................................................................................................................ 12
8. Bibliografia .............................................................................................................................. 13

Pág. III
Objetivo Geral

 Estudar a arquitetura de sistemas distribuídos e paralelos e suas implicações na comunicação


e sincronização entre os componentes, com o objetivo de compreender como esses sistemas
funcionam e como podem ser projetados para atender a diferentes requisitos de desempenho
e disponibilidade.

Objetivos específicos

 Analisar as principais características de sistemas distribuídos e paralelos como a sua


arquitetura, comunicação e sincronização;
 Investigar as diferentes arquiteturas de sistemas distribuídos e paralelos, incluindo
arquiteturas cliente-servidor, peer-to-peer e outros;
 Analisar as implicações da escolha de uma arquitetura específica na comunicação e
sincronização de sistemas distribuídos e paralelos, levando em consideração aspectos como
desempenho, escalabilidade e disponibilidade;
 Estudar as técnicas de comunicação e sincronização utilizadas em sistemas distribuídos e
paralelos, como troca de mensagens, memória compartilhada e bloqueio.

Pág. IV
1. Introdução

Com o crescimento das demandas de processamento de dados, tornou-se necessário o


desenvolvimento de sistemas capazes de processar grandes volumes de informações de maneira
eficiente e rápida. Nesse sentido, os sistemas distribuídos e paralelos surgiram como uma solução,
permitindo que diversas tarefas sejam executadas simultaneamente em diferentes computadores
interconectados em rede.

Os sistemas distribuídos e paralelos são duas das principais formas de se obter um alto
desempenho computacional em aplicações de processamento de dados em larga escala. Enquanto os
sistemas distribuídos são caracterizados pela presença de múltiplos componentes interconectados
em diferentes locais geográficos, os sistemas paralelos se caracterizam pela utilização de múltiplos
processadores trabalhando em conjunto para executar tarefas em paralelo. Neste trabalho,
discutiremos em detalhes os principais conceitos relacionados a cada um desses sistemas, bem como
suas principais aplicações em diferentes áreas da computação.

Pág. 1
2. Sistemas Distribuídos

Os sistemas distribuídos são caracterizados pela presença de múltiplos componentes de


hardwaree software interconectados em diferentes locais geográficos, que trabalham em conjunto
para executar uma determinada tarefa. Esses componentes podem ser computadores pessoais,
servidores, dispositivos móveis, sensores, entre outros. O principal objetivo dos sistemas
distribuídos é permitir o compartilhamento de recursos e a execução de tarefas em larga escala, sem
a necessidade de se ter um único sistema centralizado que gerencie todas as operações.

Figura 1 - Sistemas Distribuídos

Entre as principais características dos sistemas distribuídos, destacam-se:

Heterogeneidade: Os componentes de um sistema distribuído podem ser heterogêneos


em termos de hardware e software, ou seja, podem ter diferentes arquiteturas de processador,
sistemas operacionais, linguagens de programação, entre outros.

Autonomia: Cada componente de um sistema distribuído é responsável por suas próprias


operações, sem a necessidade de se ter um controle centralizado. Isso permite que o sistema seja
mais tolerante a falhas e que possa continuar operando mesmo que alguns de seus componentes
estejam inativos.

Transparência: Os usuários de um sistema distribuído não precisam se preocupar com a


localização ou o estado dos componentes que estão sendo utilizados. O sistema se encarrega de
gerenciar as comunicações e o acesso aos recursos de forma transparente.

Pág. 2
Entre as principais aplicações dos sistemas distribuídos, destacam-se:

Redes sociais: As redes sociais como Facebook, Twitter e LinkedIn são exemplos de sistemas
distribuídos que permitem que usuários de diferentes locais geográficos se conectem e
compartilhem informações em tempo real.

Sistemas de e-commerce: As lojas virtuais como Amazon e AliExpress são exemplos de


sistemas distribuídos que permitem a realização de transações comerciais em larga escala, com o
processamento de pedidos, gerenciamento de estoques e distribuição de produtos em diferentes
regiões geográficas.

Sistemas de gerenciamento de conteúdo: Os sistemas de gerenciamento de conteúdo como


WordPress e Joomla permitem que usuários em diferentes locais geográficos possam criar, editar e
compartilhar conteúdo na web de forma colaborativa.

2.1. Requisitos dos sistemas distribuídos

Transparência: os sistemas distribuídos precisam ser transparentes para os usuários, ou


seja, os usuários não devem precisar saber ou se preocupar com a localização dos recursos e serviços
que estão utilizando.

Escalabilidade: os sistemas distribuídos precisam ser escaláveis, ou seja, precisam ser capazes
de lidar com um grande número de usuários e recursos, sem comprometer o desempenho.

Confiabilidade: os sistemas distribuídos precisam ser confiáveis, ou seja, precisam garantir a


integridade e a disponibilidade dos dados e serviços, mesmo em caso de falhas ou erros.

Segurança: os sistemas distribuídos precisam ser seguros, ou seja, precisam garantir a proteção
dos dados e serviços contra acessos não autorizados e outras ameaças.

3. Sistemas Paralelos

Os sistemas paralelos são caracterizados pela utilização de múltiplos processadores trabalhem


conjunto para executar tarefas em paralelo, com o objetivo de acelerar o processamento de grandes
volumes de dados. Esses processadores podem estar localizados em uma única máquina ou em várias
máquinas interconectadas, formando um cluster de computação de alta performance.
Pág. 3
Os sistemas paralelos são especialmente úteis em aplicações que envolvem cálculos intensivos,
como simulações numéricas, processamento de imagens e reconhecimento de padrões.

Figura 2 - Sistemas paralelos

Entre as principais características dos sistemas paralelos, destacam-se:

Escalabilidade: Os sistemas paralelos podem ser facilmente escalados, adicionando-se novos


processadores para aumentar a capacidade de processamento.

Granularidade: Os sistemas paralelos podem ser implementados com diferentes


granularidades, ou seja, com diferentes níveis de divisão de tarefas entre os processadores. A
granularidade fina permite que as tarefas sejam divididas em pequenos pedaços que podem ser
executados em paralelo, enquanto a granularidade grossa divide as tarefas em grandes blocos que
são executados em paralelo.

Comunicação: Os processadores de um sistema paralelo precisam se comunicar entre si


para trocar informações e coordenar as tarefas. Para isso, é necessário utilizar protocolos de
comunicação eficientes e mecanismos de sincronização para evitar conflitos.

Entre as principais aplicações dos sistemas paralelos, destacam-se:

Processamento de imagens: O processamento de imagens envolve a manipulação de grandes


volumes de dados em tempo real, o que requer um alto desempenho computacional. Os sistemas
paralelos são amplamente utilizados nessa área para acelerar o processamento de imagens em
aplicações de vigilância, análise de dados geoespaciais, entre outras.

Simulações numéricas: As simulações numéricas envolvem a resolução de equações complexas


em diversas áreas da ciência e engenharia, como física, química, biologia e engenharia mecânica.

Pág. 4
Os sistemas paralelos são fundamentais nessa área para acelerar o processamento de grandes
volumes de dados e reduzir o tempo de simulação.

Reconhecimento de padrões: O reconhecimento de padrões envolve a análise de grandes


volumes de dados para identificar padrões e tendências. Os sistemas paralelos são amplamente
utilizados nessa área para acelerar o processamento de dados em aplicações de inteligência artificial,
análise de dados financeiros, entre outras.

3.1. Requisitos dos sistemas paralelos

Escalabilidade: os sistemas paralelos precisam ser escaláveis, ou seja, precisam ser capazes de
lidar com um grande número de processadores e tarefas, sem comprometer o desempenho.

Sincronização: os sistemas paralelos precisam ter mecanismos eficientes de sincronização entre


os processadores, para evitar conflitos e garantir a consistência dos dados. Balanceamento de carga:
os sistemas paralelos precisam ter um bom balanceamento de carga, ou seja, precisam distribuir as
tarefas de forma equilibrada entre os processadores, para evitar que alguns processadores fiquem
sobrecarregados e outros ociosos.

4. Desafios dos sistemas distribuídos e paralelos

Comunicação: os sistemas distribuídos e paralelos precisam ter mecanismos eficientes de


comunicação entre os processadores e recursos, para garantir a troca de informações e a coordenação
das tarefas.

Gerenciamento de recursos: os sistemas distribuídos e paralelos precisam ter um bom


gerenciamento de recursos, ou seja, precisam alocar e desalocar recursos de forma eficiente, para
evitar desperdícios e garantir o melhor uso possível dos recursos disponíveis.

Programação: a programação de sistemas distribuídos e paralelos é complexa e requer


conhecimentos avançados em técnicas de programação paralela e distribuída, o que pode ser um
desafio para muitos desenvolvedores.

Testes e depuração: os sistemas distribuídos e paralelos apresentam desafios específicos


em relação aos testes e depuração, devido à sua natureza distribuída e paralela, o que pode tornar
mais difícil identificar e corrigir erros e falhas.

Pág. 5
5. As arquiteturas distribuídas e paralelas

As arquiteturas distribuídas e paralelas são fundamentais para o processamento eficiente e


escalável de grandes volumes de dados em diversas áreas, desde a computação científica até o
processamento de transações em larga escala. Essas arquiteturas permitem que diversas tarefas
sejam executadas simultaneamente em diferentes computadores interconectados em rede,
aumentando a capacidade de processamento e reduzindo o tempo de resposta.

A arquitetura distribuída: utiliza diversos computadores independentes interconectados em


rede para realizar uma tarefa. Essa abordagem permite que o processamento seja distribuído entre
os diferentes computadores, aumentando a escalabilidade e a tolerância a falhas. Os computadores
podem ser organizados em diferentes topologias de rede, como anel, estrela ou árvore, e podem ser
utilizados para executar diferentes tipos de tarefas, desde a computação científica até o
processamento de transações em larga escala.

A arquitetura paralela: consiste em utilizar diversos processadores trabalhando em conjunto


para realizar uma tarefa, com o objetivo de diminuir o tempo de processamento. Essa abordagem
pode ser utilizada em diferentes níveis, desde a execução de tarefas simples em um único
computador até a utilização de supercomputadores para processar grandes volumes de dados.

Uma das principais vantagens das arquiteturas distribuídas e paralelas é a possibilidade de


utilização de clusters de computadores para processamento de dados em larga escala. Um cluster é
um grupo de computadores interconectados que trabalham em conjunto para realizar uma tarefa. O
uso de clusters pode ser aplicado em diferentes áreas, como a análise de dados, a simulação de
processos complexos e a computação de alto desempenho.

Figura 3 - Um cluster

Pág. 6
Além disso, as arquiteturas distribuídas e paralelas podem ser utilizadas em conjunto para obter
ainda mais benefícios, como o aumento da capacidade de processamento e a redução do tempo de
resposta. Por exemplo, é possível utilizar clusters de computadores interconectados em rede para
implementar arquiteturas paralelas distribuídas, permitindo que tarefas sejam distribuídas entre os
diferentes processadores.

No contexto da computação em nuvem, as arquiteturas distribuídas e paralelas são fundamentais


para garantir a escalabilidade e a eficiência dos sistemas. Os serviços de nuvem como a Amazon
Web Services (AWS) ou o Microsoft Azure oferecem diversos recursos para a implementação
dessas arquiteturas, como instâncias de máquinas virtuais, bancos de dados distribuídos e
ferramentas de processamento em lote.

Existem diversas arquiteturas distribuídas e paralelas que podem ser utilizadas na computação
atual. Algumas das mais comuns são:

Arquitetura cliente-servidor: Nessa arquitetura, os serviços são distribuídos em dois


componentes principais: o cliente e o servidor. O cliente faz solicitações para o servidor, que
processa as requisições e retorna os resultados para o cliente. Essa arquitetura é amplamente
utilizada em sistemas web e em bancos de dados distribuídos.

Figura 4 - Arquitetura cliente-servidor

Arquitetura peer-to-peer: Nessa arquitetura, todos os nós da rede são iguais e têm a
capacidade de agir como cliente e como servidor. Os nós podem compartilhar recursos, dados e
serviços entre si, sem a necessidade de um servidor centralizado. Essa arquitetura é comumente
utilizada em sistemas de compartilhamento de arquivos e em redes sociais descentralizadas.

Pág. 7
Figura 5 - Arquitetura peer-to-peer

Arquitetura de processamento em lote: Nessa arquitetura, as tarefas são executadas em


lotes, ou seja, um conjunto de tarefas é processado de uma só vez. Esse tipo de arquitetura é comum
em sistemas de processamento de dados em larga escala, como processamento de imagens,
processamento de dados financeiros e análise de dados de pesquisa.

Arquitetura de processamento em tempo real: Nessa arquitetura, as tarefas são processadas


em tempo real, ou seja, os resultados são entregues instantaneamente após a execução da tarefa. Essa
arquitetura é comum em sistemas de controle de processos industriais, sistemas de monitoramento
de tráfego e em sistemas de análise de dados em tempo real.

Esses são apenas alguns exemplos de arquiteturas distribuídas e paralelas utilizadas na


computação moderna. A escolha da arquitetura mais adequada para um determinado sistema
depende de vários fatores, como a natureza dos dados a serem processados, o tempo de resposta
desejado e os recursos disponíveis para a implementação do sistema.

As arquiteturas distribuídas e paralelas são utilizadas em uma grande variedade de aplicações


em diversas áreas, tais como:

Sistemas de processamento de dados em larga escala: Esses sistemas são utilizados para
processar grandes volumes de dados, tais como dados de redes sociais, registros médicos, dados de
vendas e finanças. As arquiteturas distribuídas e paralelas permitem que esses sistemas processem
dados em paralelo, reduzindo significativamente o tempo necessário para processar grandes volumes
de dados.

Sistemas de controle de processos industriais: Esses sistemas são utilizados em processos


industriais para controlar máquinas e equipamentos, monitorar o desempenho e ajustar os processos
em tempo real. As arquiteturas distribuídas e paralelas permitem que esses sistemas processem
informações em tempo real, garantindo uma resposta rápida e precisa aos eventos do processo.

Pág. 8
Sistemas de inteligência artificial: Esses sistemas são utilizados para analisar dados
complexos, tais como imagens, fala, texto e dados de sensores. As arquiteturas distribuídas e
paralelas permitem que esses sistemas processem grandes volumes de dados em paralelo, reduzindo
significativamente o tempo necessário para treinar e executar modelos de aprendizado de máquina.

Sistemas de jogos online: Esses sistemas são utilizados para fornecer serviços de jogos online,
tais como jogos multiplayer e jogos em tempo real. As arquiteturas distribuídas e paralelas permitem
que esses sistemas processem informações em tempo real, fornecendo uma experiência de jogo
suave e sem interrupções.

Essas arquiteturas são fundamentais para garantir a escalabilidade, a eficiência e a confiabilidade


de uma grande variedade de sistemas e aplicações na computação moderna.

No entanto, a implementação de arquiteturas distribuídas e paralelas envolve diversos desafios,


como a comunicação e sincronização entre os componentes, o gerenciamento de recursos e a
garantia da confiabilidade. A comunicação em sistemas distribuídos e paralelos pode ser realizada
por meio de diferentes mecanismos, como chamadas de procedimento remoto, troca de mensagens
ou memória compartilhada. É necessário garantir que a comunicação seja realizada de maneira
eficiente e segura, para evitar problemas como perda de dados ou conflitos na transmissão de
informações. A sincronização também é um aspecto crítico na implementação dessas arquiteturas,
já que é necessário garantir que os diferentes componentes do sistema estejam sincronizados para
evitar problemas de concorrência, como a inconsistência dos dados ou a perda de informação.

Em suma, as arquiteturas distribuídas e paralelas são uma área de grande importância na


computação atual e apresentam diversas vantagens para o processamento de grandes volumes de
dados. No entanto, a sua implementação envolve diversos desafios, sendo necessário um
planejamento cuidadoso para garantir que o sistema seja eficiente, escalável e confiável.

6. A comunicação e sincronização em sistemas distribuídos e


paralelos

A comunicação e sincronização são dois aspectos críticos em sistemas distribuídos e paralelos.


Como esses sistemas são compostos por vários processos executando em diferentes máquinas, é
essencial que esses processos se comuniquem entre si e se coordenem para garantir o correto
funcionamento do sistema.

Pág. 9
A comunicação em sistemas distribuídos e paralelos envolve o envio e recebimento de
mensagens entre os processos ou nós que compõem o sistema. A comunicação em sistemas
distribuídos pode ser feita de várias maneiras, incluindo:

Comunicação baseada em mensagem: Neste modelo de comunicação, os diferentes


componentes do sistema enviam e recebem mensagens entre si. Cada mensagem contém
informações sobre a tarefa que precisa ser realizada ou o resultado que precisa ser retornado.

Comunicação baseada em chamada de procedimento remoto (RPC): Neste modelo de


comunicação, os diferentes componentes do sistema usam chamadas de procedimento remoto para
invocar funções em outros componentes do sistema. Isso permite que um componente solicite a
execução de uma tarefa em outro componente.

Comunicação baseada em objeto distribuído: Neste modelo de comunicação, os diferentes


componentes do sistema interagem entre si como se estivessem trabalhando com objetos locais. Isso
permite que os componentes do sistema acessem e manipulem objetos em outros componentes,
como se estivessem no mesmo sistema.

A sincronização é igualmente importante em sistemas distribuídos e paralelos, uma vez que


diferentes processos precisam se coordenar para garantir a consistência dos dados e evitar conflitos
de acesso. Existem várias técnicas de sincronização usadas em sistemas distribuídos e paralelos:

Bloqueio: O bloqueio é uma técnica de sincronização que envolve a alocação de recursos


compartilhados exclusivamente para um processo ou nó. Isso significa que outros processos ou nós
que desejam acessar o mesmo recurso devem esperar até que ele seja liberado pelo processo que o
está usando no momento. O bloqueio é uma técnica simples, mas pode levar a problemas de
desempenho se muitos processos estiverem competindo pelo mesmo recurso.

Semáforos: Os semáforos são um mecanismo de sincronização mais sofisticado que envolve o


uso de um objeto que controla o acesso a um recurso compartilhado. O objeto semáforo pode ser
configurado para permitir ou negar o acesso a um recurso compartilhado, dependendo de seu estado
atual. Os semáforos são úteis para lidar com situações em que vários processos precisam acessar o
mesmo recurso, mas apenas um processo pode acessá-lo de cada vez.

Barreiras: As barreiras são uma técnica de sincronização usada para garantir que vários
processos cheguem a um determinado ponto de sincronização antes de prosseguir para a próxima
etapa da execução. Uma barreira é um ponto de sincronização que todos os processos devem

Pág. 10
alcançar antes de continuar a execução. As barreiras são úteis para garantir que os processos não
prossigam para a próxima etapa da execução antes que todos estejam prontos.

Memória compartilhada: A memória compartilhada é um tipo de comunicação em que


os processos compartilham uma região de memória comum que pode ser lida e escrita por todos os
processos que têm acesso a ela. A sincronização é necessária para garantir que os processos não
leiam ou escrevam na mesma posição de memória ao mesmo tempo, o que pode levar a resultados
incorretos

Troca de mensagens: A troca de mensagens é um mecanismo de comunicação assíncrona usado


em sistemas distribuídos em que os processos enviam e recebem mensagens para se comunicar uns
com os outros. A sincronização é necessária para garantir que as mensagens sejam processadas na
ordem correta e que os processos aguardem as respostas antes de prosseguir com a execução.

Esses mecanismos são usados para garantir que diferentes processos executem em sincronia e
cooperem para concluir uma tarefa específica.

Outra questão importante em sistemas distribuídos e paralelos é a escalabilidade, ou seja, a


capacidade do sistema de lidar com um grande número de processos executando simultaneamente.
À medida que o número de processos aumenta, é essencial que o sistema seja capaz de escalar de
forma eficiente e equilibrada para garantir o desempenho adequado.

Além disso, a segurança é outro desafio em sistemas distribuídos e paralelos. Como esses
sistemas são compostos por vários processos em diferentes máquinas, é necessário garantir que os
dados sejam protegidos contra acesso não autorizado ou violações de privacidade.

Em resumo, a comunicação e sincronização são aspectos críticos em sistemas distribuídos e


paralelos, e a escolha do método de comunicação e mecanismo de sincronização adequado pode
afetar significativamente o desempenho e escalabilidade do sistema. Além disso, é importante
considerar questões de segurança ao projetar e implementar esses sistemas.

Pág. 11
7. Conclusão

Os sistemas distribuídos e paralelos são uma solução eficiente para lidar com o
processamento de grandes volumes de dados e com o aumento da demanda por processamento
em tempo real. No entanto, a implementação desses sistemas apresenta diversos desafios, como
a comunicação e sincronização entre os componentes, o gerenciamento de recursos e a tolerância
a falhas.

Para garantir a eficiência e a segurança desses sistemas, é importante que sejam adotados
mecanismos eficientes de comunicação e sincronização, e que os recursos sejam gerenciados de
maneira adequada. Além disso, é fundamental que o sistema seja capaz de lidar com falhas de
hardware e software sem interromper o processamento, para garantir a disponibilidade dos
serviços.

Em suma, os sistemas distribuídos e paralelos são uma solução eficiente para lidar com
o processamento de grandes volumes de dados e com a demanda por processamento em tempo
real. No entanto, sua implementação requer cuidados especiais para garantir a eficiência e a
segurança dos serviços oferecidos.

Pág. 12
8. Bibliografia

Coulouris, G., Dollimore, J., & Kindberg, T. (2011). Sistemas distribuídos: conceitos e
projeto. Porto Alegre: Bookman.
Tanenbaum, A. S., & van Steen, M. (2007). Sistemas distribuídos: princípios e
paradigmas. São Paulo: Prentice Hall.
Mateos, C. F., García-Martínez, R., García-Galán, S., & Ríos-Navarro, A. (2019). Uma
Visão Geral de Sistemas Distribuídos e Paralelos. In Computação de Alto Desempenho
para Big Data: Metodologias e Aplicações (pp. 23-42). Springer, Cham.
Ozsu, M. T., & Valduriez, P. (2011). Princípios de sistemas de banco de dados
distribuídos. São Paulo: Pearson Prentice Hall.
Foster, I. (2015). Projetando e Construindo Programas Paralelos: Conceitos e
Ferramentas para Engenharia de Software Paralelo. Bookman Editora.
Stonebraker, M. (2010). A arquitetura de um sistema de banco de dados paralelo. In
Sistemas Gerenciadores de Banco de Dados (pp. 535-551). Bookman.
Coulouris, G., Dollimore, J., & Kindberg, T. (2013). Sistemas Distribuídos: Conceitos e
Projeto. Bookman Editora.
Tanenbaum, A. S., Steen, M. V., & Tanenbaum, A. S. (2007). Sistemas Distribuídos:
Princípios e Paradigmas. Pearson Prentice Hall.

Pág. 13

Você também pode gostar