View
107
Download
0
Category
Preview:
Citation preview
Sistemas Distribuídos
Carlos A. G. Ferraz
DI/UFPE
Aula 03
Tópicos Características Tendências Suporte à Programação
Distribuída: Introdução Conceitos
Caracterização de SD Características principais ->
benefícios: Compartilhamento de recursos Flexibilidade Concorrência
(cont.)
Características (cont.)
Escalabilidade (operação efetiva e eficiente em qualquer escala)
Robustez Tolerância a falhas Disponibilidade
Transparência
Tipos de Transparência
Localização: acesso sem conhecimento de localizacao
Acesso: operações idênticas para acesso local e remoto
Migração: sem afetar operação Concorrência: sem interferência
entre concorrentes
Tipos de Transparência (cont.)
Falha: completar tarefas apesar de falhas
Replicação: sem conhecimento das réplicas
Desempenho: reconfigura sistema variando cargas
Escala: expansão sem mudanças na estrutura do sistema
Tendências Multimídia distribuída
Longa distância Redes de alta velocidade Problema: “Novas” latências
Interoperabilidade de plataformas distribuídas heterogêneas Diversas aplicações
Computação móvel Agentes móveis Integração com CORBA
Suporte à Programação Distribuída Sistemas Abertos (OSI + ODP) Sistemas operacionais distribuídos
Abordagem “revolucionária” Microkernels
MicrokernelHardware
Sistemas abertos e Aplicações
Suportea Ling.
Emul.
S.O..... ....
Suporte à Programação Distribuída (cont.) Plataformas “ODP”
Abordagem “evolucionária”
Hardware
Sistema Operacional
Plataforma “ODP”
Sistemas abertos e Aplicações
Conceitos - Tópicos Processos e Threads Concorrência Sistemas Abertos Comunicação Sincronização Tolerância a Falhas Segurança Sistemas Distribuídos de Tempo-
Real
Processos e Threads Em sistemas operacionais
tradicionais, cada processo tem um único espaço de endereço e uma única linha (thread) de controle
Processos e Threads (cont.) É desejável ter múltiplos threads
de controle compartilhando um espaço de endereço e executando em “paralelo”, como se fossem processos separados
ConcorrênciaConcorrência é uma abstração é uma abstração importante porque o importante porque o comportamento de muitos comportamento de muitos sistemas reais pode ser sistemas reais pode ser modelado sem detalhes modelado sem detalhes desnecessáriosdesnecessários
Processos e Threads (cont.) Threads são também chamados
de processos peso-leve Executam sequencialmente e têm
seu próprio contador de programa e pilha de execução
Compartilham a CPU assim como processos - através de timesharing
Processos e Threads (cont.) Diferentes threads em um
processo não são tão independentes quanto diferentes processos - não são protegidos uns dos outros; compartilham variáveis
Processos e Threads (cont.) Múltiplos threads x múltiplos
processos (servidores) Um servidor pode servir a vários
clientes concorrentemente Interferência pode causar
inconsistência nos dados compartilhados
Processos e Threads (cont.) Pacote de threads: conjunto de
primitivas (ex. chamadas de bibliotecas) Criação estática e dinâmica de
threadssimplicidade x flexibilidade
Compartilhamento de memória/variávies: mutex
Sincronização: variável condicional - wait e wakeup
Processos e Threads (cont.) Criação estática e dinâmica de
processos Razões para a criação dinâmica:
Flexibilidade: um sistema pode ser projetado sem saber # de processos necessários;
Uso dinâmico de recursos: um sistema pode precisar de diferentes conjuntos de recursos em tempos diferentes;
Processos e Threads (cont.)
Razões para a criação dinâmica (cont.): Balanceamento de carga: se a
criação dinâmica de processos existe, processos adicionais podem ser criados para desempenhar a função sobrecarregada e alocados a processadores sub-utilizados.
Processos e Threads (cont.)
A criação estática (mais eficiente) é mais aplicável em sistemas embarcados (ex. aviões), onde: A configuração do sistema é fixa; A previsibilidade do desempenho
é mais importante do que flexibilidade;
Sendo a configuração fixa, balanceamento de carga não é importante.
Processos e Threads (cont.)
Ligação dinâmica (dynamic binding) de processosLigação estática, com
endereçamento pré-definido, é inflexível e gera problema se um processo (servidor) migra ou é replicado, por exemplo - requer recompilação.
Concorrência Região Crítica (RC) Exclusão mútua: enquanto um
processo estiver em sua RC, outros não podem estar em suas RCs Problemas:
Interrupção de instruções de máquina
• Ex: A = A + 1 3 instruções
(cont.)
Concorrência (cont.) Problemas de exclusão mútua:
Entradas simultâneas em RCs Alternação Impasse (deadlock)
Concorrência (cont.) Semáforo
Primitivas - instruções não-interrompíveis
P(s) e V(s) / Wait(s) e Signal(s) Primitivas de sincronização
Concorrência (cont.) Monitor
Construção de mais alto nível Baseada em procedimentos -
mais bem estruturado Chamada a procedimento
garante exclusão mútua
Concorrência (cont.) Problemas clássicos:
representam abstrações de problemas Exclusão mútua: sincronização
(wait e signal) Produtor-Consumidor:
comunicação Leitores e Escritores: acesso a
banco de dados
Recommended