Logo Passei Direto

A maior rede de estudos do Brasil

Grátis
50 pág.
Fundamentos de sistemas distribuídos

Pré-visualização | Página 1 de 11

DESCRIÇÃO
Os conceitos básicos dos sistemas distribuídos, das memórias compartilhadas e distribuídas e das arquiteturas
de sistemas paralelos e distribuídos.
PROPÓSITO
Introduzir os conceitos fundamentais de sistemas distribuídos, bem como conhecer as técnicas que
possibilitaram que esse tipo de arquitetura se desenvolvesse. Saber diferenciar os diversos conceitos dentro
do tema e ter conhecimento de algumas arquiteturas de sistemas distribuídos, identificando vantagens e
desvantagens.
PREPARAÇÃO
Tenha à mão um aplicativo de planilha eletrônica e uma calculadora ou use a calculadora de seu
smartphone/computador.
OBJETIVOS
MÓDULO 1
Descrever os conceitos básicos de sistemas distribuídos
MÓDULO 2
Diferenciar memória compartilhada e memória distribuída
MÓDULO 3
Diferenciar paralelismo de dados e paralelismo de tarefas
MÓDULO 4
Identificar as arquiteturas de sistemas paralelos e distribuídos
INTRODUÇÃO
Vivemos um mundo onde a expressão “estar conectado” diz respeito a uma necessidade primária das
pessoas. Uma das maiores frustrações do ser humano moderno é estar desconectado da internet. Ao
viajarmos para um hotel, uma pousada no campo, as questões que sempre surgem são: o estabelecimento
fornece serviço de Wi-Fi? O sinal de minha operadora funciona no local? Perguntas desse tipo denunciam a
extrema necessidade de participar da internet.
A internet é nada mais que um sistema distribuído muito grande. Por meio dela, podemos conectar sites, redes
sociais, mecanismos de busca, jogos on-line, ou seja, milhões de serviços que estão disponíveis praticamente
em todos os lugares do mundo.
Esses serviços, no entanto, estão funcionando em máquinas dispersas por todo o mundo, interligadas entre si
por algum tipo de rede. Para que esses serviços possam ser providos, as aplicações conectam usuários
através de sites e serviços, como, e-mail, transferência de arquivos, chat etc. Para isso, as diversas
aplicações, sendo executadas nos diversos computadores, precisam se comunicar entre si e o fazem
normalmente por mensagens.
Neste conteúdo, apresentaremos algumas das nomenclaturas, bem como técnicas e metodologias que deram
base aos diversos sistemas distribuídos que estão disponíveis para as pessoas atualmente.
MÓDULO 1
 Descrever os conceitos básicos de sistemas distribuídos
