260 likes | 369 Views
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.).
E N D
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 Sistemas abertos e Aplicações Emul. S.O. Suporte a Ling. .... .... Microkernel Hardware
Suporte à Programação Distribuída (cont.) • Plataformas “ODP” • Abordagem “evolucionária” Sistemas abertos e Aplicações Plataforma“ODP” Sistema Operacional Hardware
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ência é uma abstração importante porque o comportamento de muitos sistemas reais pode ser modelado sem detalhes desnecessá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 threads simplicidade 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 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.
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 (waite signal) • Produtor-Consumidor: comunicação • Leitores e Escritores: acesso a banco de dados