Title: Sistemas Distribu
1Sistemas Distribuídos
- Carlos A. G. Ferraz
- DI/UFPE
- Aula 03
2Tópicos
- Características
- Tendências
- Suporte à Programação Distribuída Introdução
- Conceitos
3Caracterização de SD
- Características principais -gt benefícios
- Compartilhamento de recursos
- Flexibilidade
- Concorrência
- (cont.)
4Características (cont.)
- Escalabilidade (operação efetiva e eficiente em
qualquer escala) - Robustez
- Tolerância a falhas
- Disponibilidade
- Transparência
5Tipos 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
6Tipos 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
7Tendê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
8Suporte à Programação Distribuída
- Sistemas Abertos (OSI ODP)
- Sistemas operacionais distribuídos
- Abordagem revolucionária
- Microkernels
Sistemas abertos e Aplicações
Emul. S.O.
Suporte a Ling.
....
....
Microkernel
Hardware
9Suporte à Programação Distribuída (cont.)
- Plataformas ODP
- Abordagem evolucionária
Sistemas abertos e Aplicações
Plataforma ODP
Sistema Operacional
Hardware
10Conceitos - 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
11Processos e Threads
- Em sistemas operacionais tradicionais, cada
processo tem um único espaço de endereço e uma
única linha (thread) de controle
12Processos 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ência é uma abstração importante porque o
comportamento de muitos sistemas reais pode ser
modelado sem detalhes desnecessários
13Processos 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
14Processos 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
15Processos 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
16Processos e Threads (cont.)
- Pacote de threads conjunto de primitivas (ex.
chamadas de bibliotecas) - Criação estática e dinâmica de threads
- simplicidade x flexibilidade
- Compartilhamento de memória/variávies mutex
- Sincronização variável condicional - wait e
wakeup
17Processos 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
18Processos 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.
19Processos 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.
20Processos e Threads (cont.)
- Ligação dinâmica (dynamic binding) de processos
- Ligaçã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.
21Concorrê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.)
22Concorrência (cont.)
- Problemas de exclusão mútua
- Entradas simultâneas em RCs
- Alternação
- Impasse (deadlock)
23Concorrê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
24Concorrência (cont.)
- Monitor
- Construção de mais alto nível
- Baseada em procedimentos - mais bem estruturado
- Chamada a procedimento garante exclusão mútua
25Concorrê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