CONCEITOS DE SISTEMAS DISTRIBUÍDOS
Como explanamos no início deste tema, praticamente tudo com que interagimos em nossos celulares e em
computadores conectados à internet são sistemas distribuídos.
Nesta lista não exaustiva podemos citar:
Mecanismos de busca, como Google, Bing etc.
Sistema de Home Banking
Sistema de Home Broker
Redes sociais
Sistemas de streaming de áudio e de vídeo, como o YouTube
Sistemas de Educação a Distância
Internet das Coisas (em inglês, Internet of Things – IoT)
Sistemas de monitoramento ambiental
Sistemas remotos de monitoramento de saúde
Computação distribuída em grid para aplicação em ciências
Dificilmente, conseguiríamos elencar todos os tipos de aplicação que os sistemas distribuídos permitem que
sejam construídos.
Agora, passemos a uma definição formal.
UM SISTEMA DISTRIBUÍDO É AQUELE NO QUAL OS
COMPONENTES LOCALIZADOS EM COMPUTADORES
INTERLIGADOS EM REDE SE COMUNICAM E COORDENAM
SUAS AÇÕES APENAS PASSANDO MENSAGENS.
(COULOURIS et al., 2013, p. 1)
Os computadores conectados por uma rede podem estar em continentes diferentes, em um mesmo prédio ou
sala, ou ainda a milhares de quilômetros de distância. A definição de Coulouris tem as seguintes
consequências significativas:
CONCORRÊNCIA
Em uma rede de computadores, a execução simultânea de programas é a regra geral. Enquanto você executa
determinada tarefa no celular, também pode executar uma outra tarefa que eventualmente acesse a mesma
base de dados que outros milhares de usuários estejam acessando. A capacidade do sistema de lidar com
recursos compartilhados pode ser aumentada adicionando mais recursos, como, por exemplos mais celulares,
computadores ou mesmo dispositivos da IoT. A coordenação de programas de execução simultânea que
compartilham recursos também é um tópico importante e recorrente.
AUSÊNCIA DE UM RELÓGIO GLOBAL
Quando as diversas aplicações precisam cooperar, elas coordenam suas ações trocando mensagens. Muitas
vezes, essa coordenação depende de uma ideia compartilhada do momento em que as ações dos programas
ocorrem. No entanto, existem limites para a precisão com a qual os computadores em uma rede podem
sincronizar seus relógios, não havendo uma noção global única da hora correta. Isso é consequência direta do
fato de a única comunicação ser o envio de mensagens pela rede.
FALHAS INDEPENDENTES
A prática nos mostra que todos os sistemas de computador podem falhar. Pensando nisso, o responsável pelo
sistema deve planejar as consequências de possíveis falhas e as respostas apropriadas para cada tipo de
falha. Uma falha em determinada rede pode resultar no isolamento dos dispositivos que estão conectados a
ela, mas isso não significa que eles parem de funcionar. Da mesma forma, a falha de um dispositivo, ou o
encerramento inesperado de um programa em algum lugar do sistema, não é imediatamente detectada ou
informada aos outros componentes com os quais ele se comunica. Cada componente do sistema pode falhar
independentemente, deixando os outros ainda em execução.
A principal motivação para construir e usar sistemas distribuídos é o compartilhamento de recursos,
sejam eles componentes de hardware, como discos de armazenamento, impressoras, banco de dados, fluxo
de informações que vemos em redes sociais, enfim, tudo que pode ser transformado em informação digital.
TAXONOMIA DE FLYNN
A computação paralela é uma computação em que os trabalhos são divididos em partes discretas que podem
ser executadas simultaneamente. Cada parte é subdividida em uma série de instruções. As instruções de cada
parte são executadas simultaneamente em CPUs diferentes. Os sistemas paralelos lidam com o uso
simultâneo de vários recursos de computador que podem incluir um único computador com vários
processadores, vários computadores conectados por uma rede para formar um cluster de processamento
paralelo ou uma combinação de ambos.
 COMENTÁRIO
Os sistemas paralelos são mais difíceis de programar do que os computadores com um único processador,
porque a arquitetura dos computadores paralelos varia de acordo com os recursos disponíveis, sendo assim,
os processos de várias CPUs devem ser coordenados e sincronizados.
A primeira descrição formal desse tipo de abordagem foi a taxonomia de Flynn. Essa taxonomia foi
desenvolvida em 1966 e ligeiramente expandida em 1972:
É uma metodologia para classificar formas gerais de operação paralela disponíveis em um processador.
Propõe uma abordagem para esclarecer os tipos de paralelismo suportados no hardware por um sistema de
processamento ou disponíveis em uma aplicação.
Sua classificação é baseada na visão da máquina ou do aplicativo pelo programador de linguagem de
máquina.
A taxonomia de Flynn é uma categorização de formas de arquiteturas de computador paralelas.
Do ponto de vista do programador de linguagem assembly, os computadores paralelos são classificados pela
simultaneidade em sequências de processamento (ou fluxos), dados e instruções. Isso resulta em quatro
classes: SISD (instrução única, dados únicos), SIMD (instrução única, dados múltiplos), MISD (instrução
múltipla, dados únicos) e MIMD (instrução múltipla, dados múltiplos).
A taxonomia de Flynn pode ser sumarizada de forma ilustrativa segundo a imagem a seguir.
 
Sergio Kostin, adaptador por Eduardo Trindade
 Taxonomia de Flynn.
SISTEMAS DE INSTRUÇÃO ÚNICA E DADOS
ÚNICOS (SINGLE-INSTRUCTION, SINGLE-DATA –
SISD)
Um sistema de computação de instrução única e dados únicos (Single-Instruction, Single-Data – SISD) é uma
máquina de um processador que é capaz de executar uma única instrução, operando em um único fluxo de
dados, como se observa na imagem seguinte.
Página123456789...11