Buscar

Resumo p1

Prévia do material em texto

Sistemas distribuídos 
● Computadores independentes (diferentes velocidades e SOs) 
● Resolução de problemas que não podem ser resolvidos individualmente 
● Fisicamente distantes 
● troca de mensagens (em vez de mem. Compartilhada) 
● transparência de heterogeneidade → se apresentam como sistema único 
● Fracamente acoplados → processamento > troca de mensagens 
● Não sincronizados 
● Middleware 
○ Software para conexão entre SOs e aplicações 
○ Suporte a redes heterogêneas (diferentes SOs, plataformas e protocolos de comunicação) 
○ Fornecer transparência de heterogeneidade 
○ Mesma interface para várias aplicações 
Arquiteturas de memória 
● Centralizada → mem única acessada por todos → gera gargalo → limita escalabilidade 
● Distribuída → mem junto com os processadores → maior escalabilidade 
○ Compartilhada → espaço de endereçamento global com diferentes tempo de acesso → acesso 
concorrente → comunicação para escrita/leitura 
○ Troca de mensagens → passa pela CPU pra acessar mem. 
Sistemas paralelos 
● Normalmente, fisicamente próximos e com mem. Compartilhada (UMA ou NUMA) 
● Fortemente acoplados 
● Sincronizados em alguns casos 
● Maior vazão → divisão de carga entre processadores 
● Speedup → tempo com 1 CPU / tempo com N CPU 
● Nível de paralelismo → % do tempo em que CPUs executam operações em vez de esperar 
comunicação 
● Sistemas multiprocessados 
○ Memória compartilhada UMA (acesso uniforme) 
○ Sem relógio comum 
○ Redes de interconexão → direciona dados de qualquer entrada para qualquer saída 
○ Redes ômega 
■ N processadores, log n níveis, (n/2)logn switches 
■ No nível s se o s+1 bit for 0, vai pra cima, senão pra baixo 
■ J = 2i, 0<= i <= n/2-1 
■ J = 2i + 1 – n, n/2 <= i <= n-1 
○ Redes butterfly 
■ Conexão entre dois switches se: 
● X = y 
● X xor y possui um único bit 1 no (s+1)-ésimo bit mais significativo 
● Multicomputadores 
○ Pode ou não ter espaço de endereçamento comum 
○ Acesso não uniforme (NUMA) 
○ Fisicamente próximos e fortemente acoplados 
○ Topologias regulares e simétricas 
■ Anel 
■ Mesh → grafo completo 
■ Torus → 2D mesh 
● K² CPUs → dist máx entre 2 nós é 
 
■ Hipercubo → k dimensões → cada nó c/ um rótulo de k bits → ligação entre os q 
diferem em só um bit 
● Dist. Max = k 
● Roteamento salto a salto → mensagem pode ser enviada para qualquer 
dimensão correspondente à posição na qual o endereço do nó corrente difere 
do endereço do destino → múltiplas rotas → tolerância a falhas e controle de 
congestionamento 
● Processadores vetoriais 
○ Fisicamente próximos e fortemente acoplados 
○ Relógio comum 
○ Mem compartilhada ou não 
Taxonomia Flynn 
● SISD → single instruction, single data → 1 CPU e uma unidade de mem. Conectada por barramento 
● SIMD → múltiplos CPUs fortemente acoplados, realizando mesma instrução em dados distintos → 
processamento de vetores e matriz 
● MISD → várias CPUs → operações diferentes, mesmos dados 
● MIMD → op. e dados diferentes → comum em sist. distribuídos e paralelos 
Modelos PRAM e LogP 
● Modelos para projeto e análise de algoritmos paralelos 
● Projeto independente da máquina 
● PRAM → parallel random access machine 
o Mem centralizada e compartilhada; processadores síncronos 
o Modelar acesso exclusivo ou concorrente 
o Não considera custo de comunicação de CPUs 
● LogP 
o Realista → considera custo de comunicação de CPUs 
o L → latência → limite superior para o atraso de troca de mensagens 
o o → overhead → tempo gasto para enviar ou receber mensagem, durante o qual não efetua 
outra operação 
o g → gap → tempo min. Entre transmissão e recepção de mensagens 
o P → número de processadores 
Concorrência 
● Razão: operações locais (s/ comunicação) /total de operações 
● Quando existe duas ou mais threads progredindo (não necessariamente executando ao mesmo 
tempo) 
● Paralelismo → execução simultânea de 2 threads 
Granularidade 
● Razão: qtd de computação / qtd comunicação 
● Baixa granularidade → melhor em sistemas fortemente acoplados 
Troca de mensagens (TM) e mem. Compartilhada (MC) 
● Mem compartilhada é mais fácil de programar 
● Emular TM -> MC 
○ Dividir espaço de endereçamento em conjuntos distintos para os processadores 
○ Implementar send e receive para escrita e leitura 
○ Reservar algum espaço de endereçamento para caixa de correio 
○ Primitivas de sincronização para informar envio e recebimento 
● Emular MC → TM 
○ Usar send/receive para realizar escrita/leitura 
○ Escrita emulada por envio de mensagem de atualização para o dono do espaço de 
endereçamento 
○ Leitura → envio de mensagem de query 
○ Facilita programação, mas é caro → latência devido comunicação por rede 
Primitivas de comunicação 
● Send(destino, dados) 
○ Com buffer → copia do espaço do usuário para o buffer do kernel e depois para a rede 
○ Sem buffer → direto pra rede 
● Receive (origem, dados) 
○ Sempre com buffer 
○ Origem pode ser * (recebe de todos) 
● Síncronas → fazem handshake 
○ Send → controle retoma quando receiver termina recebimento e envia sinal 
○ Receive → controle termina quando acaba de receber os dados 
● Assíncronas 
○ Send → controle retorna ao processo após copiar os dados para fora do buffer do usuário 
○ Receive → não faz sentido ser assíncrono 
● Bloqueante 
○ Fica bloqueado até terminar a primitiva (seja síncrona ou assíncrona) 
● Não bloqueante 
○ Retoma controle logo após invocar primitiva 
○ Send → retoma quando começa a copiar para o buffer do kernel 
○ Receive → retoma mesmo antes de receber os dados 
○ Recebe um handle para verificar se terminou 
○ Wait( handles[] )→ bloqueia até um dos handles ser resolvido 
● Send síncrono bloqueante → fácil de programar, mas menos eficiente (remetente tem q esperar 
receive ser chamado) 
● Send síncrono não bloqueante → evita atrasos quando receive não foi invocado 
● Send assíncrono não bloqueante → útil para dados maiores (não tem q esperar copiar para o buffer) 
● Receive não bloqueante → útil pra receber dados maiores ou quando send não foi invocado 
Sincronismo de processador 
● Relógios sincronizados → impossível em SD 
● Sincronia por passos → barreira para processadores executarem mesmo passo 
Sincronismo de execução 
● Processadores sincronizados 
● Divergência de relógios é limitada 
● Limite de tempo para executar passo 
● Sem sincronismo → tem atraso de mensagens 
● Emular síncrono em assíncrono → usar barreiras, sincronizador 
● Emular assíncrono em síncrono → trivial 
● Síncrono → consegue resolver mais problemas em sistemas suscetíveis a falhas 
Desafios de sistema 
● Comunicação → garantir mecanismo de comunicação 
● Processos → gerenciar processos em clientes e servidores; migração de código e dispositivos móveis 
● Nomenclatura → robusta para localização de recursos e processos transparentemente 
● Sincronização de processos 
● Armazenamento e acesso a dados → acessar de forma rápida e escalável 
● Consistência e replicação → para evitar gargalos e permitir escalabilidade 
● Tolerância a falhas → funcionar eficientemente mesmo se tiver falhas em nós/enlaces 
● Permitir escalabilidade 
Desafios de algoritmos 
● Modelos de execução: fornecer modelos para projeto e análise 
● Desenvolver algoritmos em grafos dinâmicos 
● Comunicação em grupo: algoritmo pra gerência eficiente em caso de falhas; entrega de mensagens 
em ordem 
● Depurar algoritmos: difícil devido a concorrência 
● Garantir confiabilidade e tolerância a falhas 
● Balanceamento de carga: algoritmo pra aumentar vazão e diminuir latência 
● Escalonamento em tempo real: algoritmo pra aplicações sensíveis a tempo 
● Desempenho: garantir certa vazão 
Metas SD 
● Acesso e compartilhamento de recursos remotos de forma eficiente e controlada 
● Transparência de distribuição → ocultarque recursos estão distribuídos → latências e limitações de 
processamento impedem transparência total 
○ De acesso → ocultar arquitetura de máquina e representação dos dados 
○ Localização → ocultar localização física de recursos 
○ Migração → recurso pode mudar de lugar sem afetar como é acessado 
○ Relocação → recurso pode ser movido enquanto em uso (notebooks e celulares) 
○ Replicação → ocultar replicação 
○ Concorrência → ocultar q recurso é compartilhado 
○ Falhas → superar falha sem o usuário perceber 
● Abertura 
○ Oferecer serviços de acordo com regras padronizadas definidas em uma interface 
○ IDL → linguagem de definição de interface 
○ Fácil extensão e configuração 
○ Interoperabilidade → até q ponto 2 componentes podem trabalhar juntos 
○ Portabilidade → até q ponto uma operação para um sistema pode ser executada em outro 
sem modificação 
● Escalabilidade 
○ De tamanho → fácil de adicionar novos usuários e recursos 
■ Evitar gargalos de processamento, comunicação e armazenamento 
■ Serviços centralizados → único servidor para todos → pode ser necessário por 
segurança 
■ Dados centralizados (ex: dns) → gargalo no acesso 
■ Algoritmos centralizados (máquinas com informações completas sobre a rede) → 
transporte de informação a cada alteração sobrecarrega a rede 
○ Geográfica → usuários e recursos podem estar distantes 
○ Administrativa → fácil de gerenciar, mesmo com várias organizações e recursos 
Problemas de transparência 
● Pode reduzir desempenho 
○ Várias tentativas de conexão para mascarar falhas 
○ Propagar alterações em casos de replicação 
● Usuários não entendem o comportamento 
Técnicas de escalabilidade 
● Ocultar latências de comunicação → não esperar resposta (assíncrono) 
● Distribuição → dividir componentes e espalhar pelo sistema (ex: DNS) 
● Replicação → aumentar disponibilidade, diminuir latência e equilibrar carga 
Sistemas de computação distribuídos 
● Derivados da computação paralela 
● Para tarefas de computação de alto desempenho 
● Cluster computing → melhor razão preço/desempenho; computação intensiva paralela 
● Computação em grade →recursos de diferentes organizações reunidos para permitir colaboração 
(heterogeneidade) 
● Em nuvem → computação como serviço; visão cliente-servidor 
Sistemas de informação distribuídos 
● Aplicação (servidor e BD) disponibilizada a cliente remotos 
● Clientes enviam requisição (em forma de transações) e recebem resposta 
Transações 
● Comum em BD 
● Begin_transaction, end_transaction, abort_transaction (mata e restaura valores anteriores), read e 
write 
● Propriedades ACID 
○ Atomicidade → execução de forma indivisível 
○ Consistência → não viola invariantes do Sistema 
○ Isolamento → uma transação não interfere em outra 
○ Durabilidade → mudanças são perpétuas após commit 
● Transações aninhadas → uma transação pode ter subtransações 
Integração de aplicações empresariais 
● Integrar aplicações independentemente do BD 
● Componentes de aplicações se comunicam diretamente → integração por middleware 
● Remote procedure call → componente envia requisição a outro executando chamada de 
procedimento local → ambos componentes ligados e sabendo como se referir ao outro → 
acoplamento q pode ser desvantagem 
● Sistemas publish/subscribe → aplicações indicam interesse por um tipo de mensagem e o 
middleware cuida de entregar 
Sistemas distribuídos pervasivos (espalhados, difusos) 
● Dispositivos móveis e embarcados → pequenos, pouca bateria, móveis 
● Sistemas domésticos, de saúde, redes de sensores 
● Adotar mudanças de contexto → dispositivo sabe q pode mudar de ambiente 
● Comunicação para troca de informações/compartilhamento 
● Administração distribuída

Continue navegando